Текущий архив: 2005.12.11;
Скачать: CL | DM;
ВнизКак получить список контролов Найти похожие ветки
← →
PavelP (2005-05-23 15:52) [0]Я пмшу компонент потомок TPanel.Каким образом мне получить список контролов, которые лежат на моём компоненте, как толь-ко они будут загружены из DFM файла.
← →
Reindeer Moss Eater © (2005-05-23 15:56) [1]property Controls[Index: Integer]: TControl;
← →
Reindeer Moss Eater © (2005-05-23 15:57) [2]property ControlCount: Integer;
← →
PavelP (2005-05-23 16:15) [3]TMyPanel = class(Tpanel)
private
FScroolBar: TScrollBar;
FStatusBar: TStatusBar;
FCount: Integer;
....
constructor TMyPanel.Create(AOwner: TComponent);
begin
FScroolBar := TScrollBar.Create(self);
FScroolBar.Parent := self;
FStatusBar := TStatusBar.Create(self);
FStatusBar.Parent := self;
FCount := ComponentCount;
end;
FCount := 2, т. к. другие компоненты ёщё не созданы,
← →
Reindeer Moss Eater © (2005-05-23 16:21) [4]И что?
Должно быть по другому?
← →
PavelP (2005-05-23 16:25) [5]Не должно. Вопрос как получить список?
← →
Reindeer Moss Eater © (2005-05-23 16:27) [6]Спроси лучше КОГДА получить список.
Потому что как получить список тебе уже ответили.
← →
PavelP (2005-05-23 16:29) [7]Когда ?
← →
Reindeer Moss Eater © (2005-05-23 16:30) [8]В методе Loaded
← →
PavelP (2005-05-23 16:35) [9]procedure TMyPanel.Loaded;
begin
inherited Loaded;
FCount := ComponentCount;
end;
Положил на панель 4 кнопки. FCount := 2 :(
← →
Reindeer Moss Eater © (2005-05-23 16:37) [10]Он у тебя перекрывает наследуемый метод loaded.
← →
Reindeer Moss Eater © (2005-05-23 16:39) [11]Либо просто собрать все заново c build all
← →
PavelP (2005-05-23 16:40) [12]TMyPanel = class(Tpanel)
private
FScroolBar: TScrollBar;
FStatusBar: TStatusBar;
FCount: Integer;
protected
procedure Loaded; override;
....
← →
Reindeer Moss Eater © (2005-05-23 16:43) [13]procedure TMyPanel.Loaded;
begin
inherited Loaded;
FCount := ComponentCount;
ShowMessage(IntToStr(ComponentCount));
end;
← →
Reindeer Moss Eater © (2005-05-23 16:45) [14]Да. Кстати.
Ты не сам ли вызываешь loaded?
Если сам - то ты не прав очень.
← →
PavelP (2005-05-23 16:45) [15]2
← →
Reindeer Moss Eater © (2005-05-23 16:46) [16][14] [11]
← →
PavelP (2005-05-23 16:48) [17]Билдел. Не вызываю. При помощи отладчика вижу, что создаётся столько кнопок, сколько надо. А процедуре Loaded ComponentCount
:= 2 :(
← →
Reindeer Moss Eater © (2005-05-23 16:51) [18]Так не бывает.
Правдоподобное объяснение - издержки тестирования недописанного компонента, который уже зарегистрирован в палитре.
← →
Reindeer Moss Eater © (2005-05-23 16:54) [19]Ну и еще один вопрос.
Сам экземпляр панели создается тоже вызовом конструктора в раентайме?
← →
PavelP (2005-05-23 17:00) [20]Вообще-то панель уже в палитре. А это критично?
← →
Reindeer Moss Eater © (2005-05-23 17:03) [21]Если в палитре, значит она в каком-то dpk.
И соответствующий ему bpl не обязательно пересобирается при изменении кода панели.
То есть пишется один код, а реально выполняется другой.
← →
Юрий Зотов © (2005-05-23 17:04) [22]Э-э-э... уважаемые участники, а при чем же тут ComponentCount?
Все компоненты, положенные в design-time имеют владельцем форму, даже если их и клали на панели или еще куда. Поэтому ComponentCount для панели будет равен нулю (в данном случае он равен 2 лишь потому, что два компонента создаются кодом конструктора и имеют владельцем панель - cм. [3]).
Правильные ответы - [2] и [8].
← →
Reindeer Moss Eater © (2005-05-23 17:08) [23]ComponentCount - это мой копи-пасте.
Конечно же Controls и СontrolCount.
← →
PavelP (2005-05-23 17:08) [24]Я компилю MYPanel.dpk . Mypanel.bpl пересобирается. По крайней мере дата у файла изменяется.
← →
PavelP (2005-05-23 17:10) [25]Всем спасибо! Действительно ControlCount.
Страницы: 1 вся ветка
Текущий архив: 2005.12.11;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.041 c