Вниз
Скачать: CL | DM;

Порядок 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.011 c
2-1196152756
Ростик
2007-11-27 11:39
2007.12.23
Как правильно записывать числа типа флоат


6-1176654315
privet2005
2007-04-15 20:25
2007.12.23
Клиент-сервер с одновременным подключением 100-1000 пользователей


2-1196549267
bobby
2007-12-02 01:47
2007.12.23
Помещение архива в БД MsSQL


15-1195569942
Stanislav_
2007-11-20 17:45
2007.12.23
Админу


15-1195998290
Kostafey
2007-11-25 16:44
2007.12.23
Как сравнить директории




   Наверх