Форум: "Основная";
Текущий архив: 2002.11.28;
Скачать: [xml.tar.bz2];
Внизне могу изменить положение формы Найти похожие ветки
← →
ИгорьК (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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c