Никто не заморачивался этим делом под WorkFlow?
ситуация простая - нужна формула масштабирования по вертикали от разрешения экрана
у нас большой разброс по вертикальным разрешениям
733
900
1024
1050
1080
1200
связанный с ноутами, плохим зрением, личными предпочтениями и т.д.
настроил диалог на 1024 - этому ок, этому не лезет, этому еще что-то..
для случая 1024 - габариты формы по вертикали без полосы прокрутки =~3300 (как это связано между собой?)
как получить какой нибудь универсальный коэффициент на который можно завязать координаты всех контролов в форме для их автоматического позиционирования - при условии что:
1. форма раскрыта 'на весь экран'?????
2. панель приложения (меню настройки рабочего места) расположена в один ряд
(т.е. средние условия для клиентской области окна)
В моем случае на форме есть массив высотой которого я готов жертвовать+ правда придется перепозиционировать все контролы лежащие под ним... но это уже мелочи
может есть какие нибудь общие рекомендации?
Динамические формы Масштабирование и т.д.???????????????????
- Александр
- Активный участник
- Сообщения: 1658
- Зарегистрирован: 24 авг 2006, 08:06
- Используемое ПО: Lotsia PDM PLUS
- Откуда: 55.745578,37.665825
Динамические формы Масштабирование и т.д.???????????????????
Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный
- Anderyt
- Активный участник
- Сообщения: 777
- Зарегистрирован: 15 июл 2004, 13:15
- Используемое ПО: Lotsia PDM PLUS
- Откуда: Тюмень
- Контактная информация:
Re: Динамические формы Масштабирование и т.д.???????????????
н-да... вопрос жизненный...
нам лень делать формы динамическими, просто мы стараемся делать их компактными, ориентируясь на самое маленькое разрешение..
на лету определить разрешение - не знаю как..
но его можно записать в какую нить инишку (или в реестр) на конкретном компе, а потом вычислять размеры форм, ориентируясь на это значение, полученное с помощью функции ProfileInt или f_RegistryGetString
можно сделать может быть и скрипт, который при включении Лоции будет анализировать текущий размер экрана и запсиывать его в инишку или реестр...
нам лень делать формы динамическими, просто мы стараемся делать их компактными, ориентируясь на самое маленькое разрешение..
на лету определить разрешение - не знаю как..
но его можно записать в какую нить инишку (или в реестр) на конкретном компе, а потом вычислять размеры форм, ориентируясь на это значение, полученное с помощью функции ProfileInt или f_RegistryGetString
можно сделать может быть и скрипт, который при включении Лоции будет анализировать текущий размер экрана и запсиывать его в инишку или реестр...
лучше день потерять, потом за пять минут долететь!
- Александр
- Активный участник
- Сообщения: 1658
- Зарегистрирован: 24 авг 2006, 08:06
- Используемое ПО: Lotsia PDM PLUS
- Откуда: 55.745578,37.665825
Re: Динамические формы Масштабирование и т.д.???????????????
в принципе да, в реестре, разрешение лежит тут
и тут
это на сервере win2003
и версия винды для того же случая
нужен какой-то однозначный скрипт мультисистемный...
типа такого не знаю только vbscript from Lotsia проглотит это (GetSystemMetrics ) или нет
или вот
Код: Выделить всё
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
и версия винды для того же случая
Код: Выделить всё
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
или вот
Код: Выделить всё
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)
Уровень администрирования - Альтернативный