dynamisch erstellte Image
-
Hallo,
//
mit diesem Code erstelle ich meine Image während der Laufzeitint XX; // XX = NewTImage.Length; NewTImage.Length++; NewTImage[XX] = new TImage(this); NewTImage[XX]->Left = ImageX; NewTImage[XX]->Top = ImageY; NewTImage[XX]->Width = ImageWidth; NewTImage[XX]->Height = ImageHeight; NewTImage[XX]->Tag = XX; NewTImage[XX]->Picture->LoadFromFile(asSym); NewTImage[XX]->OnClick = NewTImageOnClick; NewTImage[XX]->Parent = this; NewTImage[XX]->Show(); //--------------------------------------------------------------------------- //hier werte ich den Maus-Click aus
void __fastcall TmyFormNewGleisbild::NewTImageOnClick(TObject* Sender) { int iIndexSender = dynamic_cast<TImage*>(Sender)->Tag; NewTImage[iIndexSender]->Transparent = true; // z.B. } //---------------------------------------------------------------------------Zur Zeit benutze ich von TImage den ->Tag als Count. Beim erstellen wird ein Count " XX " benötigt. Wie kann ich im OnClick-Ereignis diesen "Count der Image " ermitteln ?
Gruß Siegfried
-
Indem du die Variable XX global deklarierst, oder besser als Member der Form. Damit ist sie von "überall" aus erreichbar.
Oder du iterierst durch alle TImage-Instanzen und wertest deren Tag-Property aus
-
Hallo,
Wenn ich " Variable XX global deklarierst " habe ich doch nur global die Gesamtanzahl der Image zu verfügung. Wenn ich zum Beispiel Image 3 OnClick auswerten will, weis ich immer noch nicht, welchen Count-Wert( XX ) diese hat. Also doch ->Tag auswerten. Oder sehe ich dies falsch?
Gruß Siegfried
-
Vielleicht solltest du versuchen, dein Problem bzw. deine Absichten auf Deutsch statt auf Denglisch zu beschreiben. Dann würde vielleicht klar werden, was du z.B. mit "Count der Image" eigentlich meinst.
Oder ob du im OnClick überhaupt den Index benötigst. Denn normalerweise sollte folgendes ausreichen:void __fastcall TmyFormNewGleisbild::NewTImageOnClick(TObject* Sender) { TImage *img = dynamic_cast<TImage*>(Sender); if (img) img->Transparent = true; }
-
Hallo
Ich vermute Beppo will wissen, ob es möglich ist den Wert von XX auch ohne den Tag-Zwischenspeicher zu ermitteln. Und da ist die Frage ganz klar nein. Du konntest allenfalls die Indexe noch irgendwo anders ablegen (zum Beispiel std::map<TImage, int>* ), aber das hat keinen großen Sinn.
Und meistens solltest du eh ohne den Index auskommen, wie Jansen gezeigt hat.
bis bald
akari
-
Hallo,
also, doch ->Tag nutzen wenn nötig.
Gruß Siegfried