Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подгон проги по разрешение экрана [D5, D7, Win95/98, WinXP]


Александр1 ©   (2004-08-28 11:12:00) 

Здравствуйте уважаемые мастера! С той проблемой с которой я столкнулся сталкиваются наверное все.
Если программа, а конкретно Form1. Размер формы был написан для разрешения 1024x768. Но компьютеры на которых эта программа будет работать имеют разные разрешения и вообще разные размеры мониторов. Как сделать так, чтобы программа (размер Form-мы) подгонялся бы автоматически под разрешение экрана.
Я уже делал так, что программа подгоняла разрешение экрана под себя. Но пользователи взбунтовались. Им не нравится, что какая-то мелкая программулька постоянно меняет разрешение экрана.
Заранее спасибо за помощь!


Александр1   (2004-08-31 06:36:00) [1]

Кажется я нашёл разрешение своей проблемы. Если кому интересно, то:
nit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 // Отлавливаем, сообщение о изменении разрешения экрана
   procedure WMDisplayChange(var message: TMessage); message WM_DISPLAYCHANGE;

 public
   { Public declarations }
 W, H: integer;

 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
Width := Round(Width * 1.5);
 Height := Round(Height * 1.5);
 ScaleBy(150, 100)

end;

procedure TForm1.WMDisplayChange(var message: TMessage);
begin
 inherited;
 Width := Round(Width * LOWORD(message.LParam) / W);
 Height := Round(Height * HIWORD(message.LParam) / H);
 ScaleBy(LOWORD(message.LParam), W);
 W := Screen.Width;
 H := Screen.Height;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
W := Screen.Width;
 H := Screen.Height;
end;

end.


Александр1   (2004-08-31 05:37:00) [2]

Спасибо за совет попробую!


OSokin   (2004-08-29 19:56:00) [3]

Поменяй свойство ScaleBy у формы (это и было написано в справке)


GuAV   (2004-08-28 17:53:00) [4]


> А скроллы чего не юзаешь?

Тоже вариант.


GuAV   (2004-08-28 17:52:00) [5]

Короче перевожу

первый абзац:
Юзай
> Алхимик ©   (28.08.04 11:55) [1]
> Габариты экрана
> Screen.Width
> Screen.Height

для размеров экрана пользователя, а свои пропиши константами.

второй абзац:
Атоматически можно подстраивать свойством CustomForm.Scaled в true и  методом TWinControl.ScaleBy. ScaleBy однако не подстроит саму форму, её руками.

дальше читай сам мне в лом.


OSokin   (2004-08-28 17:51:00) [6]

А скроллы чего не юзаешь?


Александр1   (2004-08-28 17:24:00) [7]


> > Don   (28.08.04 17:03) [6]
>
> А ты учи эту самую теорию.
> Ctrl+Ins, Shift+Ins любой дурак умеет.
> И нерусский учи - пригодится :)

Как её учить когда она на английском, в котором я ну скажем не очень.


GuAV   (2004-08-28 17:20:00) [8]


> Don   (28.08.04 17:03) [6]

А ты учи эту самую теорию.
Ctrl+Ins, Shift+Ins любой дурак умеет.
И нерусский учи - пригодится :)


Don   (2004-08-28 17:03:00) [9]


> GuAV ©   (28.08.04 15:11) [5]

Как только переводчик достану, так переведу и прочитаю. Но влюбом случае там только теория. А примерами там и не пахнет.


GuAV   (2004-08-28 15:11:00) [10]

Help->Delhi Help
Содержание
Prorammming With Delphi->Deploying Applications->Screen resolutions and color depths
Чтать это и вторую ссылку снизу.


Александр1   (2004-08-28 13:49:00) [11]


> Anatoly Podgoretsky ©   (28.08.04 12:58) [2]

Полностью согласен!


Александр1   (2004-08-28 13:46:00) [12]

Даже если я напишу:
left:=0;
Top:=0;
Form1.Width:=Screen.Width;
Form1.Height:=Screen.Height;
То размеры Form-мы конечно погонятся под размер экрана. Но на Form-ме, много всяких вещей (кнопок, редакторов и т.д.). Получается все их размеры надо пересчитывать, положение на форме менять? А нет чего-нибудь универсального?


Anatoly Podgoretsky   (2004-08-28 12:58:00) [13]

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

В Дельфи достаточно средств для управления видом и размерами, обрати внимание хотя бы на Constrain если не хочешь сами менять. А вообще хорошим тоном разрабатывать для малых разрешений и проверять на только на разных, но и с разными настройками шрифтов, то особенно желательно.

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


Алхимик   (2004-08-28 11:55:00) [14]

Габариты экрана
Screen.Width
Screen.Height


Наверх

Титульная страница Поиск, карта сайта Написать письмо