Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.10;
Скачать: CL | DM;

Вниз

Подгон проги по разрешение экрана   Найти похожие ветки 

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

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


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

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


 
Anatoly Podgoretsky ©   (2004-08-28 12:58) [2]

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

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

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


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

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


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


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

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


 
GuAV ©   (2004-08-28 15:11) [5]

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


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


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

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


 
GuAV ©   (2004-08-28 17:20) [7]


> Don   (28.08.04 17:03) [6]

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


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


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

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


 
OSokin ©   (2004-08-28 17:51) [9]

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


 
GuAV ©   (2004-08-28 17:52) [10]

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

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

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

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

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


 
GuAV ©   (2004-08-28 17:53) [11]


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

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


 
OSokin ©   (2004-08-29 19:56) [12]

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


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

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


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

Кажется я нашёл разрешение своей проблемы. Если кому интересно, то:
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.10.10;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.038 c
4-1094191026
Chery
2004-09-03 09:57
2004.10.10
Как перехватить нажатие клавиш Shift + Delete ?


14-1095918599
Lexxx
2004-09-23 09:49
2004.10.10
Мастера, подскажите, можно ли в XP Home поставить IIS 5.0?


14-1095879895
lipskiy
2004-09-22 23:04
2004.10.10
Математика смешивания цветов?


4-1092391573
Дмитрий Ботвин
2004-08-13 14:06
2004.10.10
Тип запуска службы


4-1094655045
Алексей Петухов
2004-09-08 18:50
2004.10.10
Настройки принтера