Динамические формы Масштабирование и т.д.???????????????????

Здесь обсуждаем систему TDM/PDM/Workflow Lotsia PDM PLUS (PartY PLUS).
Ответить
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Динамические формы Масштабирование и т.д.???????????????????

Сообщение Александр »

Никто не заморачивался этим делом под WorkFlow?
ситуация простая - нужна формула масштабирования по вертикали от разрешения экрана
у нас большой разброс по вертикальным разрешениям
733
900
1024
1050
1080
1200
связанный с ноутами, плохим зрением, личными предпочтениями и т.д.
настроил диалог на 1024 - этому ок, этому не лезет, этому еще что-то..
для случая 1024 - габариты формы по вертикали без полосы прокрутки =~3300 (как это связано между собой?)
как получить какой нибудь универсальный коэффициент на который можно завязать координаты всех контролов в форме для их автоматического позиционирования - при условии что:
1. форма раскрыта 'на весь экран'?????
2. панель приложения (меню настройки рабочего места) расположена в один ряд
(т.е. средние условия для клиентской области окна)
В моем случае на форме есть массив высотой которого я готов жертвовать+ правда придется перепозиционировать все контролы лежащие под ним... но это уже мелочи

может есть какие нибудь общие рекомендации?

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Anderyt
Активный участник
Сообщения: 777
Зарегистрирован: 15 июл 2004, 13:15
Используемое ПО: Lotsia PDM PLUS
Откуда: Тюмень
Контактная информация:

Re: Динамические формы Масштабирование и т.д.???????????????

Сообщение Anderyt »

н-да... вопрос жизненный...
нам лень делать формы динамическими, просто мы стараемся делать их компактными, ориентируясь на самое маленькое разрешение..
на лету определить разрешение - не знаю как..
но его можно записать в какую нить инишку (или в реестр) на конкретном компе, а потом вычислять размеры форм, ориентируясь на это значение, полученное с помощью функции ProfileInt или f_RegistryGetString
можно сделать может быть и скрипт, который при включении Лоции будет анализировать текущий размер экрана и запсиывать его в инишку или реестр...
лучше день потерять, потом за пять минут долететь!
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Re: Динамические формы Масштабирование и т.д.???????????????

Сообщение Александр »

в принципе да, в реестре, разрешение лежит тут

Код: Выделить всё

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Control\VIDEO\{B80C96A1-87F8-4BDA-AE87-B8788FC1F562}\0000\DefaultSettings.YResolution
и тут

Код: Выделить всё

HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control\VIDEO\{B80C96A1-87F8-4BDA-AE87-B8788FC1F562}\0000\DefaultSettings.YResolution
это на сервере win2003
и версия винды для того же случая

Код: Выделить всё

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ProductOptions\ProductType
нужен какой-то однозначный скрипт мультисистемный...
типа такого

Код: Выделить всё

Resize всех контролов на форме 	А. Новожилов
 Option Explicit
 Const K = 1.25
 'если 800/600 то получится 1.33333, но лучше 1.25

 'эта функция относится к определению разрешения экрана
 Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
 Private Sub Form_Load()
 'определяем разрешения экрана
 Select Case GetSystemMetrics(0)
  Case 640
    Form1.Width = 9600
    'Command1.Width=1500
  Case 800
    Form1.Width = Form1.Width * K
    'Command1.Width = Command1.Width * K
 End Select

 Form1.Caption = GetSystemMetrics(0) & "x" & GetSystemMetrics(1)
 End Sub
не знаю только vbscript from Lotsia проглотит это (GetSystemMetrics ) или нет
или вот

Код: Выделить всё

Sub test()
On Error Resume Next
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
If Err.Number <> 0 Then
    MsgBox Err.Number & ": " & Err.Description
    Exit Sub
End If
For Each objVideo In objService.ExecQuery("SELECT * FROM Win32_VideoController")
    MsgBox objVideo.CurrentHorizontalResolution & vbCr & objVideo.CurrentVerticalResolution
Next
End Sub

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Ответить