Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.11.16;
Скачать: CL | DM;

Вниз

Последовательность GroupBox с Align = alTop   Найти похожие ветки 

 
Alex_C   (2008-10-07 11:09) [0]

У меня на форме есть несколько GroupBox с Align = alTop. Во в время работы пользователь может скрывать неиспользуемый GroupBox. Однако, если в последствии он захочет его снова показать, то GroupBox"ы меняются местами (при чем не всегда - закономерность так и не понял). Как жестко привязять последовательность нескольких компонентов с alTop?


 
{RASkov} ©   (2008-10-07 11:42) [1]

> [0] Alex_C   (07.10.08 11:09)

Реализацию выравнивания сделать самому...
Если самому лень, то можно играть со свойством Тор....


 
{RASkov} ©   (2008-10-07 11:49) [2]

> Реализацию выравнивания сделать самому...

Т.е. на OnResize Parent"а вызывать свой метод, например RealignCtrl, где и делать главную деталь задуманного....
Так же этот метод вызывать после скрытия/показа выровненных контролов....

В методе просто перебирать список контролов выставляя им нужные свойства(видимость, положение, размер)..... ну что-то примерно так....


 
{RASkov} ©   (2008-10-07 12:30) [3]

Вот примерно так:
procedure TForm1.MyTopAlignCtrl(ASpaceBorder, ASpaceTop: Integer);
var N, NTop: Integer;
begin
 NTop:=ASpaceTop;
 for N:=0 to ControlCount-1 do
  if Controls[N].Visible then begin
   Controls[N].SetBounds(ASpaceBorder, NTop, ClientWidth-ASpaceBorder*2, Controls[N].Height);
   NTop:=NTop+Controls[N].Height+ASpaceTop;
  end;
end;

//Вызовы
procedure TForm1.FormResize(Sender: TObject);
begin
 MyTopAlignCtrl(25, 15); //25 - отступ от краев и 15 - между контролами по высоте... Дополнительный плюс в данном способе :)
end;

//Пример скрытия/показа...
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
 Controls[1].Visible:=not Controls[1].Visible; // Спятать/показать некий(1) контрол на форме....
 FormResize(nil); //вызов ресайза формы, но лучше 25 и 15 из ресайза сделать свойствами или хотябы константами....
end;


Есть наверное и минусы в данной задумке.... например уже не учитывается стандартное выравнивание, более того оно должно быть выключено(alNone)
Если опять будут прыгать, то можно попробывать свой список контролов завести(вместо Controls)....
И да, в моем примере выравнивание выполняется контролам, родителем которых форма. но это не обязательно... Кстати метод можно подправить на:
procedure TForm1.MyTopAlignCtrl(AParent: TWinControl; ASpaceBorder, ASpaceTop: Integer); ну и чуть изменить реализацию....

Я помню, была уже такая тема давненько, но не помню как решили этот вопрос в прошлый раз.) Наверное всеж со свойством Top играли...



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

Текущий архив: 2008.11.16;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
2-1223295289
Урсулапов
2008-10-06 16:14
2008.11.16
как связаться с *.fdb-базой в delphi 7?


4-1200294141
MOZG
2008-01-14 10:02
2008.11.16
Error EOSError 1400


2-1223393680
Alex.rus
2008-10-07 19:34
2008.11.16
Отключение флешки


15-1220252972
Игорь Шевченко
2008-09-01 11:09
2008.11.16
самые свежие материалы о Delphi 2009 и С++ Builder 2009


3-1209750958
Beer_Hunter
2008-05-02 21:55
2008.11.16
Параметризированный запрос