Размеры и позиции элементов на форме при различных разрешени

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
grmv
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 24.05.2005 (Вт) 0:15

Размеры и позиции элементов на форме при различных разрешени

Сообщение grmv » 24.05.2005 (Вт) 0:20

Подскажите, как сделать чтобы пропорции элементов (кнопки, PictureBox и др.) на экране сохранялись. В проге есть PictureBox в который занружается шаблон рисунка для дальнейшего рисования, при прямом указании размеров элементов на различном разрешении, картинка в PictureBox всегда остается неизменного размера.

fort
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 66
Зарегистрирован: 10.05.2005 (Вт) 0:56
Откуда: Владивосток

Сообщение fort » 24.05.2005 (Вт) 0:38

:idea: Есть одна идея, но она несколько мутновата:
расчитать пропорцию твоих элементов(к примеру там 1 к 3) и после загрузки картинки вставить код
Код: Выделить всё
PictureBox.width=Command.width*3

только высоту и ширину наверное придется прописывать отдельно...

:?: кстати, а положение относительно краев формы меняется???
хороший юзер - мертвый юзер!!!

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 24.05.2005 (Вт) 16:33

Тебе авторесайзинг формы нужен? Писал я в свое время таку штуку. Не знаю, или подойдет - писано для себя. Но если интересно, могу выложить...
То, что для одних константа, для других только переменная...

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 24.05.2005 (Вт) 18:20

Кароче делается это очень просто:
Допустим у тебя один пикчербокс на всю форму и 2 кнопки снизу одинакового размера на всю ширину.

Код: Выделить всё
Picture1.left=0 'Это мы картинку сдвигаем влево до упора
Picture1.top=0 'И вверх до упора
Picture1.width=Me.ScaleWidth 'Это мы раздвигаем до картинку на всю ширину
Picture1.height=Me.ScaleHeight - Command1.height 'и на всю высоту до кнопок
Command1.top=Picture1.height 'Ставим обе кнопки
Command2.top=command1.top    'под картинку
Command1.left=0 'Сдвигаем первую кнопку до упора влево
Command2.left=Me.ScaleWidth\2 'Вторую кнопку на середину низа
Command1.width=Me.ScaleWidth\2 'Первую кнопку раздвигаем до середины
Command2.width=Command1.width 'И вторую кнопку до конца формы
Этот код надо вставить в From_Resize, тогда при любом изменении размеров формы картинка и кнопки будут расположены правильно. Так же при загрузке формы будет вызвана эта функция.
Я знаю верный путь

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 24.05.2005 (Вт) 18:51

Q2W не, не рульный метод :lol: А если у тебя 2-3 десятка контролов на форме? Все их руками ресайзить? А если вдруг захочется пометь их местами? Опять переписывать функцию? Хотя для 2-3 контролов вполне згодиться :)
То, что для одних константа, для других только переменная...

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 24.05.2005 (Вт) 19:00

Odrick Не ну если ты хочешь взять все контролы сразу и резайзить их всех типа масштабированием, то скажу тебе, что например однострочные текстбоксы, некоторые (в зав-ти от дизайна) кнопки, тулбары, статусбары и т. д. не должны изменять свою высоту. Поэтому к каждому контролу нужен индивидуальный подход.

Можно в принципе написать функцию, которая резайзит контролы не только масштабированием, но и "прижатием" некоторых контролов к другим или к краям формы. А с каким контролом как поступать будет написано допустим в его tag'е.
Но писать такую функцию реально впадлу :).
Я знаю верный путь

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 24.05.2005 (Вт) 23:45

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

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.05.2005 (Ср) 7:39

Olectra Resizer
Lasciate ogni speranza, voi ch'entrate.

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 25.05.2005 (Ср) 9:23

Видел я эту вещь... Неплохая, факт. Но есть 2 НО: таскать за собой тяжеловесные контролы всего лишь для ресайзинга формы не очень хочеться. И мне он попадался тока платный :(
То, что для одних константа, для других только переменная...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.05.2005 (Ср) 9:33

Он совсем не тяжеловесный. А что касается платности, то вполне логично, что люди хотят получить деньги за свой труд.
Lasciate ogni speranza, voi ch'entrate.

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 25.05.2005 (Ср) 9:34

Вобщев вывод такой:
1. Если лень писать резайз формы, можно воспользоваться этим классом.
2. Если проект достаточно велик, до той степени, что лишний класс погоды не сделает, его так же можно использовать.
3. Если размер конечного дистрибутива критичен - писать резайз каждой формы отдельно руками.

Вобщем тема исчерпана по-моему.
Я знаю верный путь


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 166

    TopList