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

Вниз

Создать TComboBox.   Найти похожие ветки 

 
JC   (2002-05-09 00:12) [0]

Нужно создать TComboBox, но Run-Time и без формы. Всё бы да ничего, но когда начинаю присваивать элементы списка начинаются глюки, типа у Parent"a моего ComboBox(это Panel) нет в свою очередь своего Parent"a. Не работает ни ComboBox.Items.Text, ни Add, ни Strings[] :(


 
ION T   (2002-05-09 00:40) [1]

Извиняюсь, а куда без формы-то добавляется комбик, а?


 
JC   (2002-05-09 01:18) [2]

Так там форма на основе TSaveDialog зделана, и мне надо туда свой ComboBox втулить.


 
Song   (2002-05-09 10:18) [3]

Так всё-таки форма есть?


 
JC   (2002-05-09 12:44) [4]

Форма всё-таки создаётся динамически.


 
Song   (2002-05-09 21:46) [5]

ComboBox:=TComboBox.Create(ваша_форма);


 
JC   (2002-05-10 13:44) [6]

Это я пишу, потом
ComboBox.Parent:=panel;
ComboBox.Items.Add("1");
-вот тут и ругается
...


 
MBo   (2002-05-10 13:48) [7]

А что за panel?


 
JC   (2002-05-11 01:20) [8]

Писал на C++Builder, перевожу:
panel:=TPanel.Create([this]@Self);
panel.Name:="Panel";
panel.Caption:="";
panel.SetBounds(0,100, 200,77);
panel.BevelOuter:= bvNone;
panel.TabOrder:= 1;

// дальше идут объявления CheckBox"a, Label"a Edit"a - пока работает
// а вот и ComboBox

Placement:=TComboBox(panel);
Placement.Name:="Corner";
Placement.Parent:=panel;
Placement.Left := 75;
Placement.Top := 46;
Placement.Width := 110;
Placement.Height := 21;
Placement.ItemHeight := 13;
Placement.TabOrder := 5;
Placement.Items.Add("1");-
вот тут и ругается


 
MBo   (2002-05-11 08:22) [9]

panel:=TPanel.Create([this]@Self);
panel.PArent:=This; // какже без этого?
panel.Name:="Panel";

Placement:=TComboBox .Create(panel);

Пока нет Parent по всей иерархии, окно (в win-смысле) комбобокса не создается, не имеет Handle (hWnd) и к элементам списка обращаться НЕЛЬЗЯ.




 
Севостьянов Игорь   (2002-05-11 11:38) [10]

Placement:=TComboBox(panel); - это приведение к типу TComboBox

Placement:=TComboBox.Create(panel); - это создание


 
JC   (2002-05-11 17:48) [11]

Placement:=TComboBox(panel);-это я ошибся, конечно-же
Placement:=TComboBox.Create(panel);

MBo
> panel.PArent:=This; // какже без этого?

оказывается можно посмотри в Delphi\Source\Vcl\extdlgs.pas(это TOpenPictureDialog и TSavePictureDialog). В Create все Panel"и не имеют Parent"a, а другие элементы имеют Parent"ом Panel"и.
Да и вот без Placement.Items.Add() всё работает. Если кто-нибудь понимает C++Builder вот полный исходник:

[DialogEx.cpp]

__fastcall TOpenDialogEx::TOpenDialogEx(TComponent * Owner) : TSaveDialog(Owner)
{
panel=new TPanel(this);
// panel->Parent=Form1->OD;
panel->Name="MyPanel";
panel->Caption="";
panel->SetBounds(0,100, 200,77);
panel->BevelOuter= bvNone;
panel->TabOrder= 1;
// panel->Parent=this;

AddDot=new TCheckBox(panel);
AddDot->Parent=panel;
AddDot->Left=9;
AddDot->Width=121;
AddDot->Top=3;
AddDot->Caption="Добавлять точки";
AddDot->Checked=true;
AddDot->TabOrder= 2;

AddIIm=new TCheckBox(panel);
AddIIm->Parent=panel;
AddIIm->Left=9;
AddIIm->Width=200;
AddIIm->Top=27;
AddIIm->TabOrder= 3;
AddIIm->Caption="Добавлять исходное ихображение";
AddIIm->Checked=true;

SizeL=new TLabel(panel);
SizeL->Parent=panel;
SizeL->Left = 249;
SizeL->Top = 27;
SizeL->Width = 38;
SizeL->Height = 13;
SizeL->Caption = "размер:";

Place=new TLabel(panel);
Place->Parent=panel;
Place->Left = 9;
Place->Top = 51;
Place->Width = 58;
Place->Height = 13;
Place->Caption = "Положение";

Scale=new TEdit(panel);
Scale->Parent=panel;
Scale->Left = 296;
Scale->Top = 22;
Scale->Width = 42;
Scale->Height = 21;
Scale->TabOrder = 4;
Scale->Ctl3D=true;
Scale->Text = "10%";

Placement=new TComboBox(panel);
Placement->Name="Corner";
Placement->Parent=panel;
// Placement->Items->Add("Правый Верхний");
Placement->Left = 75;
Placement->Top = 46;
Placement->Width = 110;
Placement->Height = 21;
Placement->ItemHeight = 13;
Placement->TabOrder = 5;

}


[DialogEx.h]

class TOpenDialogEx : public TSaveDialog
{
public:
virtual __fastcall TOpenDialogEx(TComponent * Owner);
virtual __fastcall ~TOpenDialogEx();
virtual bool __fastcall Execute();
protected:
DYNAMIC void __fastcall DoShow();
DYNAMIC void __fastcall DoSelectionChange();
void __fastcall ReadDescription();
TPanel *panel;
TComboBox *Placement;
TCheckBox *AddDot, *AddIIm;
TLabel *SizeL,*Place;
TEdit *Scale;
};



 
MBo   (2002-05-11 18:13) [12]

а
FPicturePanel.ParentWindow := Handle;
тебе, конечно, не указ ;)


 
JC   (2002-05-12 00:18) [13]

MBo
Спасибо, там правда есть один тонкий момент, это надо добавлять в OnShow(), а так пока работает. :-)



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

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

Наверх




Память: 0.47 MB
Время: 0.006 c
3-73006
jonik pegas
2002-04-25 14:23
2002.05.23
Null в поле Integer


6-73352
Aaz
2002-02-26 10:41
2002.05.23
Связь с Интернетом. Выделенная линия.


4-73436
Rammst
2002-03-19 06:17
2002.05.23
Программа поверх всех окон


14-73362
Masa
2002-04-15 11:35
2002.05.23
English please...


1-73307
com6
2002-05-12 08:09
2002.05.23
Как открыть текстовой файл из проги в Delphi в нотепаде





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский