Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Форму - в центр


Автор: FireSnake 17.11.2006, 19:50
Здраствуйте. Как добиться что бы форма всегда была строго по центру экрана, не зависимо от текущего разрешения монитора? Другими словами к каму свойсту и  чего надо обратится, что бы узнать размер экрана в пикселях по ширине и по высоте?

Автор: Sunvas 17.11.2006, 19:52
Свойство формы Position поставь в poScreenCenter.

Автор: FireSnake 17.11.2006, 19:53
А блин, забыл в  поиск глянуть... там уже все есть smile 

Автор: kostas 18.11.2006, 19:48
Добавлю кое что.
Если имеем MDI (а может и не только) приложении и в OnCreate разворачиваем его на весь экран (WindowState:=wsMaximized), и при этом у нас выставлено Position по центру, то окошко будет растянутым на весь экран и выровненным по центру (причем не важно ScreenCenter или DesktopCenter), но таким образом, что наверху останется область, то есть top его не будет равен нулю. Объясняется просто, разворачивается окно на всю рабочую область, а центруется по всему экрану, отсюда и будет наверху полосочка оставатся размером высота_пуска/2 в общем случае smile Такой вот косяк, можете проверить у себя...
Решается легко, центруем ручками smile
Код

  Left := (Screen.Width - Form1.Width) div 2;
  Top := (Screen.Height - Form1.Height) div 2;

Автор: fidres 19.11.2006, 09:11
сам баловался с этой фигнёй... ;о)
в программулине одной, решил обойтись без дельфовой функции... =)
Код
procedure TForm1.Button1Click(Sender: TObject);
var b,u,g,k: integer;
begin
   g:=Screen.Width div 2;        // половина ширины экрана
   k:=Screen.Height div 2;       // половина его высоты
   b:=form2.Height div 2;        // высота формы, делённая на два
   u:=form2.Width div 2;         // ширина - ll -
{
  showmessage(
   'FORM2.width = '+inttostr(form2.width)+#13+
   'FORM2.height = '+inttostr(form2.Height)+#13+
   'FORM2.width div 2 = '+inttostr(form2.width div 2)+#13+
   'FORM2.height div 2 = '+inttostr(form2.Height div 2));
}
   form2.Left:=g-u;               // выставляем координаты левого края формы
   form2.Top:=k-b;                //  - ll - верхнего края ......
   form2.Show;
end;
можно обойтись без всяких переменных... ;)
эт я так - для наглядности...  smile 

Код
   form.Left:=(Screen.Width div 2)-(form.Width div 2);
   form.Top:=(Screen.Height div 2)-(form.Height div 2);
   form.Show;

 smile 

ослик парализованный!
так поторопился ответить, что даже не прочёл пост by kostas...
 smile 
ну да ладно. пусть будет.
простите за  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)