Форум: "Начинающим";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];
ВнизПорядок Align-утых компонентов Найти похожие ветки
← →
DevilDevil © (2007-11-29 11:38) [0]Здравствуйте.
Такая вот запарка...
Есть несколько Align-утых прилигающих друг к другу компонентов (Align = alTop). Значения свойств Visible у таких компонентов периодически изменяется, порядок следования таких компонентов изменяется тоже (ЧЕГО НЕ НАДО).
Вопрос: как сохранить порядок следования?
← →
ЮЮ © (2007-11-29 11:45) [1]1) Использовать нормальный DrawGrid вместа издевательства над компонентами.
2) пристисвить им Tag в порядке возрастания.
чтобы втал правильно, надо Align отелючить, Top установить больше нижнего видимого и меньше верхнего, а теперь вклюямит (Align = alTop)
← →
DevilDevil © (2007-11-29 11:52) [2]> ЮЮ © (29.11.07 11:45) [1]
Непонял, что за DrawGrid ?
← →
ЮЮ © (2007-11-29 11:55) [3]> Непонял, что за DrawGrid ?
Какие компоненты собираешь в стопку тоже не понятно :)
← →
DevilDevil © (2007-11-29 12:02) [4]Панели.
← →
DevilDevil © (2007-11-29 12:06) [5]Вообще я надеялся на наличие цивилизованных методов
← →
Gadenysh (2007-11-29 19:40) [6]ручками. хранить в TList порядок и восстанавливать при изменении visible у одной из панелей
← →
ari_9 (2007-11-30 00:44) [7]DevilDevil
цивилизованных нет. в [1] описан работающий, я так делаю с большим количеством на одной форме панелей alRight
← →
ЮЮ © (2007-11-30 03:04) [8]> Вообще я надеялся на наличие цивилизованных методов
"Цивилизованнее" будет не отключать/включать видимость, а устанавливать Heigh в 0/Восстанавливать Heigh. Нужный Heigh можно хранить, например, в Tag.
← →
ari_9 (2007-11-30 10:16) [9]ЮЮ
дык там ведь, наверное, и у самих панелей, и у компонентах на них, куча констрейтов ...
← →
ЮЮ © (2007-11-30 10:49) [10]procedure TForm1.Button2Click(Sender: TObject);
> дык там ведь, наверное, и у самих панелей, и у компонентах
> на них, куча констрейтов ...
Такой код вроде ничего не ломает у компонент на Panel2 с разными значениями Anchor.procedure TForm1.Button2Click(Sender: TObject);
begin
if Panel2.Tag = 0 then begin
Panel2.Tag := Panel2.Height;
Panel2.Height := 0;
end
else begin
Panel2.Height := Panel2.Tag;
Panel2.Tag := 0;
end;
end;
Да и наличие установленого Constraints.MinHeight не мешает.
← →
DevilDevil © (2007-11-30 15:59) [11]> ЮЮ © (30.11.07 03:04) [8]
Хороший способ. Спасибо.
Правда, я уже реализовал:
- отключить для всех компонентов свойство Align ( = alNone), в порядке убывания, иначе всё само перемешается.
- изменить Top-ы компонентов на требуемые (MoveWindow(Control.Handle, ..., False);
- иначе мерцание при многочисленном изменении Top-ов).
- возврат Align-значений.
P.S. Через Ж конечно... :)
Всем спасибо.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.05 c