Главная страница
    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
4-73470
ATLANTIDO
2002-03-23 01:24
2002.05.23
Попустить окно


7-73424
lipskiy
2002-02-25 16:18
2002.05.23
Как предотвратить ошибку EOleSysError для старой версии Shdocvw.dll (то есть, IE)?


1-73142
maxim2
2002-05-13 15:15
2002.05.23
Как передать массив из одной формы в другую


4-73465
vitall
2002-03-25 13:21
2002.05.23
Подскажите, где ошибка? Вроде все правильно, но не работает...


7-73429
avk
2002-02-22 10:43
2002.05.23
screenshot and DOS





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