Главная страница
    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.041 c
2-1132441298
Vadim14
2005-11-20 02:01
2005.12.11
доступ к PCI


6-1125377105
Laymer
2005-08-30 08:45
2005.12.11
сокет сервер


14-1132558756
ПЛОВ
2005-11-21 10:39
2005.12.11
Есть тут знатоки С


2-1132748523
tytus
2005-11-23 15:22
2005.12.11
Помогите примером


14-1132434893
Andy BitOff
2005-11-20 00:14
2005.12.11
Неизвестный вор украл у ФСБ один из военных трофеев





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский