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

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

Размер формы и разрешение экрана [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*коэффициент


Наверх

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