Форум: "Компоненты";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];
ВнизИменовать сабкомпоненту Найти похожие ветки
← →
--= Eagle =-- © (2006-11-24 13:40) [0]Доброго времени суток ещё раз.
Столкнулся ещё с одной траблой - в компоненте есть сабкомпонента, которой обязательно нужно назначить имя, чтобы её уже сабкомпоненты сохранялись и загружались правильно. У этой сабкомпоненты owner"ом является форма (или фрейм), так же как и у основной компоненты. Вобщем, осталось подобрать удобный случай для именования, т.к. если именовать в конструкторе, то при загрузке формы выскочит ошибка - такой компонент уже существует. Получение уникального имени происходит таким образом:function TMainComponent.GetUniqueName: String;
var
I: Integer;
begin
for I := 0 to Owner.ComponentCount do // not "count-1" because we need to return unique name
begin
Result := "MySubComponentName" + IntToStr(I);
if Owner.FindComponent(Result) = nil then Break;
end;
end;
Вобщем, было бы неплохо именовать компоненту только тогда, когда она была реально положена на форму в дизайнере, при последующих загрузках и при создании в рантайме именовать компоненту не нужно. Естественно, что варианты csDesigning и csLoading in ComponentState в конструкторе уже рассматривались и не подошли...
← →
DimaBr (2006-11-24 15:22) [1]Создавайте панели в дизайнере
procedure TMyPanelEditors.ExecuteVerb(Index: integer);
var APanel: TMySubPanel;
begin
case Index of
0: with TMainPanel(Component) do begin
APanel := Designer.CreateComponent(TMySubPanel,Component,0,0,100,100) as TMySubPanel;
end;
else inherited ExecuteVerb(Index);
end;{case}
end;
← →
DimaBr (2006-11-24 15:24) [2]Уже язык отваливается !!!!
Не изобретайте велосипед. Пользуйтесь готовым кодом
http://delphimaster.net/view/5-1162824958/
← →
--= Eagle =-- © (2006-11-24 17:17) [3]Спасибо, решил немного другим способом, но тем не менее спасибо за идею, имено она дала нужный толчёк :)
← →
--= Eagle =-- © (2006-11-24 17:24) [4]P.S. DimaBr, вообще-то я не делал создание в дизайнтайме, я его там переименовывал :) Но за идею воспользоваться компонент-эдитором - спасибо.
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c