Главная страница
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.014 c
15-1221554711
melehov
2008-09-16 12:45
2008.11.16
Самоцель:создать БД для себя и всеобщего пользования сотрудников


4-1200030765
Михаил Макушев
2008-01-11 08:52
2008.11.16
Access violation prin вызове ф-ции CryptoAPI


2-1223362300
123-ий
2008-10-07 10:51
2008.11.16
Экранирование одинарной кавычки


11-1195769528
ntg13
2007-11-23 01:12
2008.11.16
kol + msvcrt + ntdll ???


15-1221345698
Per Pra
2008-09-14 02:41
2008.11.16
"Perfect Prattle" или "Идеальная потрепаловка - 2"