Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.029 c
9-1128964971
D3D
2005-10-10 21:22
2006.11.19
Half-Life Model Viewer


2-1162537219
WhiteBarin
2006-11-03 10:00
2006.11.19
Как сделать чтобы при загрузке была доступна только моя программа


15-1161882072
Real
2006-10-26 21:01
2006.11.19
cd boot error 0x073 - И винда не сетапится!


2-1162718590
leonidus
2006-11-05 12:23
2006.11.19
Как с помощью библиотеки TNT работать с UTF-8 ?


15-1162285919
Crazybeaver
2006-10-31 12:11
2006.11.19
Альтернатива FrontPage




   Наверх