Objekt Überlagerung während der Laufzeit erstellter Objekte
-
Also folgendes Problem ich erstelle während der Laufzeit Objekte. Doch die scheinen sich jedes mal beim neuen aufruf zu überlagern wie bekomm ich die alten gelöscht ? hier mal mein Code dafür:
const int x = 12; const int iTopAway = 60; const int iLeftAway = 10; TImage *img[x]; TLabel *lab[x]; eindex_seite = cb_pages->ItemIndex; for (int i=0; i< x ; i++) { img[i] = new TImage(this); lab[i] = new TLabel(this); lab[i]->Caption = ""; img[i]->Parent = this; lab[i]->Parent = this; img[i]->Width = 100; img[i]->Height = 80; int z,y; z = (i / 5); y = (i % 5); img[i]->Left = y * 150 + iLeftAway; lab[i]->Left = 10 + y * 150 + iLeftAway; img[i]->Top = z * 120 + iTopAway; lab[i]->Top = 80 + z * 120 + iTopAway; img[i]->OnClick=Image1Click; try { if(eindex_seite != -1){ Query_bilder->SQL->Clear(); Query_bilder->SQL->Add("Select * from bilder where Num_Seite = :Num_Seite AND Seite = :Seite"); Query_bilder->Parameters->ParamByName("Seite")->Value = cb_pages->Items->Strings[eindex_seite]; Query_bilder->Parameters->ParamByName("Num_Seite")->Value = i+1; Query_bilder->Open(); } img[i]->Picture->LoadFromFile(Query_bilder->FieldByName("Bild")->AsString); }catch(EFOpenError &Fehler) { img[i]->Picture-> LoadFromFile("bilder_akrobatik\\blank.jpg"); } lab[i]->Caption = Query_bilder->FieldByName("Nummer")->AsString + " Value: " + Query_bilder->FieldByName("Value")->AsString; img[i]->Show(); };noch was wie kann ich von den erstellten TImages den Pfad auslesen ? ich will den weiterversenden wenn ich auf ein TImage klicke.
-
Fantasyfr schrieb:
Also folgendes Problem ich erstelle während der Laufzeit Objekte. Doch die scheinen sich jedes mal beim neuen aufruf zu überlagern wie bekomm ich die alten gelöscht ?
delete

Fantasyfr schrieb:
noch was wie kann ich von den erstellten TImages den Pfad auslesen ? ich will den weiterversenden wenn ich auf ein TImage klicke.
Den hast du doch schon.
img[i]->Picture->LoadFromFile(Query_bilder->FieldByName("Bild")->AsString);
-
Fantasyfr schrieb:
noch was wie kann ich von den erstellten TImages den Pfad auslesen ?
Zum dritten Mal: TImage/TPicture speichern keine Pfade, es lassen sich also auch keine Pfade daraus ermitteln.
Und zum zweiten Mal: siehe FAQ unter "Grafik".
Ebenfalls zum zweiten Mal: ein Thema pro Thread, ein Thread pro Thema!
-
Jansen schrieb:
Zum dritten Mal: TImage/TPicture speichern keine Pfade, es lassen sich also auch keine Pfade daraus ermitteln.
Also hilf dir doch z.B. so:
if (!Image->Tag) { String *Pfad = new String("bilder_akrobatik\\"); Image->Tag = int(Pfad); }Pfad wieder lesen:
if (Image->Tag) { String *Pfad = (String*)Image->Tag; }Vergiss nicht, wenn du das Image löscht, vorher das Stringobjekt, dessen Zeiger in der Tag-Eigenschaft steht, zu löschen.
-
Burkhi schrieb:
Also hilf dir doch z.B. so:
[...]Zitat aus der FAQ:
"Sofern das Bild zur Laufzeit geladen wird kannst du die Angaben bei Bedarf natürlich selbst zwischenspeichern".
-
Burkhi das ist genau das gleiche was gerade ein IHK Lehrer zu mir gesagt hat ich solle es mal mit TAG probieren :).
THX nochmal.
mensch Jansen bis ich das aus den FAQ gefunden habe bin ich alt und grau.
-
Zum wiederholten Mal:
Nimm TNamedImage!!!
1. mach ne Komponente - abgeleitet von TImage
2. private Variable AnsiString FFileName
3. ueberschreib LoadFromFile:
- speichert Dateiname in FFileName
- ruft geerbte Methode LoadFromFile auf
4. mach ne Property AnsiString FileNamevoila.
ueber TNamedImage->FileName kann der Pfad ausgelesen werden!