powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Динамическое изменение размера формы в зависимости от разрешения экрана
10 сообщений из 10, страница 1 из 1
Динамическое изменение размера формы в зависимости от разрешения экрана
    #32057314
Фотография manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!
Господа, подскажите какой-нить способ сделать следующую весчь: надо так спроектировать форму(ы), чтобы в зависимости от разрешения экрана пользователя она (форма) и все расположенные на ней элементы изменяли свой размер. Знаю про FormStorage из Rx - это поможет?
...
Рейтинг: 0 / 0
Динамическое изменение размера формы в зависимости от разрешения экрана
    #32057321
pima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про FormStorage - не знаю, но можно попробовать так. Задаете некий список, где перечисляете все контролы, принадлежащие форме (конечно, только видимые :-). Потом в рантайме считываете разрешение экрана (делается это, кажется, через TScreen.Height, TScreen.Width - не помню, щас нет времени рыться в справке. Или может быть Canvas??? в общем, поройтесь). И задаете, что ваша форма должна занимать такую-то часть экрана в долях, например, 0,3 по высоте и 0,5 по ширине. Вот. Получили коэффициент масштабирования. Потом идем по списку, где перечислены имена видимых контролов формы, и через TForm.FindChildControl(СтрокаСписка) изменяем их heigth и width на этот масштабный коэффициент.
То же надо будет проделать с расположением - свойства top и left.

Удачи. Если получится - выложите сюда, пожалуйста. Одно время сама хотела такое сделать, но как-то всё руки не доходили
:-))
...
Рейтинг: 0 / 0
Динамическое изменение размера формы в зависимости от разрешения экрана
    #32057329
Фотография manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарствую, pima, буду пробовать...
...
Рейтинг: 0 / 0
Динамическое изменение размера формы в зависимости от разрешения экрана
    #32057445
Фотография Luchkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ScaleBy уже отменили? ;-)

Код: plaintext
1.
2.
3.
4.
procedure TFAnyForm.FormCreate(Sender: TObject);
begin
   ScaleBy(Screen.PixelsPerInch*Screen.Height*Screen.Width,  96 * 800 * 600 )
end;


Если разрабатывалось при нормальном размере шрифтов и разрешении 800 на 600 точек.
Вроде так работало раньше.
...
Рейтинг: 0 / 0
Динамическое изменение размера формы в зависимости от разрешения экрана
    #32057461
Фотография Luchkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да. Только сама форма не меняет свои размеры.
А вот так попробовал, -- легко получается. Только гриды не знают, как себя изменять в этой ситуации...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
procedure TFAnyForm.FormCreate(Sender: TObject);
var
   rr : double;
   M  : integer;
   D  : integer;
begin
   M:= Screen.PixelsPerInch*Screen.Height*Screen.Width;
   D:=  96 * 800 * 600 ;
   rr:= M / D;
   Height:= Round(Height * rr);
   Width:= Round(Width * rr);
   ScaleBy(M, D);
end;
...
Рейтинг: 0 / 0
Динамическое изменение размера формы в зависимости от разрешения экрана
    #32057819
Фотография manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pima, а может, ну ее, такую сложность :) Я тут с FormStorage поковырялся чуток - все ОК, получается. А всего-то: вешаешь его (FormStorage) на форму, потом на нем даблклик, выбираешь компонент и его свойства, кот. хочешь зафиксировать, в свойстве IniFileName - название ini-шника, запускаешь - в c:\windows появляется этот ini-шник. И так на все разрешения, какие захочешь. А на FormCreate вешаешь элементарную проверочку, что-то типа
Код: plaintext
1.
2.
3.
4.
5.
6.
if Screen.Width =  800  then
       FormStorage.IniFileName := '800x600.ini';

  if Screen.Width =  1024  then
       FormStorage.IniFileName := '1024x728.ini';

  FormStorage.RestoreFormPlacement; 


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

2Lichkin Dmitry
и гриды нормально изменяются....

Удачи. Если у кого есть другие соображения - пишите...
...
Рейтинг: 0 / 0
Динамическое изменение размера формы в зависимости от разрешения экрана
    #32057915
pima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
действительно, проще на порядок.
А то я подумала - моим способом получается вообще жуткая вещь, список должен быть древовидным, т. к. компоненты на форме - не только братья, а внуки-правнуки и т. д., и надо всё это хозяйство обрабатывать в иерархическом порядке. действительно, ну нафиг ....... :)
...
Рейтинг: 0 / 0
Динамическое изменение размера формы в зависимости от разрешения экрана
    #32058203
just4fun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю делать формы по возможности маленькими, а пользователя научить всё подстраивать под себя, а после этого уже пригодится FormStorage
...
Рейтинг: 0 / 0
Динамическое изменение размера формы в зависимости от разрешения экрана
    #32058214
Trong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А свойство Anchors не устроит? просто накидываете форму в минимальном разрешении и выставляете якори на лево-право-верх-низ. Все само и растянется ... правда всякие там шрифты придется все равно ручками менять ...
...
Рейтинг: 0 / 0
Динамическое изменение размера формы в зависимости от разрешения экрана
    #32058218
Фотография manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2just4fun
на мой взгляд, не каждого пользователя научишь (по крайней мере, быстро...) А чем меньше пользователь выходит за рамки понятного ему, тем лучше...
2Trong
правда всякие там шрифты придется все равно ручками менять ...
дык в этом и дело, хочется, чтоб "все сразу и навсегда" :)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Динамическое изменение размера формы в зависимости от разрешения экрана
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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