Форум: "Основная";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
ВнизОтображение компонентов на форме Найти похожие ветки
← →
Salik © (2004-06-21 11:32) [0]Добрый день! На форме одна под другой расположены 10 компонентов Panel. При открытии формы - панели Viseble:=false. Пользователь выбирает, из меню какие панели отобразить на форме(например 5, 8, 10), и панели должны отобразиться точно одна под другой.
Можно реализовать это с помощью if, перебирать какие панели открыты, какие нет и в зависимости от этого присваивать координаты панели
if CheckBox2.Checked then// Открыть 2 панель
begin
Panel2.Visible:=true;
if CheckBox1.Checked then //если открыта 1 панель
begin
Panel2.Left:=0;
Panel2.Top:=Panel1.Height;
Panel2.Width:=Form1.Width;
end
else
begin
Panel2.Left:=0;
Panel2.Top:=0;
Panel2.Width:=Form2.Width;
end;
end;
Но при открытии уже 4 формы код становится огромным и запутаным, короче ни какой оптимизации....
Подскажите, может усть др. способы решения проблемы?
← →
Рамиль © (2004-06-21 11:36) [1]Панели должны быть в массиве, или через Form.Components. Наращиваешь координаты в цикле, пропуская невидимые панели.
← →
Семен Сорокин © (2004-06-21 11:40) [2]
var
_i : integer;
_top: integer;
mas : array [1..10] of TPanel;
...
mas[1] := Panel1;
...
mas[10] := Panel10;
_top := 0;
for _i := 1 to 10 do
if TCheckBox(self.FindComponent("CheckBox" + IntToStr(_i))).Checked then begin
mas[_i].Visible := true;
mas[_i].SetBounds(_top, ...);
inc(_top, mas[_i].Height)
end;
← →
Романов Р.В. © (2004-06-21 11:42) [3]Создай массив панелей, и процедуру настройки размеров. В процедуре цикл по панелям где устанавливается расположение в зависимости от условий ее видимости.
← →
Mim1 © (2004-06-21 11:42) [4]может их выравнивать при помощи align
← →
Salik © (2004-06-21 11:46) [5]>>Рамиль
>>Семен Сорокин
Спасибо за наводку, пойду в этом направлении
← →
Rem (2004-06-21 12:28) [6]см. [1]
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.032 c