Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Вниз

Как получить список контролов   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.032 c
2-1132571540
Perf2k2
2005-11-21 14:12
2005.12.11
Пытаюсь вызвать процедуру показа формы FormShow, не получается :(


2-1132428043
Officeman
2005-11-19 22:20
2005.12.11
Edit1.text как запретить вводить буквы и разрешить цифры


14-1132296979
MBo
2005-11-18 09:56
2005.12.11
Пятничные задачки с участием несравненного Васи Пупкина ;)


2-1132303903
LionMen
2005-11-18 11:51
2005.12.11
Консольное приложение


2-1132504798
Seriy
2005-11-20 19:39
2005.12.11
Как Windows запоняет данными буфер, переданный в функцию?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский