Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Daten aus Datenbank zu TImage32-Komponenten hinzufügen (https://www.delphipraxis.net/214923-daten-aus-datenbank-zu-timage32-komponenten-hinzufuegen.html)

banaguitar 4. Apr 2024 22:06

Daten aus Datenbank zu TImage32-Komponenten hinzufügen
 
Hallo,

ich habe eine Art Fotogalerie, die aus mehreren TImage32/TImgView32-Komponenten (Graphics32-Bibliothek) besteht und dynamisch erzeugt werden, da die Anzahl der Fotos pro Datensatz variiert.
Die Bilder werden zunächst als Vorschaubilder in einem TGridPanel dargestellt. Jetzt muss ich ja irgendwie die Daten wie ID, Pfadname usw. aus der SQL-Abfrage dem jeweiligen Bild zuordnen.
Die Combobox- und Listbox-Komponente erlauben es ja, zusätzliche Daten mittels der AddObject-Methode zu den Items hinzuzufügen. Das finde ich sehr praktisch und nutze ich persönlich sehr häufig.

Wie mache ich das jetzt aber beim TImage32, da gibt es diese Methode ja nicht.

Ich hoffe, Ihr habt verstanden, was ich vorhabe. Danke für Eure Hilfe.

LG

Sinspin 5. Apr 2024 08:15

AW: Daten aus Datenbank zu TImage32-Komponenten hinzufügen
 
Hallo, wenn Du schon mit einer Tabelle kommst, dann bleibe doch auch dabei. Jedes Bild sollte doch einen eindeutigen Index haben. Nimm Datenbank-Komponenten zur Anzeige aller Informationen, da brauchst du nix neu erfinden.

Olli73 5. Apr 2024 11:28

AW: Daten aus Datenbank zu TImage32-Komponenten hinzufügen
 
Timage32 sollte eine Property namens TAG haben. Dort kannst du ein NativeInt speichern. Ein paar Möglichkeiten (mit Objekten der Klasse aus dem anderen Thread):

- xxx.Tag := NativeInt(MyImage); und nachher andersrum casten
- Ein TDictionary<Integer, TMyImage> und im TAG speicherst du dann den (eindeutigen) Integer Wert.
- Ein TDictionary<TImage32, TMyImage>
- Eine eigene abgeleitete Komponente von TImage32, die zusätzlich properties für das Image enthält.

banaguitar 5. Apr 2024 11:30

AW: Daten aus Datenbank zu TImage32-Komponenten hinzufügen
 
Hallo,

hier mal ein Schnipsel:

Code:
     //GridPanel
      for i := 0 to -1 + rowCount * colCount do
      begin
       myImage := TImgView32.Create(Self);
       myImage.Parent := GridPanel1;
     
       myImage.Bitmap.LoadFromFile('');
       myImage.Align := alClient;
       myImage.AlignWithMargins := true;
       myImage.OnClick := myImageClick;
      end;
Ja, jedes Bild hat natürlich eine eindeutige ID. Die Daten kommen aus einer Tabelle bzw. Abfrage. Aber ich muss die Daten ja irgendwie mitschleifen. So wird ja nichts mitgetrackt.
Ich stehe im Moment aufm Schlauch...

LG

banaguitar 5. Apr 2024 11:32

AW: Daten aus Datenbank zu TImage32-Komponenten hinzufügen
 
Zitat:

Zitat von Olli73 (Beitrag 1535370)
Timage32 sollte eine Property namens TAG haben. Dort kannst du ein NativeInt speichern. Ein paar Möglichkeiten (mit Objekten der Klasse aus dem anderen Thread):

- xxx.Tag := NativeInt(MyImage); und nachher andersrum casten
- Ein TDictionary<Integer, TMyImage> und im TAG speicherst du dann den (eindeutigen) Integer Wert.
- Ein TDictionary<TImage32, TMyImage>
- Eine eigene abgeleitete Komponente von TImage32, die zusätzlich properties für das Image enthält.

Danke, Dein letzter Vorschlag gefällt mir am besten, daran habe ich auch gedacht, muss mir da aber noch erarbeiten, wie man das am besten macht.

Olli73 5. Apr 2024 11:34

AW: Daten aus Datenbank zu TImage32-Komponenten hinzufügen
 
Erzeugst du die TImage32 immer dynamisch? Dann ist es am Einfachsten.

banaguitar 5. Apr 2024 11:36

AW: Daten aus Datenbank zu TImage32-Komponenten hinzufügen
 
Ja, genau, so:

Code:
  //GridPanel
  for i := 0 to -1 + rowCount * colCount do
  begin
      myImage := TImgView32.Create(Self);
      myImage.Parent := GridPanel1;
      myImage.Bitmap.LoadFromFile('');
      myImage.Align := alClient;
      myImage.AlignWithMargins := true;
      myImage.OnClick := myImageClick;
  end;

Olli73 5. Apr 2024 11:41

AW: Daten aus Datenbank zu TImage32-Komponenten hinzufügen
 
Delphi-Quellcode:
TMyImgView32 = class(TImgView32)
private
  FId: Integer;
  FPath: String;
  ...
public
  property Id: Integer read FId write FId;
  property Path: String read FPath write FPath;
  ...
end;
Und dann halt TMyImgView32.Create und die properties setzen.

banaguitar 5. Apr 2024 11:44

AW: Daten aus Datenbank zu TImage32-Komponenten hinzufügen
 
Ach, cool, dann passt das ja, sieht bei mir genauso aus. Ist ja ganz easy. Besten Dank!


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:18 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