Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.05.2009, 02:38
JcN JcN вне форума
Прохожий
 
Регистрация: 27.04.2009
Сообщения: 35
Репутация: 10
По умолчанию MDI формы

Использую MDI формы.
В связи с этим возникли вопросы
1. Как огранить область передвижения для MDIChild областью MDIParent, чтобы при выходе за пределы не повлялись ScrollBox'ы, а просто дочернее окно не смогло бы двигаться дальше.
2. При нажатии кнопки Maximize (развёртывании).. форма MDIChild разваричается за клиентскую область MDIParent и после чего кнопки заголовка окна MDIChild недоступны. как решить эту проблему
Спасибо

Последний раз редактировалось JcN, 22.05.2009 в 02:41.
Ответить с цитированием
  #2  
Старый 22.05.2009, 14:20
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Насчёт 2 - создай MainMenu, хотяб просто с Файл-Выход. Кнопки будут появляться справа.
Про первое - сейчас пороюсь в делфиворлде, чтото было...
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #3  
Старый 22.05.2009, 15:03
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Ограничить область перемещения окна можно так.

А так можно сделать, чтобы дочерняя форма разворачивалась только на всю клиентскую область родительской (чтобы системное меню с кнопками оставалось видимым):
Код:
procedure WMSIZE(var Msg: TMessage); message WM_SIZE;

................................

procedure TForm2.WMSIZE(var Msg: TMessage);
begin
  inherited;
  if Msg.WParam = SIZE_MAXIMIZED then
  begin
    ShowWindow(Handle, SW_RESTORE);
    Left := 0;
    Top := 0;
    Width := Form1.ClientWidth - 4; // бордюр 4 px...
    Height := Form1.ClientHeight - 4;
  end;
end;

P.S. Эту процедуру нужно вписать в Unit дочерней формы.
P.P.S. Забыла пояснить, что у меня в этом примере Form1 —fsMDIForm, а Form2 — fsMDIChild.

Последний раз редактировалось Nyctos Kasignete, 22.05.2009 в 15:14.
Ответить с цитированием
  #4  
Старый 25.05.2009, 02:02
JcN JcN вне форума
Прохожий
 
Регистрация: 27.04.2009
Сообщения: 35
Репутация: 10
По умолчанию

Спасибо большое!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:53.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025