Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.51 MB
Время: 0.033 c
14-1132214056
Карелин Артем
2005-11-17 10:54
2005.12.11
Определение пола автоматом.


3-1130399776
Slider007
2005-10-27 11:56
2005.12.11
Проблема с подключением к Firebird Imbedded 1.5


2-1133014055
_zx
2005-11-26 17:07
2005.12.11
??????


14-1132226125
dr Tr0jan
2005-11-17 14:15
2005.12.11
Кто помнит Basic?


2-1133005956
kami
2005-11-26 14:52
2005.12.11
Получение иконок типов файлов - как сделать быстрее?