Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-92842
Леван
2002-11-12 15:37
2002.11.28
Как Заморозитть DBGRID


1-93131
MegaVolt
2002-11-13 16:38
2002.11.28
Как проверить корректность имени файла?


1-93057
Vint
2002-11-15 14:44
2002.11.28
фоновый рисунок на форме


1-92953
ИгорьК
2002-11-18 10:13
2002.11.28
Псевдо MDI приложение


14-93182
[NIKEL]
2002-11-08 18:35
2002.11.28
Куда можно выложить утилитку?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский