Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Вниз

Изменение размера формы при выполнении программы   Найти похожие ветки 

 
АМБ   (2005-08-02 10:26) [0]

Программа имеет на форме компоненты: DBGrid, Memo, Edit и кнопочки. Сделал так, что при выполнении программы, если изменить размер формы, то меняются соответственно и размеры компонент и координаты кнопок. Отрабатывается событие: FormCanResize, где написано

...
 edtFilter.Width := frmMain.Width - 71;
 edtFilter.Top := frmMain.Height - 68;

 btnOnFilter.Left := frmMain.Width - 65;
 btnOnFilter.Top := frmMain.Height - 68;
...

И все работает как надо, но... только на моем рабочем компьютере (Win 2000), на котором подбирались вычитаемые величины. При запуске экзешника на домашнем(Win NT4), настройки сбиваются и появляются скроллинги основной формы. Изменение разрешения на рабочем компьтере не приводит к "искажению" (т.е. к скроллингу).

Как надо делать такие эффекты (изменение формы программы с пропорциональным изменением координат и размера компонент) ПРАВИЛЬНО, чтобы при переносе на различные компьютеры, с различными ОС, различными мониторами и т.д. не возникали искажение насроек, и, как следствие, не возинкали скроллингиа???


 
sniknik ©   (2005-08-02 10:30) [1]

Как надо ... ПРАВИЛЬНО
Anchors


 
msguns ©   (2005-08-02 10:33) [2]

Использовать св-ва Align, Alignment, Anchors, а также сплиттеры
Строить интерфейс на базе панелей, которые автовыравниваются, а на них класть визуальные контролы со свойсвом Align := alClient


 
tesseract ©   (2005-08-02 11:23) [3]

Примерно так
внизу ставим панель Align=alBootom;
на неё ставми панель поменьше Align=alRight; на неё кладутся кнопки которые долджны быть справа.
Вверху две панели (Допустим у тебя Memo под grid)
Верхней панели AlTop нижней AlClient.
Можешь задать в Constraits максимальные/минимальный размеры панелей чтобы при свяртывании ничего не наезжало.


 
ЮЮ ©   (2005-08-02 11:29) [4]

заменить константы габаритами компонент:

edtFilter.Width := frmMain.ClientWidth - edtFilter.Left;
edtFilter.Top := frmMain.ClientHeight - edtFilter.Height;


 
АМБ   (2005-08-04 12:04) [5]

Извинте, за долгое молчание. Текучка...:о(
Попробовал варианты с Align, Alignment, Anchors. Как-то до конца еще "не проник". По - новому надо весь интерфейс строить. Но буду проповать и дальше. Так-что, спасибо за информацию.
А вот идея ЮЮ понравилась сразу. Почти сразу реализовал. Только дома проверял долго. Со временем трудно. Но все-таки проверил, все пока работает как надо. Работает даже с константами, т.е.

...
edtFilter.Width := frmMain.ClientWidth - 71;
...

Главное оказывается это ClientWidth.
Так что ЮЮ - БОЛЬШОЕ СПАСИБО...


 
АМБ   (2005-08-04 12:04) [6]

Извинте, за долгое молчание. Текучка...:о(
Попробовал варианты с Align, Alignment, Anchors. Как-то до конца еще "не проник". По - новому надо весь интерфейс строить. Но буду проповать и дальше. Так-что, спасибо за информацию.
А вот идея ЮЮ понравилась сразу. Почти сразу реализовал. Только дома проверял долго. Со временем трудно. Но все-таки проверил, все пока работает как надо. Работает даже с константами, т.е.

...
edtFilter.Width := frmMain.ClientWidth - 71;
...

Главное оказывается это ClientWidth.
Так что ЮЮ - БОЛЬШОЕ СПАСИБО...


 
ЮЮ ©   (2005-08-04 12:17) [7]

>Работает даже с константами

Ширина-то и в Африке останется такой же (если это не TLabel с AutoSize), а вот при использовании "крупного шрифта", высота TEdit-а изменится и будет не равна той константе, что прописана в коде.


 
АМБ   (2005-08-04 13:39) [8]


> ЮЮ
Да. Согласен. Я и сам не люблю использовать в коде константы. Поэтому, перед этим пробовал такой вариант:


dbgDBF.Height := frmMain.ClientHeight - round(dbgDBF.Left*4.5);


Тоже работает. Но, мне показалось, код тяжеловат. Хотя может и более "правильный" (не могу подобрать слово вместо "правильный")
А без коэффициента трудно подогнать "под размер".
Возможно этого можно будет избежать если с самого начало интерфейс разрабатывать с тем, чтобы не использовать коэффициенты.
Но, это в будущем. Хотя, надеюсь, не далеком.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.042 c
14-1122888356
ocean
2005-08-01 13:25
2005.08.21
Старый шрифт


4-1119448969
Алена
2005-06-22 18:02
2005.08.21
Отловить завершение процесса


3-1120743973
Mefodiy
2005-07-07 17:46
2005.08.21
Помогите новичку с SQL запросом в Oracle


14-1122469608
oldman
2005-07-27 17:06
2005.08.21
Вот и к нам пришла жара...


4-1119913987
Дмитрий Д.
2005-06-28 03:13
2005.08.21
Управление иконками Рабочего стола





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский