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

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

CenterOnParent


AndreyRus ©   (2007-05-05 18:50:00) 

При установке свойства формы - "CenterOnScreen" генерируется лишний код SetPosition(x, y):

procedure NewForm1( var Result: PForm1; AParent: PControl );
begin
 Result.Form := NewForm( AParent, 'Form1' ).SetPosition( 306, 260 ).SetClientSize( 504, 368 );
 // ...
 Result.Form.CenterOnParent;
end;


P.S. К тому же, CenterOnParent дает неправильное центрирование формы, если увеличить высоту панели задач.


Vladimir Kladov   (2007-05-06 20:28:00) [1]

С какой стати. Это конечный метод уровня программиста, использующего библиотеку.


AndreyRus   (2007-05-06 16:46:00) [2]

В принципе да. Если отказаться от функции CenterOnParent, то код получается значительно меньше. Хотя линкер навряд ли выкинет код CenterOnParent... наверняка где нибудь используется.


Vladimir Kladov   (2007-05-06 15:26:00) [3]

Центрирование относительно экрана - делается правильно. Центрирование относительно любого другого прямоугольгика - делайте сами. Патчить KOL не нужно.


AndreyRus   (2007-05-06 14:06:00) [4]

Я думаю, что нужно подпатчить KOL.


Compiler   (2007-05-06 12:31:00) [5]

Я заподозрил, что нужно готовое решение.


AndreyRus   (2007-05-06 02:09:00) [6]

я знаю как исправить это... Просто обратил внимание.


Compiler   (2007-05-06 01:48:00) [7]

Form.CenterOnParent - центрирует форму независимо от высоты панели задач. Для ее учета попробуйте:

procedure DlgCenter( Wnd: HWnd );
var
 R2,R: TRect;
 W, H: Integer;
begin
 GetWindowRect( Wnd, R );
 R2:=GetDesktopRect;
 W := R.Right - R.Left;
 H := R.Bottom - R.Top;
 R.Left := (R2.Right - W) div 2;
 R.Top := (r2.Bottom - H) div 2;
 MoveWindow( Wnd, R.Left, R.Top, W, H, True );
end;


Наверх

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