Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как изменить размеры MDIClient


Автор: dwik 1.2.2012, 00:21
Столкнулся с такой проблемой.
У меня классическое mdi-приложение. Но на главной форме присутсвуют ряд контролов без установленных полей Align.
Мне требуется ограничить область вывода для дочерних окон, чтобы они не наезжали на эти самые контролы.

Как известно, MDIChield открывается в пределах некой рабочей области главного окна, называемой MDIClient, и cоответственно при максимизации пытается занять всю эту область. Проблема в том, что если Align посторонних компонентов на главной форме стоит alNone, то дочерние окна спокойно открываются поверх них. По определенным причинам выставить другой Align я не могу

Как можно динамически менять размеры рабочей области MDIClient ??? Кто решал эту проблему ?

Автор: БелАмор 1.2.2012, 07:43
Положите панель, задайте ей выравнивание, а на ней разместите всё, что нужно.

Автор: dwik 1.2.2012, 09:56
В этом и проблема - так сделать не могу. У меня 2 док-панели с align Bottom и left. В угол между ними нужно поместить третью панель, но если выставить есть Bottom, то она выйдет из отведенного ей места и уйдет вровень с нижней панелью (той, у которой align=bottom)

Автор: БелАмор 1.2.2012, 11:16
А зачем вам класть все три панели непосредственно на форму?
Допустим, у вас нижняя панель - во всю ширину, тогда на неё положите две панели: одну с выравниванием влево, вторую - по клиенту. У левой панели выставляете ширину по той панени, которая находится непосредственно на форме с выравниванием влево.

Автор: RomanEEP 3.2.2012, 07:38
Код

TFormMain = class(TForm)
  ....
  procedure AlignControls(AControl: TControl; var Rect: TRect); override;
end;

procedure TFormMain.AlignControls(AControl: TControl; var Rect: TRect); override;
begin
  inherited;
  MoveWindow(ClientHandle, MyLeft, MyTop, MyWidth, MyHeight, False);
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)