Форум: "Основная";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
Внизalign Найти похожие ветки
← →
Димон (2005-02-10 12:31) [0]Добрый день.
Вопрос - почему присвоение Align = alClient контролу, у которого visible = false не имеет последствий (например, не меняется width) до той поры пока visible не станет равным true.
Пояснение к вопросу:
1. Есть Panel1, созданный в designtime, где Panel1.Visible := False, Panel1.Width = 200.
2. При выполнении такого кодаvar
kPanel: TPanel;
begin
kPanel := TPanel.Create(Self);
kPanel.Parent := Panel1;
ShowMessage(IntToStr(kPanel.Width));
//kPanel.HandleNeeded;
kPanel.Align := alClient;
ShowMessage(IntToStr(kPanel.Width));
Panel1.Visible := True;
ShowMessage(IntToStr(kPanel.Width));
end;
мы последовательно увидим сообщения 185, 185, 200.
Т.е. размер kPanel реально сменился только после Panel1.Visible := True;
3. Если снять комментарий то размер kPanel будет менять сразу после kPanel.Align := alClient.
Почему так происходит понятно - в классе TControl реакция на изменение Align отсутствует в случае отсутствия Handle у контрола, который появлятся, в частности, в момент показа контрола на экране.
Вопрос: чем противопоказан явный вызов HandleNeeded и есть ли иные более цивилизованные способы реакции на изменение Align, кроме приведенного мной.
Спасибо.
← →
КаПиБаРа © (2005-02-10 12:35) [1]Встречный вопрос. А зачем менять размер невидимой панели?
← →
Суслик © (2005-02-10 12:37) [2]
> Встречный вопрос. А зачем менять размер невидимой панели?
Динамическая настройка?
Мерцает иначе - контролов много.
← →
Anatoly Podgoretsky © (2005-02-10 14:30) [3]КаПиБаРа © (10.02.05 12:35) [1]
Вопрос неправильный, менять можно - если нужно, но не стоит ожидать никакой реакции, у невидимых контролов.
← →
Димон (2005-02-10 14:39) [4]
> Вопрос неправильный, менять можно - если нужно, но не стоит
> ожидать никакой реакции, у невидимых контролов.
Странно почему так.
Для оптимальности по скорости?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.04 c