Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.11.16;
Скачать: [xml.tar.bz2];

Вниз

Последовательность 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
15-1221794968
ganda
2008-09-19 07:29
2008.11.16
BlackfishSQL что за база и с чем её едят!?


15-1221421091
{RASkov}
2008-09-14 23:38
2008.11.16
Организация малой сети


11-1193383490
L`Autour
2007-10-26 11:24
2008.11.16
Программный скролинг KOLListView


2-1223239360
Lamer6666
2008-10-06 00:42
2008.11.16
Как добавить свойство объекту?


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский