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


Автор: DenRip 23.6.2007, 14:42
На форме три панели, (Align=Left) что бы ширина у панелей всегда были одинаковые я пишу код:
Ширина панели = Ширина формы/3.
Я правильно делаю? или есть какой то другой приёмчик?

Автор: skyboy 23.6.2007, 15:02
ну, при изменении размера формы ты не получишь пересчет размеров панелей.
потому: в OnFormCreate пропиши:
Код

var AllPanelWidth: integer;
...
AllPanelWidth:= Self.ClientWidth div 3;
panel1.width:= AllPanelWidth;
panel2.width:= AllPanelWidth;
panel3.width:= AllPanelWidth;
panel1.height:= Self.clientHeight;
panel2.height:= Self.clientHeight;
panel3.height:= Self.clientHeight;
panel1.top:= 0;
panel2.top:= 0;
panel3.top:= 0;
panel1.left:= 0;
panel2.left:= panel1.left + panel1.width;
panel3.left:= panel2.left + panel2.width;
panel1.anchors:= [akTop,akLeft,akBottom,akRight];
panel2.anchors:= [akTop,akLeft,akBottom,akRight];
panel3.anchors:= [akTop,akLeft,akBottom,akRight];

Ключевые моменты: использование anchors вместо align b свойства clientWidth вместо просто width.

Автор: DenRip 23.6.2007, 15:46
Полезный примерчик, спасибо!

Автор: pseud 25.6.2007, 09:46
Раз 3 панели и ширина панели = 1/3 ширины формы, значит у тебя панели занимают всю форму.
Следовательно в дизайне выставляешь:

Код

Panel1.Align = alLeft;
Panel2.Align = alLeft;
Panel3.Align = alClient;


и пишешь 2 строчки кода в процедуре Form.OnResize:

Код

procedure TForm1.FormResize(Sender: TObject);
begin
  Panel1.Width := (ClientWidth div 3);
  Panel2.Width := Panel1.Width;
end;

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