Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];

Вниз

Проблема с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.033 c
2-1162308301
daser
2006-10-31 18:25
2006.11.19
Что неправильно в строке?


15-1162473263
Leva
2006-11-02 16:14
2006.11.19
Подскажите как решить проблему?


2-1162358799
apic
2006-11-01 08:26
2006.11.19
TPersistent


2-1162462552
Dan19845
2006-11-02 13:15
2006.11.19
Люди помогите свернуть программу в SystemTray


1-1160584058
dracula
2006-10-11 20:27
2006.11.19
ListView c CheckBox ами





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский