Главная страница
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.5 MB
Время: 0.019 c
1-73167
Kopachev
2002-05-14 01:21
2002.05.23
Как напечатать текст


7-73410
Dmitry V. Averuanov
2002-02-25 18:47
2002.05.23
Как выключить ATX под DOS-ом ?


3-73066
Евгений Р.
2002-04-28 13:40
2002.05.23
Изменение структуры таблицы


3-73065
ExPl
2002-04-28 11:28
2002.05.23
Resize DBGrid а


1-73238
IronHawk
2002-05-09 01:05
2002.05.23
Приветствую Мастеров! Очень нужная задача, есть.