![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблма при создании компонента Delphi!! (HELP!!) [D6, Win2k]
XDefender © (2002-11-19 16:01:00)Так вот.
Пишу свой компонент, наследник от TPanel.
В методе Create пишу.
constructor TMyRichEdit.Create;
Begin
inherited;
ComboBox_Font:=TComboBox.Create(Owner);
ComboBox_Font.Width:=150;
ComboBox_Font.Left:=50;
ComboBox_Font.Top:=1;
ComboBox_Font.Items.Add("Arial"); <- ВОТ ТУТ ВОЗНИКАЕТ ОШИБКА... Почему - не знаю
ComboBox_Font.Items.Add("Times New Roman");
ComboBox_Font.Items.Add("Verdana");
ComboBox_Font.Items.Add("Tahoma");
ComboBox_Font.Items.Add("Symbol");
end;
Когда я размещаю на форме этот компонент, возникает ошибка, притом в указанной строке. Почему - не знаю.
ошибка:
Access violation at adress 05CE52EF0 in module "MyRichEdit_d6.bpl". Read of Adress 0000000.
Да, еще, если я пишу
ComboBox_Font:=TComboBox.Create(Self);
тогда создание также не происходит...
Так вот, дайте рекомендации... что делать...
Я хочу для себя сделать визуальный компонент, на основе TPanel, на котором будут размещены RxRichEdit, еще тулбар для редактирования...
MBo (2002-11-20 06:11:00) [1]>asmith
не путай человека. Список строк создастся сам, но лишь после создания окна комбобокса.
>XDefender
безразлично, но imho, все же логичнее создать в Create, а заполнить в CreateWnd
asmith (2002-11-19 20:55:00) [2]Просто Items есть объект типа TStrings и должен создаваться перед добавлением строк в него. В конструкторе класса TCustomComboBox есть, например, такая строчка:
FItems := TComboBoxStrings.Create;
XDefender (2002-11-19 18:50:00) [3]
> ComboBox_Font.Items.Add("Arial");
> ComboBox_Font.Items.Add("Times New Roman");
> ComboBox_Font.Items.Add("Verdana");
> ComboBox_Font.Items.Add("Tahoma");
> ComboBox_Font.Items.Add("Symbol");
>
> Надо бы писать в
> TMyRichEdit.CreateWnd;
> begin
> inherited CreateWnd;
> //.............далее по тексту...
> end;
т.е. мне лучше создание и присвоение данных онных компонентов лучше делать в
procedure TMyRichEdit.CreateWnd;
Begin
inherited;
....
end;
или там нужно делать только присваивание?
MBo (2002-11-19 16:10:00) [4]Кстати, еще и не установлен Parent Combobox-а
Skier (2002-11-19 16:08:00) [5]>XDefender
1) Нет родителя у ComboBox_Font
2)
ComboBox_Font.Items.Add("Arial");
ComboBox_Font.Items.Add("Times New Roman");
ComboBox_Font.Items.Add("Verdana");
ComboBox_Font.Items.Add("Tahoma");
ComboBox_Font.Items.Add("Symbol");
Надо бы писать в
TMyRichEdit.CreateWnd;
begin
inherited CreateWnd;
//.............далее по тексту...
end;
MBo (2002-11-19 16:06:00) [6]в момент работы конструктора еще не существует окна combobox, поэтому перекрой CreateWnd и добавляй строки в нем.