powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Размер формы
13 сообщений из 13, страница 1 из 1
Размер формы
    #32362397
avkv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Есть такая проблема
Есть фома главная в ней подчиненна
хотелось бы чтобы при развертывании на весь экран все элементы пропорционально изменяли размеры
Вопрос как это сделать универсально чтобы код можно было применить к любой форме
и не городить для каждой формы отдельно
...
Рейтинг: 0 / 0
Размер формы
    #32362413
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
купить один раз Гетца и скопировать то, что ты спросил, с компакт диска.
...
Рейтинг: 0 / 0
Размер формы
    #32362420
avkv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну если не сложно мог бы кто нибудь скопировать для меня в форум если не очень сложно
У меня нет Гетца, и никогда небыло
...
Рейтинг: 0 / 0
Размер формы
    #32362428
avkv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лох Позорный - ну скопирую будь человеком
...
Рейтинг: 0 / 0
Размер формы
    #32362431
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
глянь на http://am.rusimport.ru/MsAccess может там кто-нибудь выложил
...
Рейтинг: 0 / 0
Размер формы
    #32362432
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 avkv
А с чего ты взял что он у меня есть а) под рукой б) под ногой в) вообще где-нибудь?
Давным давно почитать отдал первый том.
...
Рейтинг: 0 / 0
Размер формы
    #32362433
avkv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А с чего ты взял что он у меня есть а) под рукой б) под ногой в) вообще где-нибудь?
Думал раз советуешь то у тебя есть
...
Рейтинг: 0 / 0
Размер формы
    #32362447
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Был
...
Рейтинг: 0 / 0
Размер формы
    #32362476
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avkv писал:ну если не сложно мог бы кто нибудь скопировать для меня в форум если не очень сложно

В правилах сказано:Запрещается ... публикация серийных ключей, лицензий, способов взлома ПО и других методов, которые можно квалифицировать как преследуемые по закону;

В начале книги Литвина П., Гетца К., Гунделоя М. написано:Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.

Это так, к слову.
...
Рейтинг: 0 / 0
Размер формы
    #32362480
avkv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
:))
...
Рейтинг: 0 / 0
Размер формы
    #32362498
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шо "гы"? Кажи, поймал чи ни?

На вот:

Код: 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.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
Option Compare Database
Option Explicit

Dim AlreadyWorking As Boolean ' Проверка, выполняется ли уже обработка изменения размера'

'************************************************************************************'
' ГРУППА ФУНКЦИЙ ДЛЯ ОБРАБОТКИ ФОРМ С МАСШТАБИРУЕМЫМИ ЭЛЕМЕНТАМИ'
'************************************************************************************'
Public Function SetMinFormSize()
On Error GoTo HaveError

  Dim rsFormSize As Recordset ' Таблица размеров форм'
  Dim sFormName As String
  Dim ctrl As Control

  On Error Resume Next
  sFormName = Screen.ActiveForm.Name
  If Err.Number <>  0  Or Forms(sFormName).CurrentView <>  1  Then
    On Error GoTo HaveError
    Beep
    MsgBox  "Клавиши Ctrl-M используются для задания минимального размера формы "  _
&  "с масштабируемыми элементами. Активным окном должна быть форма в режиме "  _
&  "простой или ленточной формы!" 
    GoTo EndProc
  End If
  On Error GoTo HaveError

  Set rsFormSize = CurrentDb.OpenRecordset( "сРазмеры" , dbOpenDynaset)
  rsFormSize.FindFirst  "[NameForm]='" & sFormName & "'" 
  If Not rsFormSize.NoMatch Then
    If MsgBox( "По форме '" & sFormName & _
"' уже есть данные о ее минимальных размерах. Заменить их?" , vbYesNo,  "Внимание!" ) = vbNo Then
      GoTo EndProc
    End If
    While Not rsFormSize.NoMatch
      rsFormSize.Delete
      rsFormSize.FindFirst  "[NameForm]='" & sFormName & "'" 
    Wend
  End If

  rsFormSize.AddNew ' Сохраняю данные о самой форме'
  rsFormSize![NameForm] = sFormName
  rsFormSize![MinHeight] = Screen.ActiveForm.InsideHeight
  rsFormSize![MinWidth] = Screen.ActiveForm.InsideWidth
  rsFormSize![MinUpper] = Screen.ActiveForm.Section(acDetail).Height
  rsFormSize.Update

  ' Сохраняю данные об элементах формы'
  For Each ctrl In Screen.ActiveForm
    rsFormSize.AddNew
    rsFormSize![NameForm] = sFormName
    rsFormSize![NameControl] = ctrl.Name
    rsFormSize![MinUpper] = ctrl.Top
    rsFormSize![MinLeft] = ctrl.Left
    rsFormSize![MinHeight] = ctrl.Height
    rsFormSize![MinWidth] = ctrl.Width
    rsFormSize.Update
  Next ctrl
  
  MsgBox  "Новые данные о минимальном размере формы '" & sFormName & _
"' и ее элементов были сохранены." 
  
EndProc:
  Set ctrl = Nothing
  On Error Resume Next
  rsFormSize.Close
  On Error GoTo HaveError
  Set rsFormSize = Nothing
Exit Function
HaveError:
мсКонтрОшибок.CalcErr  "мсМасштФорм" ,  "SetMinFormSize" , Err.Number, Err.Description
End Function

Public Function SetChangeFormSize()
On Error GoTo HaveError

  Dim rsFormSize As Recordset ' Таблица размеров форм'
  Dim sFormName As String
  Dim ctrl As Control
  Dim CngFormHeight, CngFormWidth As Long

  On Error Resume Next
  sFormName = Screen.ActiveForm.Name
  If Err.Number <>  0  Or Forms(sFormName).CurrentView <>  1  Then
    On Error GoTo HaveError
    Beep
    MsgBox  "Клавиши Ctrl-N используются для задания правил изменения размера "  _
&  "формы с масштабируемыми элементами. Активным окном должна быть форма в "  _
&  "режиме простой или ленточной формы!" 
    GoTo EndProc
  End If
  On Error GoTo HaveError

  Set rsFormSize = CurrentDb.OpenRecordset( "сРазмеры" , dbOpenDynaset)
  rsFormSize.FindFirst  "[NameForm]='" & sFormName & "' And ([NameControl]='' Or [NameControl] Is Null)" 
  If rsFormSize.NoMatch Then
    Beep
    MsgBox  "Сначала выполните обработку минимальных размеров формы."  & Chr( 10 ) & _
            "Обработка остановлена." , vbCritical
    GoTo EndProc
  End If
  CngFormHeight = Screen.ActiveForm.InsideHeight - rsFormSize![MinHeight]
  CngFormWidth = Screen.ActiveForm.InsideWidth - rsFormSize![MinWidth]
  If CngFormHeight <=  0  Or CngFormWidth <=  0  Then
    Beep
    MsgBox  "Перед сохранением изменения размеров вы должны изменить их!"  & Chr( 10 ) & _
            "Обработка остановлена." , vbCritical
    GoTo EndProc
  End If

  ' Сохраняю данные об изменении размера области данных формы'
  rsFormSize.Edit
  rsFormSize![ChangeUpper] = (Screen.ActiveForm.Section(acDetail).Height - rsFormSize![MinUpper]) / CngFormHeight
  rsFormSize.Update

  ' Сохраняю данные об элементах формы'
  For Each ctrl In Screen.ActiveForm
    rsFormSize.FindFirst  "[NameForm]='" & sFormName & "' And [NameControl]='" & ctrl.Name & "'" 
    If rsFormSize.NoMatch Then
      Beep
      MsgBox  "Найдены элементы, отсутствующие в описании минимальных размеров."  & Chr( 10 ) & _
              "Выполните обработку минимальных размеров формы повторно "  _
&  "или добавьте недостающие записи в описание вручную."  & Chr( 10 ) & _
              "Обработка остановлена." , vbCritical
      GoTo EndProc
    End If
    rsFormSize.Edit
    rsFormSize![ChangeUpper] = (ctrl.Top - rsFormSize![MinUpper]) / CngFormHeight
    rsFormSize![ChangeLeft] = (ctrl.Left - rsFormSize![MinLeft]) / CngFormWidth
    rsFormSize![ChangeHeight] = (ctrl.Height - rsFormSize![MinHeight]) / CngFormHeight
    rsFormSize![ChangeWidth] = (ctrl.Width - rsFormSize![MinWidth]) / CngFormWidth
    rsFormSize.Update
  Next ctrl

  MsgBox  "Правила изменения размера формы '" & sFormName & "' и ее элементов были сохранены." 
  
EndProc:
  Set ctrl = Nothing
  On Error Resume Next
  rsFormSize.Close
  On Error GoTo HaveError
  Set rsFormSize = Nothing
Exit Function
HaveError:
мсКонтрОшибок.CalcErr  "мсМасштФорм" ,  "SetChangeFormSize" , Err.Number, Err.Description
End Function

Public Function ChangeFormSize(ByVal fForm As Access.Form)
On Error GoTo HaveError

  Dim rsFormSize As Recordset ' Таблица размеров форм'
  Dim ctrl As Control
  Dim CngFormHeight, CngFormWidth As Long
 
  If AlreadyWorking Then GoTo EndProc
  AlreadyWorking = True
 
  If fForm.CurrentView =  1  Then
    Set rsFormSize = CurrentDb.OpenRecordset( "сРазмеры" , dbOpenDynaset)
    rsFormSize.FindFirst  "[NameForm]='" & fForm.Name & "' And ([NameControl]='' Or [NameControl] Is Null)" 
    If rsFormSize.NoMatch Then
      GoTo EndProc
    End If
 
    CngFormHeight = fForm.InsideHeight - rsFormSize![MinHeight]
    CngFormWidth = fForm.InsideWidth - rsFormSize![MinWidth]
    If CngFormHeight <=  0  Or CngFormWidth <=  0  Then
      fForm.InsideHeight = rsFormSize![MinHeight]
      fForm.InsideWidth = rsFormSize![MinWidth]
      CngFormHeight =  0 
      CngFormWidth =  0 
    End If
    fForm.Section(acDetail).Height = rsFormSize![ChangeUpper] * CngFormHeight + rsFormSize![MinUpper]
    fForm.Width = rsFormSize![MinWidth] + CngFormWidth
 
    For Each ctrl In fForm
      rsFormSize.FindFirst  "[NameForm]='" & fForm.Name & "' And [NameControl]='" & ctrl.Name & "'" 
      If Not rsFormSize.NoMatch Then
        ctrl.Height = rsFormSize![ChangeHeight] * CngFormHeight + rsFormSize![MinHeight]
        ctrl.Width = rsFormSize![ChangeWidth] * CngFormWidth + rsFormSize![MinWidth]

On Error Resume Next
        ctrl.Top = rsFormSize![ChangeUpper] * CngFormHeight + rsFormSize![MinUpper]
        ctrl.Left = rsFormSize![ChangeLeft] * CngFormWidth + rsFormSize![MinLeft]
On Error GoTo HaveError
      End If
    Next ctrl
  End If

  AlreadyWorking = False
  
EndProc:
  Set ctrl = Nothing
  On Error Resume Next
  rsFormSize.Close
  On Error GoTo HaveError
  Set rsFormSize = Nothing
  Set fForm = Nothing
Exit Function
HaveError:
мсКонтрОшибок.CalcErr  "мсМасштФорм" ,  "ChangeFormSize" , Err.Number, Err.Description
End Function


К этой штуке нужна табличка "сРазмеры"
NameForm/String/Имя формы
NameControl/String/Имя элемента, если пусто - данные о форме
MinUpper/Long/Минимальная верхняя координата, твип (только для элемента)
MinLeft/Long/Минимальная левая координата, твип (только для элемента)
MinHeight/Long/Минимальная высота
MinWidth/Long/Минимальная ширина
ChangeUpper/Double/Коэффициент изменения верхней координаты по отношению к изменению разницы текущей и минимальной высоты формы
ChangeLeft/Double/Коэффициент изменения левой координаты по отношению к изменению разницы текущей и минимальной ширины формы
ChangeHeight/Double/Коэффициент изменения высоты элемента по отношению к изменению разницы текущей и минимальной высоты формы
ChangeWidth/Double/Коэффициент изменения ширины элемента по отношению к изменению разницы текущей и минимальной высоты формы

SetMinFormSize и SetChangeFormSize д.б. повешены в autokeys или как бишь его и задают минимальный возможный размер и изменение размера соответственно. В них же надо поставить проверку, кому можно, а кому нельзя их запускать. И обработки ошибок надо повыкидывать или поставить свои.

Любая часть данного текста может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав, желательно после телеграфирования пива.
...
Рейтинг: 0 / 0
Размер формы
    #32362510
avkv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Впоймал
Да тут между делом поискал в глубинах инета еще чего нибудь
Спасибо попробую
...
Рейтинг: 0 / 0
Размер формы
    #32398609
Ю.Ш.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Автоматическое изменение размеров форм
http://hiprog.com/access/article.asp?id=442
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Размер формы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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