Форум: "Основная";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];
ВнизСоздать 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c