Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / разное разрешение у экрана / 25 сообщений из 30, страница 1 из 2
08.06.2004, 07:44
    #32551641
башмак
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
Приветствую, коллеги!
Кто как борется с различным разррешением экрана у пользователей? Упираешься, обдумываешь размер каждой кнопки на форме - а у пользователя экран вдвое меньше (или больше - тоже не очень хорошо). Знаю, Гетц об этом писал, но если экраны здорово разнятся, то, наверное, формы должны быть разными для них? Или нужно сразу разрабатывать формы для худшего из экранов,которые могут быть у ваших пользователей?
...
Рейтинг: 0 / 0
08.06.2004, 09:18
    #32551727
kedzo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
Я в свое время писал под самое меньшее разрешение экрана. Благо их было только 2 - 800 и 1024.
Интересно как другие решают подобную проблему, хотя... 640 и 1200 в одном офисе мне видеть не приходилось :)
...
Рейтинг: 0 / 0
08.06.2004, 09:23
    #32551741
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
я выбрал 1024 и делаю всем под это разрешение.
принудительно ставлю всем юзерам. сначала недовольны потом привыкают.
...
Рейтинг: 0 / 0
08.06.2004, 09:31
    #32551759
Sfagnum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
а я всем делаю под 800Х600 так млять всё ровно умудряются то dpi поменять то шрифт крупнее сделать, вообщем забил я на них... говорю не х.. выделываться у меня сделано по стандарту, а под ваши извращения подделываться, идите лесом...

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
08.06.2004, 09:40
    #32551775
Allll
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
Хорошо работает программа масштабирования формы под разные разрешения экрана, сделанная Сергеем Новиковым: http://hiprog.com/access/article.asp?id=319

Есть незначительные недостатки:
1. обратите внимание на строчку ctr.FontName = "SmallFonts". Если используется шрифт со специальными символами, например Monotype Sorts (использую стрелочки вверх/вниз для отображения порядка сортировки), то эти специфические символы будут показаны как буквы.
Просто закомментировал эту строчку - стандартный MS Sans Serif при маленьком разрешении экрана смотрится не хуже, чем SmallFonts.
2. при нестандартном размере шрифта текст может не поместиться на надписи или на кнопке. Речь идёт про размер шрифта, который настраивается в свойствах экрана. "Мелкий шрифт", "Крупный шрифт" - всё нормально, а если задать "Другой...", то может смаштабировать неправильно.
Пытался найти API-функцию, по которому можно было бы узнать выбранный масштаб шрифта и учитывать его при масштабировании - не нашёл. Может это кто-нибудь исправил?
...
Рейтинг: 0 / 0
08.06.2004, 11:36
    #32552033
Talk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
ИМХО, Формы надо делать под минимальное разрешение в офисе, но масштабируемое (если возможно) через событие resize (использовать insideheight и insidewidth).
...
Рейтинг: 0 / 0
08.06.2004, 11:49
    #32552070
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
Во во, я тоже так пишу, да ещё и практически под каждую форму.
Это у вас user-ы лохи, а у меня начальник программер, так что приходится.
...
Рейтинг: 0 / 0
08.06.2004, 12:11
    #32552137
башмак
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
2 АлексейК
Что значит: ставлю всем? при загрузке базы меняем разрешение экрана какой-нибудь апишкой? Или просто поставляете базу с рекомендацией исп-ть разрешение 1024? или вручную установил базу и поменял свойства экрана?
...
Рейтинг: 0 / 0
08.06.2004, 13:52
    #32552444
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
авторЧто значит: ставлю всем?

у меня не много юзеров. я им ставлю все сам и винду и офис и драйвера и програмку с ярлыками.

с винапи не стоит заморачиваться - это нужно будет отслеживать какое окно активно - аксесс или нет и все время переключаться между старым разрешением и текущим... а если у юзера монитор вдруг не поддерживает 1024?
...
Рейтинг: 0 / 0
08.06.2004, 14:18
    #32552480
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
У пользователей еще может быть LCD - если в ней настроить "свое любимое" разрешение, то пользователь зрения может лишиться, эдак месеца через 3.

Так, что пишем под минимальное в офисе, а для не любитлей мелких окон (есть и любители - им пофиг, что форма всего на пол экрана - они даже пруться от мелких буковок) ресайзим в размер экрана (форму, конторолы и шрифты - шрифты по возможности, конечно :) )
...
Рейтинг: 0 / 0
08.06.2004, 14:39
    #32552537
Sfagnum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
ну вообщем то разница в разрешении - это так баловство всё таки больширство сидит под разрешением 800X600 либо 1024Х768 - в них разница не болезненная, а вот любители менять dpi - это действительно гемор на голову прграмеру.
Тут вот написано, как с этим бороться правда для дельфей...

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
09.06.2004, 13:40
    #32554143
Serg413
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
Ну а я вот как эту проблему решил:
При запуске формы программно определяю разрешение экрана, а затем в зависимости от результатов корректирую размеры формы, а также размеры и расположение остальных элементов. Хлопотно, конечно, зато глюков нету.
В офисе у нас люди работают на двух разрешениях - 800Х600 и 1024Х768.
...
Рейтинг: 0 / 0
09.06.2004, 16:42
    #32554793
маяк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
В базе, которая мне досталась под доработку, уже была довольно мощная процедура для ресайзинга. Работает всегда и безглючно (иногда пишет ошибки в error log, но без последствий). Надо - могу запостить.
...
Рейтинг: 0 / 0
09.06.2004, 16:48
    #32554815
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
2 Маяк:
НАДО!!!
...
Рейтинг: 0 / 0
09.06.2004, 16:49
    #32554818
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
У мя еще лучше. Разработка на ноуте с разрешением 1400x1050 (Fujitsu-Siemens, мать их), а пользователи на 800x600.
А сколько смеха сквозь слезы было, когда на презентации выяснилось, что проектор не держит выше 1024x768...
...
Рейтинг: 0 / 0
09.06.2004, 18:26
    #32555073
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
У меня есть такой модулек (работает чисто под 2 разрешения, то можно поправить :) )
Писалось это под Акс97
не идеал конечно, но нас пока устраивает :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
Option Compare Database
Option Explicit

Global g_KoefScreenResol As Single

Public Type Rect
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Type T_OP
    Name As String
    Left As Integer
    Top As Integer
    Width As Integer
    Height As Integer
    FontSize As Integer
End Type

Public Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As Rect) As Long

Public Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Public Declare Function GetDesktopWindow Lib "user32" () As Long
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
 'Public Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, ByVal hdc As Long) As Long
 
Public Const HORZRES =  8 
Public Const VERTRES =  10 

 ' Пример вызова:
 
 'Private Sub test()
 
 '     If ScreenResol(1024, 768) Then
 
 '       MsgBox "Разрешение экрана больше или равно, чем 1024 x 768"
 
 '     Else
 
 '       MsgBox "Разрешение экрана менее, чем 1024 x 768"
 
 '     End If
 
 'End Sub
 

Public Sub GetKoefSR_1024()
    If ScreenResol( 1024 ,  768 ) Then
        g_KoefScreenResol =  1 . 28 
    Else
        g_KoefScreenResol =  1 
    End If
End Sub

Public Sub GetKoefSR_Person()
    If Get_Koef_Resize =  0  Then
        Call GetKoefSR_1024
    Else
        g_KoefScreenResol = Get_Koef_Resize
    End If
End Sub



Public Function ScreenResol(ByVal x As Long, ByVal y As Long) As Boolean
 ' Проверка разрешения экрана
 
    Dim hdc As Long
    Dim xRes As Long
    Dim yRes As Long
    
    hdc = GetDC(GetDesktopWindow())

    xRes = GetDeviceCaps(hdc, HORZRES)
    yRes = GetDeviceCaps(hdc, VERTRES)
    
     ' Проверка делается на >=
 
    ScreenResol = (xRes >= x) And (yRes >= y)
        
     'If xRes < 1024 Then DoCmd.OpenForm "ChangeResolution", acNormal, , , , acDialog    'Вызов настройки экрана
 
     'ReleaseDC GetDesktopWindow(), hdc
 
End Function

Public Sub FormReSize4Resol(frm As Form)
On Error Resume Next
Dim obj As Object
Dim i As Integer
Dim AccRect As Rect
Dim OP() As T_OP
Dim C_OP As Integer
Dim tmp As Integer

    If g_KoefScreenResol =  0  Then Call GetKoefSR_Person  'GetKoefSR_1024
 
    If Abs(g_KoefScreenResol -  1 ) <  0 . 001  Then Exit Sub

     'MsgBox "FRM: " & frm.Name
 

    frm.InsideHeight = frm.InsideHeight * g_KoefScreenResol
    frm.InsideWidth = frm.InsideWidth * g_KoefScreenResol
    
    frm.Width = frm.Width * g_KoefScreenResol
    
    For i =  0  To  1000 
        Set obj = frm.Section(i)
        If err.number <>  0  Then
            err.number =  0 
            Exit For
        End If
         'MsgBox "SEC: " & obj.Name
 
        obj.Height = obj.Height * g_KoefScreenResol
    Next
    
    C_OP =  0 
    For Each obj In frm.Controls
         'MsgBox "OBJ: " & obj.Name & " - " & TypeName(obj)
 
        If TypeName(obj) = "OptionGroup" Then  ' Проводим сдвижку после сдвижки внутренних объектов
 
            C_OP = C_OP +  1 
            ReDim Preserve OP( 1  To C_OP)
            OP(C_OP).Name = obj.Name
            OP(C_OP).Top = obj.Top * g_KoefScreenResol
            OP(C_OP).Left = obj.Left * g_KoefScreenResol
            OP(C_OP).Width = obj.Width * g_KoefScreenResol
            OP(C_OP).Height = obj.Height * g_KoefScreenResol
            OP(C_OP).FontSize = obj.FontSize * g_KoefScreenResol
        Else
            obj.Top = obj.Top * g_KoefScreenResol
            obj.Left = obj.Left * g_KoefScreenResol
            obj.Width = obj.Width * g_KoefScreenResol
            obj.Height = obj.Height * g_KoefScreenResol
            obj.FontSize = obj.FontSize * g_KoefScreenResol
            err.number =  0 
        End If
    Next
    
     ' Сдвижка элементов OptionGroup
 
    For i =  1  To C_OP
        tmp = frm(OP(i).Name).Height
        frm.Section(frm(OP(i).Name).Section).Height = frm.Section(frm(OP(i).Name).Section).Height + tmp
        frm(OP(i).Name).Top = OP(C_OP).Top
        frm(OP(i).Name).Height = OP(C_OP).Height
        frm.Section(frm(OP(i).Name).Section).Height = frm.Section(frm(OP(i).Name).Section).Height - tmp
        
        tmp = frm(OP(i).Name).Width
        frm.Width = frm.Width + tmp
        frm(OP(i).Name).Left = OP(C_OP).Left
        frm(OP(i).Name).Width = OP(C_OP).Width
        frm.Width = frm.Width - tmp
        
        frm(OP(i).Name).FontSize = OP(C_OP).FontSize
    Next
    
     ' Центрирование форм (если надо)
 
    If frm.AutoCenter Then
        Call GetClientRect(Application.hWndAccessApp, AccRect)
        AccRect.Left = ((AccRect.Right - AccRect.Left) *  15  - frm.WindowWidth) /  2 
        AccRect.Top = ((AccRect.Bottom - AccRect.Top) *  15  - frm.WindowHeight) /  2  -  660 
        If AccRect.Left <  0  Then AccRect.Left =  0 
        If AccRect.Top <  0  Then AccRect.Top =  0 
        DoCmd.MoveSize AccRect.Left, AccRect.Top
    End If
    
End Sub

вызывается из формы по событию открытия
Call FormReSize4Resol(me)

PS: можно критиковать и подправлять - буду только рад :)
...
Рейтинг: 0 / 0
09.06.2004, 18:29
    #32555076
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
На досуге помучаю :)
...
Рейтинг: 0 / 0
09.06.2004, 18:33
    #32555086
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
ТемныйНа досуге помучаю :)

Вперед :)

Да и еще:
1. эта функция не тестировалась с TabControl (ввиду их отсутсвия у нас - без надобности, так сказать)
2. в подформы сама не залезает, по этой причине в событиях подформ, тоже делаем вызов
3. могут быть небольшие накладки, т.к., например, ширина скроллбаров не изменяется
4. если стоит шрифт (например system, например на кнопках) то ему до фени попытки изменить его размер :)
...
Рейтинг: 0 / 0
09.06.2004, 18:36
    #32555087
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
ОК! У мя system'a нету, подформ тоже :)
...
Рейтинг: 0 / 0
10.06.2004, 00:05
    #32555310
маяк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
ТемныйНАДО!!!1. Каждая форма OnLoad запускает кроме всего прочего следующий код:
(там очень много, всё в приложенном файле)
...
Рейтинг: 0 / 0
10.06.2004, 02:13
    #32555339
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
Блрю, тож буду мучать :)
...
Рейтинг: 0 / 0
10.06.2004, 05:27
    #32555368
башмак
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
А что кто может сказать о классах Гетца? Чем они не устраивают? Или просто свое стали делать до того, как прочитали мэтра? Я вчера внедрил его класс в свою базу, первое и второе впечатления приятные.
...
Рейтинг: 0 / 0
10.06.2004, 05:28
    #32555369
башмак
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
А что кто может сказать о классах Гетца? Чем они не устраивают? Или просто свое стали делать до того, как прочитали мэтра? Я вчера внедрил его класс в свою базу, первое и второе впечатления приятные.
...
Рейтинг: 0 / 0
10.06.2004, 08:45
    #32555439
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
башмакА что кто может сказать о классах Гетца? Чем они не устраивают? Или просто свое стали делать до того, как прочитали мэтра? Я вчера внедрил его класс в свою базу, первое и второе впечатления приятные.

К сожалению не у всех есть книги метра :(
А когда надо срочно, то проще самому, что-то наваять (тем более, что задача достаточно локализована), чем в судорогах пытаьься найти исходники от "мэтра".

Кстати, только сейчас заметил

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
frm.Width = frm.Width * g_KoefScreenResol
    
    For i =  0  To  1000 
        Set obj = frm.Section(i)
        If err.number <>  0  Then
            err.number =  0 
            Exit For
        End If
         'MsgBox "SEC: " & obj.Name
 
        obj.Height = obj.Height * g_KoefScreenResol
    Next

Если g_KoefScreenResol < 1, то указанный блок надо выполнять после ресайза контролов, а не до :)
...
Рейтинг: 0 / 0
10.06.2004, 10:20
    #32555623
read
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разное разрешение у экрана
2 МАЯК

rctR As glrTypeRect

Если не сложно запости еще этот тип..
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / разное разрешение у экрана / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]