Komponenten benutzen - zur Laufzeit erstellen, anzeigen und Events zuweisen
-
Wie kann ich eine TImage zur laufzeit ertslenn und auf meiner Form anzeigen und positionieren ?? Kann man objekte ertstellen die so heißen test[0] um dem Objekt nen index zu verpassen ??
[ Dieser Beitrag wurde am 02.07.2003 um 10:25 Uhr von Jansen editiert. ]
-
TImage *image = new TImage(Application);
image->Parent = Form1;
image->Width = 123;
image->Height = 321;usw... gugg mal unter TImage in die hilfe...
-
Du kannst immer auch ein Array von Komponenten erzeugen, auf dessen Elemente sich dann per Index zugreifen lässt:
const int x = 10; TImage *img[x]; for (int i = 0; i < x; i++) { img[i] = new TImage(this); img[i]->Parent = this; img[i]->Width = 32; img[i]->Height = 32; img[i]->Top = i * 35; ... img[i]->Show(); img[i]->Canvas->Brush->Color = clWhite; // nur zum Test }
[ Dieser Beitrag wurde am 11.07.2002 um 09:39 Uhr von Jansen editiert. ]
-
Wie kann ich denn solchen, zur laufzeit erzeugten objecten ein event zuweisen ?? zb. wenn ich klicke, das ich dann den Tag von alktuellen object als msgbox bekomme ??
-
Indem du z.B. bei einem button OnClick die Einsprungadresse zuweist:
Button1->OnClick = OnButton1Click;
wobei irgendwo da steht:
void __fastcall TForm1::OnButton1Click(TObject *Sender)
{
...
}-junix
-
und was ist wenn ich allen das gleiche event zuweisen will ??
-
Aha, also nimmst du doch meine Lösung aus dem anderen Thread *stolzbin*.
Also wenn du ALLEN TImages auf der Form dasselbe Event zuweisen willst, geht das so:
void __fastcall TForm1::Image1Click(TObject *Sender) { ShowMessage("test"); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { TComponent *comp; for(int i=0;i<this->ComponentCount;i++) { comp = this->Components[i]; AnsiString aClass = comp->ClassName(); if(aClass=="TImage") { TImage *img = ((TImage *)(comp)); img->OnClick = Image1Click; } } }
MfG
LD
-
hi,
um da mal Jansens Beispiel mal etwas zu erweitern:const int x = 10; TImage *img[x]; for (int i = 0; i < x; i++) { img[i] = new TImage(this); img[i]->Parent = this; img[i]->Width = 32; img[i]->Height = 32; img[i]->Top = i * 35; img[i]->OnClick=Image1Click; ... img[i]->Show(); img[i]->Canvas->Brush->Color = clWhite; // nur zum Test }
und dann Little.Daves:
void __fastcall TForm1::Image1Click(TObject *Sender) { ShowMessage("test"); } //---------------------------------------------------------------------------
ist ein wenig einfacher.
Ansonsten würde ich immer dynamic_cast vorziehen
-
danke leute habt mir echt gehofen.
*selbstnixkönnneidischsei*