![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Размер формы и разрешение экрана [D6, WinXP]
Солер © (2004-06-20 19:08:00)Здравствуйте!
Помогите начинающему.
Как сделать, чтобы размер формы не изменялся при смене разрешения экрана
Anatoly Podgoretsky (2004-06-21 08:55:00) [1]Автору не мешало бы объясниться, даже само понятие размер расплывчатое.
zep (2004-06-20 22:29:00) [2]автор скорей всего хочет спросить кок сделать так чтобы при изменении разрешения форма занимала всегда весь экран.
попробуй так.
implementation
const
ScreenWidth: Integer = 800; {Я разрабатывал свою форму в режиме 800x600.}
ScreenHeight: Integer = 600;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
x, y: LongInt; {Тип Integer не достаточно большой для наших значений.}
begin
form1.scaled := true;
x := getSystemMetrics(SM_CXSCREEN);
y := getSystemMetrics(SM_CYSCREEN);
if (x <> ScreenHeight) or (y <> ScreenWidth) then
begin
form1.height := form1.height * x div ScreenWidth;
form1.width := form1.width * y div ScreenHeight;
end;
if x <> ScreenWidth then
scaleBy(x, ScreenWidth);
end;
default (2004-06-20 21:19:00) [3]на самом деле телепатия
Anatoly Podgoretsky (2004-06-20 20:27:00) [4]Пользователь как раз изменяет разрешение для того, что бы поместилось больше, а не наоборот. уважительным поведением по отношению к пользователю будет позволить ему самому сменить размеры и запомнить его предпочтение.
jack128 (2004-06-20 20:19:00) [5]
> default © (20.06.04 20:09)
ну да, это понятно, только не соответствует исходному вопросу ;-) Позволю себе процитировать:
> Как сделать, чтобы размер формы не изменялся при смене разрешения
> экрана
(под размером подразумевались относительные размеры)
цели, чтобы форма занимала фиксированую часть (например, треть или, там, четверть) не было..
Хотя конечно - кто его, автора, знает... Как всегда в телепатию играем :-))
default (2004-06-20 20:09:00) [6]млин, таки придётся писать следующий бред, а как было лень...
нужно нам, к примеру, чтобы ширина формы была равна трети
ширины экрана(ну не всего экрана разумеется, а только той что подлежит выводу)
писалась прога при разрешении 800*600, ширина формы была
800/3=~267
пользователь запустил прогу при разр-ии 1024*768 и соответственно
при подходе Jack128 требуемое соотношение будет 1024/267=~4,
которое и будет поддерживаться при возможной смене разрешения в ходе
работы приложения, что не соответствует исходному соотношению
YurikGL (2004-06-20 20:00:00) [7]
> default © (20.06.04 19:56) [8]
Я подумал, что русским ему понятней будет :)))). А то, что это не нужно, это я согласен.
default (2004-06-20 19:56:00) [8]Anatoly Podgoretsky © (20.06.04 19:48) [6]
зачем?
вообще [1]
не зря русским коэф-ент написан...
evvcom (2004-06-20 19:55:00) [9]Баловство это, IMHO. Если юзер считает, что ему удобно 1600 или 1920 точек по горизонтали видеть, ну и пусть видит твою форму в трех квадратных сантиметрах. Если это мелко, пусть ставит более крупное разрешение, а извращаться-то зачем?
Anatoly Podgoretsky (2004-06-20 19:48:00) [10]default © (20.06.04 19:35) [3]
Посчитай для 1280*768, 1280*960, 1280*1024
default (2004-06-20 19:46:00) [11]AlexG © (20.06.04 19:40) [4]
именно
AlexG (2004-06-20 19:40:00) [12]default © (20.06.04 19:35) [3]
Так они ж и будут постоянными. Просто их инициализация тебя смущает?
default (2004-06-20 19:35:00) [13]jack128 © (20.06.04 19:31) [2]
i, j по идее должны быть постоянны...
jack128 (2004-06-20 19:31:00) [14]уж не знаю, на сколько коректно, но юоле менее работает..
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
i, j: Double;
procedure WmSettingChange(var Message: TMessage); message WM_SETTINGCHANGE;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
i := screen.Width / Width;
j := screen.Height / Height;
end;
procedure TForm1.WmSettingChange(var Message: TMessage);
begin
inherited;
Width := Round(screen.Width / i);
Height := Round(screen.Height / j);
end;
YurikGL (2004-06-20 19:14:00) [15]form.width:=screen.width*коэффициент