Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Как массово перемещать поля в форме/изменить высоту формы  [new]
quickstar
Member

Откуда:
Сообщений: 182
Добрый день!

Одно из полей формы доступно определенному типу учетной записи.
Для остальных - оно скрыто.

ВОПРОС: когда поле скрыто, как все остальные поля подвигать выше (чтобы не было пустоты) и делать высоту формы меньше на размер скрытого поля?

соответственно, если поле отображается, то все поля нужно сдвинуть вниз на высоту поля и на это же значение увеличить высоту самой формы.
10 июн 19, 18:02    [21906114]     Ответить | Цитировать Сообщить модератору
 Re: Как массово перемещать поля в форме/изменить высоту формы  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4253
quickstar, для начала нужно сказать что всё таки форма одиночная.
У контролов есть свойства характеризующие положение на форме - Left, Top, Width, Height. Оперируя ими перемещай контролы по форме.
10 июн 19, 18:52    [21906148]     Ответить | Цитировать Сообщить модератору
 Re: Как массово перемещать поля в форме/изменить высоту формы  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5883
quickstar,
если форма создана мастером:выделить все поля, щелчок правой кнопкой мыша на выделении-в контекстном меню макет>удалить-теперь все поля независимы.Переместите, изменив размер(если хотите),скрытое поле куда хотите(чтоб не мешало). Остальные выделите с shift,перемещение любого выделенного поля будет двигать всю группу
(это написано в любом справочном материале по ACCESS)
10 июн 19, 19:39    [21906174]     Ответить | Цитировать Сообщить модератору
 Re: Как массово перемещать поля в форме/изменить высоту формы  [new]
quickstar
Member

Откуда:
Сообщений: 182
sdku, я, видимо, некорректно задачу сформулировал. Речь про то, чтобы средствами VBA (не руками) двигать все поля. И все же, благодарю Вас за подробный ответ.

Панург, т.е. для каждого поля нужно прописать "новые координаты", услышал. Спасибо.
А как размер формы по высоте уменьшить? Тоже через Left, Top, Width, Height?
11 июн 19, 03:15    [21906292]     Ответить | Цитировать Сообщить модератору
 Re: Как массово перемещать поля в форме/изменить высоту формы  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4253
quickstar, если формы в виде вкладок, то никак. В противном случае есть InsideHeight, InsideWidth (можно попробовать WindowHeight, WindowWidth), но если хочется красиво (чтобы визуально со всех сторон изменения шли), можно задействовать и WindowLeft, WindowTop. Кто же мешает? Не забываем про секции формы, возможно их тоже нужно будет изменять (Detail - область данных)
11 июн 19, 04:08    [21906298]     Ответить | Цитировать Сообщить модератору
 Re: Как массово перемещать поля в форме/изменить высоту формы  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5883
quickstar,
группу можно перебрать так:
(учтите что элементы,в зависимости от Type имеют\не имеют определенные свойства-если элемент не имеет свойства-ошибка)
For Each ctl In frm.Controls
		If ctl.ControlType = acTextBox and ctl.name<>"имя" Then
			'задать свойства
			With ctl
				.Enabled = True
				.left=100
                                .top=200
				.Height = 400
				.SpecialEffect = 0
			End With
		End If
Next ctl
11 июн 19, 11:17    [21906454]     Ответить | Цитировать Сообщить модератору
 Re: Как массово перемещать поля в форме/изменить высоту формы  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 260
quickstar, а зачем эти танцы с бубном? Может проще вместо видимости менять доступность поля? Тогда оно (и связанная надпись) будет сереньким.
11 июн 19, 11:38    [21906486]     Ответить | Цитировать Сообщить модератору
 Re: Как массово перемещать поля в форме/изменить высоту формы  [new]
Лапух
Member

Откуда: Стойбище № 7
Сообщений: 835
sdku,

а - SpecialEffect это что7
что то ни как не догадаюсь.
11 июн 19, 12:34    [21906572]     Ответить | Цитировать Сообщить модератору
 Re: Как массово перемещать поля в форме/изменить высоту формы  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5883
F1-"Свойство Оформление (SpecialEffect) позволяет указать способ объемного представления раздела или элемента управления."
myTop=100
myLeft=200
For Each ctl In frm.Controls
		.....
                    .top=myTop
                    .left=myLeft
                .....
              myTop=myTop+100
              myLeft=myLeft+200
Next ctl
11 июн 19, 12:47    [21906595]     Ответить | Цитировать Сообщить модератору
 Re: Как массово перемещать поля в форме/изменить высоту формы  [new]
Лапух
Member

Откуда: Стойбище № 7
Сообщений: 835
А́аааааа, понял чё это.
Спасибо.
11 июн 19, 13:57    [21906710]     Ответить | Цитировать Сообщить модератору
 Re: Как массово перемещать поля в форме/изменить высоту формы  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 497
quickstar,
если поле одно и перемещать надо только в одном направлении (например только по высоте), то сделайте переменную, скажем offset
(поскольку изменения не динамические, то можно в событии Load формы сделать)
+
' когда поле0 невидимо
dim ctrl as control
if not Me.Поле0.visible then
offset=Me.Поле1.top-Me.Поле0.top
else 
' когда поле0 видимо, сделайте 
offset=0
end if
' соответственно все поля имеют (если в области данных)
for each ctrl in me.section(acdetail).controls
with ctrl
if .name<>"Поле0" then.top=.top-offset
end with
next
' высота секции
Me.section(acdetail).height=Me.section(acdetail).height-offset

при этом поля должны находится в форме в положении когда Поле0 - открыто
по этому поводу я даже статью писал (там другое решение - у контролов значения расположения не высчитываются, а являются постоянными, но меняются состояния формы и в этих состояниях у контролов значения расположения разные) на сайт Митина Андрея,но он пока недоступен, да и из-за одного поля париться вряд ли стоит, хотя аппетит приходит во время еды.
11 июн 19, 14:36    [21906763]     Ответить | Цитировать Сообщить модератору
 Re: Как массово перемещать поля в форме/изменить высоту формы  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5883
alecko,
А у поля есть offset-разве это не свойство Range?
11 июн 19, 15:43    [21906816]     Ответить | Цитировать Сообщить модератору
 Re: Как массово перемещать поля в форме/изменить высоту формы  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5883
прошу прощения-глянул мельком и не понял что это просто переменная
11 июн 19, 15:52    [21906828]     Ответить | Цитировать Сообщить модератору
 Re: Как массово перемещать поля в форме/изменить высоту формы  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 497
sdku, оно мне и самому не нравится - похоже на зарезервированное, но... пока не пришло ничего на ум.
11 июн 19, 21:26    [21907060]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить