Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.19;
Скачать: CL | DM;

Вниз

Проблема с Items   Найти похожие ветки 

 
Neo Trinitron ©   (2006-03-21 11:08) [0]

Уважаемые Мастера! Столкнулся с такой проблемой: создаю компоненту - наследник TLabel. На неё помещаю TCheckBox и TComboBox. На этом этапе компонента работает нормально. Однако при помытке добавить ITems в ComboBox выдаёт ошибку: "Component "" has no parent window". Почему так? Вот код конструктора:


begin
  inherited Create(AOwner);
  CB:=TCheckBox.Create(Self);
  FComb:=TComboBox.Create(Self);
  CB.Parent:=Self;
  FComb.Parent:=Self;

  FComb.Items.Add(">");
  FComb.Items.Add(">=");
  FComb.Items.Add("<");
  FComb.Items.Add("<=");
  FComb.Items.Add("=");
  FComb.Items.Add("<>");
  FComb.Items.Add("like");

  .....


ЗЫ: Сама компонента компилится нормально. Может чего криво написал - новичок в этом, буду признателен за замечания.


 
Reindeer Moss Eater ©   (2006-03-21 11:15) [1]

Почитай документацию кто может быть парентом.


 
Юрий Зотов ©   (2006-03-21 11:20) [2]

> Neo Trinitron ©   (21.03.06 11:08)  

> На неё помещаю TCheckBox и TComboBox.
Это невозможно. См. [1].

> CB.Parent:=Self;
> FComb.Parent:=Self;
Обе этих строки ошибочны. См. [1].


 
Neo Trinitron ©   (2006-03-21 11:38) [3]

> CB.Parent:=Self;
> FComb.Parent:=Self;
>Обе этих строки ошибочны. См. [1].

Убрал эти строки. Parentом по идее должен быть тот обьект на котором расположены эти компоненты. Кто же если не Self?


 
Neo Trinitron ©   (2006-03-21 11:39) [4]

ЗЫ: По-прежнему не работает.


 
Reindeer Moss Eater ©   (2006-03-21 11:40) [5]

>ЗЫ: По-прежнему не работает.
И не должно.


 
clickmaker ©   (2006-03-21 11:42) [6]


> Neo Trinitron ©   (21.03.06 11:39) [4]

Label не может быть парентом. Только Owner"ом. Почему - F1


 
Юрий Зотов ©   (2006-03-21 11:58) [7]

> Neo Trinitron ©   (21.03.06 11:38) [3]

Parent"ом может быть ТОЛЬКО TWinControl. А TLabel - это TGraphicControl. Поместить на него никакой другой контрол невозможно.


 
Neo Trinitron ©   (2006-03-21 12:07) [8]

>Поместить на него никакой другой контрол невозможно.

Но без Items.Add всё работает красиво...Как же грамотно поступить? Неужели в Delphi нельзя делать такие незамысловатые компонетны?


 
Reindeer Moss Eater ©   (2006-03-21 12:09) [9]

CB.Parent:=Self.Parent;


 
Neo Trinitron ©   (2006-03-21 12:25) [10]

>CB.Parent:=Self.Parent;

И так не хочетъ...


 
Reindeer Moss Eater ©   (2006-03-21 12:32) [11]

Значит у твоего лэйбла на этот момент нет парента.
Иди кури букварь уже.


 
Юрий Зотов ©   (2006-03-21 13:36) [12]

> Neo Trinitron ©   (21.03.06 12:07) [8]
> Неужели в Delphi нельзя делать такие незамысловатые компонетны?

Можно, только действительно нужно знать тот самый букварь, который Вам усиленно советуют таки прочитать. Например, возьмите панель (или фрейм) и там помещайте все, что угодно.


 
icWasya ©   (2006-03-21 19:22) [13]

Вообще говоря, большая часть функциональности TCombobox реализуется средствами WIN API. В том числе и забота с TCombobox.Items - все Itemsы хранятся внутри виндусовского комбобокса. И только после того, как у него создастся окно(Handle).
Выход:
1) как уже говорили, наследовать Вашу компоненту от какого-нибудь потомка TWinControl;
2) переопределить метод CreateWnd, например так


type
 TMyLabel=Class(...)
 ...
 procedure CreateWnd;override;

...

procedure TMyLabel.CreateWnd;
begin
 inherited;

 FComb.Parent:=Self;// из конструктора убрать

 if FComb.Items.Count>0 then Exit;
 FComb.Items.Add(">");// и эти строки из конструктора убрать
 FComb.Items.Add(">=");
 FComb.Items.Add("<");
 FComb.Items.Add("<=");
 FComb.Items.Add("=");
 FComb.Items.Add("<>");
 FComb.Items.Add("like");
 
end;



Страницы: 1 вся ветка

Текущий архив: 2006.11.19;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.044 c
15-1162368065
Slider007
2006-11-01 11:01
2006.11.19
Чисто человеческий вопрос. Автошкола.


2-1162559344
heady
2006-11-03 16:09
2006.11.19
"Handle" из какого модуля?


3-1158662881
SergP
2006-09-19 14:48
2006.11.19
Oracle и Port Mapping. Не могу подключиться...


1-1160182107
Doma
2006-10-07 04:48
2006.11.19
Как задать порядок присвоения св-в компоненты при создании?


15-1162075852
Petr V.Abramov
2006-10-29 02:50
2006.11.19
и че народ на стеки потянуло последние дни...