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 FileName

    voila.

    ueber TNamedImage->FileName kann der Pfad ausgelesen werden!


Anmelden zum Antworten