![]() |
Wie lösche ich zur Laufzeit erzeugte Images???
Hallo Leute,
bin ziemlich neu hier, also erstmal Gruß an alle und dann natürlich gleich ans Eingemachte. Die Fragestellung: Wie lösche ich zur Laufzeit erzeugte Images??? Beschreibung allgemein: Durchlaufe eine Datenbank mit den üblichen Controls. In Abhängigkeit eines Datenbankfeldes lasse dann die Images anzeigen. Beim 1.mal sind von mir aus 4 Images erzeugt worden. Beim 2.mal sind vielleicht nur 2 Images vorhanden. Angezeigt sind aber noch die letzten 4 Images. Wie bekomme ich also die ersten 4 Images wieder weg. Das ganze wird auf einem TabSheet-Control dargestellt.
Delphi-Quellcode:
vielen Dank schon mal im Voraus .... Horst
procedure hole_Images(tmpStr:String);
var sSymbol, sDateiname : string; myPos, myLength : integer; mySearchText : string; myImg: TImage; myLeft : integer; myTop : integer; myWidth : integer; myHeight : integer; begin begin myPos := 1; // Start für While-Schleife setzen, damit sie mindestens 1.mal durchlaufen wird mySearchText := sSymbol; // hier könnte sowas wie 'nr,af,er,tre ....' stehen (z.B. nr.jpg) myLength := Length(sSymbol); myLeft := 8; // Startposition der Images myTop := 280; myWidth := 80; // Größe des Images myHeight := 80; if myLength > 0 then // nur abarbeiten wenn Symbol-Text vorhanden ist begin while (myPos > 0) do // Solange durchfahren wie Text da ist begin myPos := pos(',', sSymbol); // Position des Trennungszeichens ermitteln if myPos = 0 then // kommt nur einmal vor begin tmpStr := sSymbol; // kommt nur mehrmals vor end else begin tmpStr := copy(sSymbol, 1, myPos - 1); // String herausfiltern end; sDateiname := tmpStr + '.jpg'; myImg := TImage.Create(Self); // neues Images erstellen with myImg do begin Left := myLeft; Width := myWidth; Height := myHeight; Top := myTop; parent := PageControl1.ActivePage; // Hier auf den richtigen Tabsheet setzen picture.LoadFromFile(sServer_Name + 'Symbole\' + sDateiname); // Hier mein Bild end; delete(sSymbol, 1, myPos); // String kürzen myLength := Length(sSymbol); // neue Länge des Strings bestimmen PageControl1.ActivePage.Refresh; // Anzeige auffrischen myLeft := myLeft + 88; // nächste Startposition eines Images end; end; end; end; |
Re: Wie lösche ich zur Laufzeit erzeugte Images???
Herzlich willkommen in der Delphi-PRAXiS, Horst.
Du packst also ein Bild auf jede Page eines PageControl? Wenn du beim Erzeugen der TImage-Komponente die Page als Owner festlegst, dann wird beim Zerstören der überzähligen Pages die jeweilige Image-Komponente mit zerstört. Grüße vom marabu |
Re: Wie lösche ich zur Laufzeit erzeugte Images???
Hallo marabu,
Nein. Es werden mehrere Images auf einen TabSheet angezeigt. Beim durchlaufen einer Datenbank mit einem Datacontrol bleibe ich auf dem gleichen Tabsheet. Wechsle also nicht den Tab. Gruß Horst |
Re: Wie lösche ich zur Laufzeit erzeugte Images???
Hallo hoscha123!
Zunächst Willkommen in der DP! Nimm doch eine TImagelist. In der speicherst Du Deine Bilder. 1. Methode: function AddIcon(Image: TIcon): Integer; //Icon in Liste 2. Methode: procedure Draw(Canvas: TCanvas; X, Y, Index: Integer); | | | | | ------------------- BildNr. in der Liste | | | ------------------------- Bildposition | ------------------------------------------ Die Zeichenfläche im TabSheet Viel Erfolg wünscht schöni [edit=Sharky]Doppelposting gelöscht. Mfg, Sharky[/edit] |
Re: Wie lösche ich zur Laufzeit erzeugte Images???
Hallo schöni ,
kann keine Imagelist benutzen, da ich jpg oder gif's anzeigen lassen will. Unabhängig davon ist die Anzahl der Images nicht bekannt(werden aus einer Datenbank gelesen). Könnte der Ansatz mit inherit der richtige sein??? Wenn ja, wie implementiere ich dieses in meinen Code. Weiterhin, wie oder wo zerstöre ich diese dann wieder (ginge ja wohl nur beim DataChange des Datacontrol, oder ?). Gruß Horst |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz