Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];

Вниз

MDI - интерфейс   Найти похожие ветки 

 
Dale   (2003-07-09 10:12) [0]

При разворачивании MDI-child окна (WindowState:=wsMaximized) происходит объединение заголовков главного и дочернего окошка. А мне бы очень хотелось чтобы дочернее окно разворачивалось, но сохраняло свой заголовок окна. Т.е. выглядело бы это как align:=alClient.
Подскажите пожайлуста как это получше бы сделать???


 
Smok_er   (2003-07-09 10:21) [1]

Думаю, что только вручную.
Перехватываем сообщение WM_SYSCOMMAND и вместо разворачивания окна просто меняем его размеры
Но интересует другой вопрос - надо ли это? Чем не устраивает стандартное поведение?


 
AbrosimovA   (2003-07-09 11:12) [2]

У меня в Delphi 6 заголовки не объединяется. Возможно со свойствами окон где-то напортачил.


 
Игорь Шевченко   (2003-07-09 11:24) [3]

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;


 
Dale   (2003-07-09 12:31) [4]

Можно поподробнее. Откуда эту процедуру вызывать и что передавать в качестве параметра.
И еще у меня идет ругательство на
inherited;


 
Dale   (2003-07-09 12:38) [5]

Стандартное поведение меня не устраивает только с визуальной стороны. Ведь хочется как покрасивше и поудобнее. А в заголовке окошек-подростков у меня полезная для пользователя информация.


 
Smok_er   (2003-07-09 13:01) [6]

Ну так эти же заголовки остаются. Просто происходит объединение с родитеским заголовком.

Объявляем процедуру след. образом:
protected
procedure WMSysCommand(var Message: TMessage); message WM_SYSCOMMAND;

Теперь при попытке максимизировать окно будет выполняться эта процедура




 
Nevermind   (2003-07-09 13:02) [7]

Процедура предназначена для обработки собщения WM_SYSCOMMAND, посылаемого форме, и должна объявляться (хотя не обязательно, это дело принципа), в приватнной секции. Непосредственно её вызывать не нужно.
TMyForm = class(TForm)
private
procedure WMSysCommand(var Message: TMessage); message WM_SYSCOMMAND;
...

inherited - означает, что в случае получения твоим окошком системного сообщения, отличного от того, на обработку которого рассчитана твоя процедура, управление передается оконной процедуре предка, напр., TForm.


 
Dale   (2003-07-09 14:38) [8]

А можно ли сделать так, чтобы кнопка максимизации принимала соответствующий вид??? И каким образом я могу обработать сообщения кнопки "Свернуть в окно"??? (wsNormal)



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

Форум: "Основная";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
3-67666
RH
2003-06-26 12:08
2003.07.21
Нужно заполнить поле


1-67851
Sheng
2003-07-07 19:54
2003.07.21
Цвета в Делфи


11-67744
bartov
2002-11-15 20:18
2003.07.21
KOLRichEdit


1-67840
AndrewVolkov
2003-07-07 18:09
2003.07.21
И снова PopupMenu ;-((


4-68107
Mr. API
2003-05-15 20:15
2003.07.21
В WinXP создается прозрачное окно.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский