![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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;