Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
6-73333
Programmer1
2002-03-12 16:37
2002.05.23
Создание сетевого диска


1-73203
Демон
2002-05-14 16:16
2002.05.23
Про OnKeyPress


1-73117
JC
2002-05-07 21:11
2002.05.23
Где можно найти, что-то типа


1-73167
Kopachev
2002-05-14 01:21
2002.05.23
Как напечатать текст


6-73321
Semen Pleshivtsev
2002-02-19 18:06
2002.05.23
Выделение фразы цветом в TWebBrowser ? Help!





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