Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.28;
Скачать: CL | DM;

Вниз

не могу изменить положение формы   Найти похожие ветки 

 
ИгорьК   (2002-11-18 15:59) [0]

в OnShow пишу:
Top := ((Owner as TForm).ClientHeight - Height) div 2;
Left := ((Owner as TForm).ClientWidth - Width) div 2;

Top и Left меняются, но на экране форма все равно остается на прежнем месте, хотя если на форму кинуть кнопку и по OnClic делать тоже-самоеЮ то все OK. Это почему так?


 
ИгорьК   (2002-11-18 16:05) [1]

и еще - как-то странно считается ширина/высота в случае MDI приложения. Даже "на глаз" видно что не по центру создалась форма. А как правильно сделать по-центру? С учетом statusbar, menu, панелей инструментов. Как определить длину/ширину свободной области главной формы?


 
MBo ©   (2002-11-18 16:06) [2]

>длину/ширину свободной области главной формы?
clientrect


 
Переяслов Григорий ©   (2002-11-18 16:34) [3]

Попробуй не onShow, а onActivate или onCreate
По центру Left := Screen.Width div 2 - Form1.Width div 2;


 
ИгорьК   (2002-11-18 16:47) [4]

В случае MDI почему-то не учитываются menu, status и toolbar. Например по разрешении 800х600 получаю clientwidth=573, при том, что есть MAinMenu, toolbar и statusbar. Это как побороть?


 
Игорь Шевченко ©   (2002-11-18 16:56) [5]

В случае MDI:

var
AREct : TRect;

...
Windows.GetClientRect(Application.MainForm.ClientHandle, ARect)
это область, где живут MDIChild"ы (детский сад для MDI).

Кстати, о Maximize:
procedure TfAbstChild.WMSysCommand(var Message: TMessage);
var ARect : TRect;
begin
if Message.wParam = SC_MAXIMIZE then begin
Message.Result := 0;
Windows.GetClientRect(Application.MainForm.ClientHandle, ARect);
SetWindowPos(Handle, 0, ARect.Left, ARect.Top, ARect.Right - ARect.Left,
ARect.Bottom - ARect.Top, SWP_NOZORDER);
end else
inherited;
end;


 
ИгорьК   (2002-11-18 17:16) [6]

Уряяяя! Заработало! Это про GetClientRect.
А про WMSysCommand - а где его объявлять нужно? А то, что-то у меня не срабатывает?


 
Игорь Шевченко ©   (2002-11-18 17:19) [7]


type
TfAbstChild = class(TForm)
private
procedure WMSysCommand (var Message : TMessage); message WM_SYSCOMMAND;
.....
end;


И все Child"ы от такой формы наследовать...


 
ИгорьК   (2002-11-18 17:32) [8]

ОК! Все работает, спасибо!!!


 
ИгорьК   (2002-11-19 14:37) [9]

Еще вопрос к г-ну Шевченко ;-).
По поводу максимизации MDI окон. Все как-бы замечательно, но возможно-ли сделать так, что-бы и обратно размер можно было-бы вернуть после максимизации? Иконка так и остается с одним окошком.


 
Игорь Шевченко ©   (2002-11-19 16:11) [10]

ИгорьК (19.11.02 14:37)

Руки приложить - так все можно. Я свои приложил - очередь за тобой.

Успехов!



Страницы: 1 вся ветка

Текущий архив: 2002.11.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
3-92927
dim-
2002-11-06 01:07
2002.11.28
блокировка записи


1-93138
cosinus
2002-11-18 10:58
2002.11.28
Создание алгоритма димминга


3-92866
Novishok
2002-11-07 13:59
2002.11.28
Секс!!!


3-92839
ev1972
2002-11-12 15:03
2002.11.28
Как просмотреть файл.frp в FastReport?


1-93009
Peroon
2002-11-19 01:14
2002.11.28
Как узнать положение курсора в области экрана?