![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
простой вопрос по RTTI [D4, D5, D6, D7, D2005, 2000, XP]
Morpheus © (2008-12-14 19:55:00)Есть две процедурки.
Первая: создает контролы - панельки, задает им имя по типу: (el as TPanel).name:= 'Panel' + IntToStr(i).
Вторая должна создавать всякие кнопки, поля, переключатели и так далее.
Непосредственно вопрос: как указывать имя родительского компонента, если это просто строка? Есть ли функция преобразование типа string в TComponentName?
Morpheus (2008-12-14 21:21:00) [1]Сергей М.
Спасибо, это то, что было нужно
Сергей М. (2008-12-14 20:50:00) [2]NewEdit.Parent := TWinControl(MyForm.FindChildControl('PanelN'));
Morpheus (2008-12-14 20:33:00) [3]Сергей М.
Может подскажите, как это использовать? У меня любые эксперименты с этим методом вылетают на "Access violation".
Сергей М. (2008-12-14 20:29:00) [4]
> он возвращает тип TContol
TControl есть прямой наследник TComponent
Morpheus (2008-12-14 20:28:00) [5]Сергей М.
Вопрос всего-навсего заключается в том, как поместить элемент на панель.
NewEdit: TEdit.Create(self)овнер форма, так удобнее для дальнейшей работы
NewEdit.Parent:= Panel + i??????????
Дву процедуры потому, что два SQL-запроса, в одной процедуре пришлось бы вызывать запросы в цикле.
Morpheus (2008-12-14 20:20:00) [6]Нашел некий метод для общего родителя
FindChildControl(ControlName: string)который и ожидал по логике найти, но он возвращает тип TContol.
Сергей М. (2008-12-14 20:15:00) [7]
> Первая: создает контролы
> Вторая должна создавать всякие кнопки, поля, переключатели
> и так далее
Эти "и так далее" точно такие же контролы. Зачем, спрашивается, две "процедурки" ?
> как указывать имя родительского компонента, если это просто
> строка?
Имя и есть строка.
> Есть ли функция преобразование типа string в TComponentName?
type TComponentName = type string;
Преобразовывать ничего не надо.