Текущий архив: 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.027 c