Форум: "Основная";
Текущий архив: 2003.06.02;
Скачать: [xml.tar.bz2];
ВнизДинамическое создание компонентов Найти похожие ветки
← →
Jaxtor (2003-05-21 14:55) [0]Как избавиться от ошибки в
var Cb: TComboBox;
Cb:=TCombobox.Create(Self);
Cb.Parent:=Self;
Cb.Left:=150;
Cb.Top:=50;
Cb.Name:="CategoryComboBox";
Cb:=TCombobox.Create(Self);
Cb.Parent:=Self;
Cb.Left:=150;
Cb.Top:=80;
Cb.Name:="VendorComboBox";
//Вот здесь возникает ошибка!
[Error] Parameters.pas(64): Undeclaredidentifier: "CategoryComboBox"
CategoryComboBox.Items.Clear;
← →
Юрий Федоров (2003-05-21 15:00) [1]Либо так :
var CategoryComboBox: TComboBox;
VendorComboBox : TComboBox;
CategoryComboBox:=TCombobox.Create(Self);
CategoryComboBox.Parent:=Self;
CategoryComboBox.Left:=150;
CategoryComboBox.Top:=50;
CategoryComboBox.Name:="CategoryComboBox";
VendorComboBox:=TCombobox.Create(Self);
VendorComboBox.Parent:=Self;
VendorComboBox.Left:=150;
VendorComboBox.Top:=80;
VendorComboBox.Name:="VendorComboBox";
Либо :
(FindComponent("CategoryComboBox") as TComboBox).Items.Clear;
← →
Jaxtor (2003-05-21 15:01) [2]Thanks
← →
VMcL (2003-05-21 15:01) [3]А если подумать?
← →
Ihor Osov'yak (2003-05-21 15:03) [4]CategoryComboBox не есть идентификатором. Это имя компонента.
Возможно делать вызов CB.Items.Clear; сразу после создания - но это лишнее - список и так пуст тогда.
Если нужно делать очистку позже - то нужно какую-то переменную для хранения указателя на соотв. екземпляр. Или сделать поиск в списке компонентов формі по имени.. Да много каких способов есть..
← →
CABBA (2003-05-22 12:20) [5]А мне кажется, что идентификаторы в Паскале - это все те имена, которые указываются в программе. Когда мы создаем компонент в DesignTime, а потом переименовываем, то просто меняется имя в описании формы, на которой он "лежит". Я не пробовал (сейчас негде), но разве можно написать следующее:
fmMyForm.Name:= "fmNew_Name_Of_MyForm";
??? По-моему, все такие попытки тщетны.
← →
Palladin (2003-05-22 12:37) [6]
> CABBA © (22.05.03 12:20)
Name это свойство, не вижу никаких факторов препятствующих установлению ему значения
← →
namor (2003-05-22 14:15) [7]Ничего удивительного...
Сначала
Cb.Name:="CategoryComboBox";
затем
Cb.Name:="VendorComboBox";
CategoryComboBox уже нет, ты переименовал его в Vendor
см. решение Юрия Фёдорова...
← →
Palladin (2003-05-22 14:20) [8]маразм крепчал :)
> namor © (22.05.03 14:15)
ты мудр до нельзя, его не то что бы нет, его никогда и не было...
как избавится от ошибки? :) очень просто
> Jaxtor © (21.05.03 14:55)
var Cb: TComboBox;
Cb:=TCombobox.Create(Self);
Cb.Parent:=Self;
Cb.Left:=150;
Cb.Top:=50;
Cb.Name:="CategoryComboBox";
Cb:=TCombobox.Create(Self);
Cb.Parent:=Self;
Cb.Left:=150;
Cb.Top:=80;
Cb.Name:="VendorComboBox";
TComboBox(Self.FindComponent("CategoryComboBox")).Items.Clear;
это первое, а второе накой черт его clear если он создан 6 строчек назад только?
← →
KSergey (2003-05-22 16:13) [9]> CABBA © (22.05.03 12:20)
> А мне кажется, что идентификаторы в Паскале - это все те
> имена, которые указываются в программе. Когда мы создаем
Боже упаси сказать вам такое в обществе. Не поймут. Могут и набить.
PS: это просто IDE так делает, реально же имя переменной, которой присвоена ссылка на объект (в данном случае это Cb), никак не связана со сначением свойства Name этого объекта.
PPS: а может IDE зря так делает? Стандартное же заблуждение начинающих... Да и нафиг это Name вообще нужно? Мне как-то сомнительна его надобность, кроме как для нужд IDE...
← →
KSergey (2003-05-22 16:16) [10]http://www.delphikingdom.com/helloworld/runtime_comp.htm
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c