AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Wie lösche ich zur Laufzeit erzeugte Images???

Wie lösche ich zur Laufzeit erzeugte Images???

Ein Thema von hoscha123 · begonnen am 27. Okt 2005 · letzter Beitrag vom 27. Okt 2005
Antwort Antwort
hoscha123

Registriert seit: 25. Okt 2005
Ort: Mülheim a.d. Ruhr
4 Beiträge
 
#1

Wie lösche ich zur Laufzeit erzeugte Images???

  Alt 27. Okt 2005, 11:07
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:
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;
vielen Dank schon mal im Voraus .... Horst
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Wie lösche ich zur Laufzeit erzeugte Images???

  Alt 27. Okt 2005, 11:15
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
  Mit Zitat antworten Zitat
hoscha123

Registriert seit: 25. Okt 2005
Ort: Mülheim a.d. Ruhr
4 Beiträge
 
#3

Re: Wie lösche ich zur Laufzeit erzeugte Images???

  Alt 27. Okt 2005, 11:19
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
  Mit Zitat antworten Zitat
schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#4

Re: Wie lösche ich zur Laufzeit erzeugte Images???

  Alt 27. Okt 2005, 11:35
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]
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
  Mit Zitat antworten Zitat
hoscha123

Registriert seit: 25. Okt 2005
Ort: Mülheim a.d. Ruhr
4 Beiträge
 
#5

Re: Wie lösche ich zur Laufzeit erzeugte Images???

  Alt 27. Okt 2005, 13:09
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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz