Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Bilder aus mehreren Datensätzen in eine Tabelle anzeigen? (https://www.delphipraxis.net/75976-bilder-aus-mehreren-datensaetzen-eine-tabelle-anzeigen.html)

Karstadt 28. Aug 2006 07:20

Datenbank: Mysql • Version: 4.1 • Zugriff über: MyDac

Bilder aus mehreren Datensätzen in eine Tabelle anzeigen?
 
Guten Morgen. Ich habe folgendes Problem:

Zu einen Schadensnummer buche ich die Bilder. Jedes Bild ist ein Datensatz. Nun will ich alle Bilder die zu den Schaden 24 als eine Tabelle anzeigen lassen. Mit SELECT habe ich nun 15 Bilder (jedes Bild ein eigenes Datensatz) nun muss ich das irgenwie als eine Tabelle anzeigen lassen, wichtig ist das beim klicken auf ein Bild das ORIGINAL Bild sich öffnen soll. (Pfad zum Bild ist auch in der Bilderbuchungstabelle hinterlegt). Ich wollte das in FastReport machen, das sieht aber nicht gut aus. Kennt jemand von euch eine gute Lösung?

Jelly 28. Aug 2006 08:02

Re: Bilder aus mehreren Datensätzen in eine Tabelle anzeigen
 
Es einige DBGrids, die auch direkt Blobimages anzeigen können, z.B. das TDBAdvGrid von TMS.
Das mit dem Vergrössern wird schwieriger. Du kannst zwar sicherlich die Bilder im Grid verkleinert darstellen lassen, das würd aber heissen dass Du das Originalbild jedesmal beim Anzeigen verkleinern musst, und bei 100 Bildern im Grid glaub ich geht die Performance in die Knie. Alternativ würd ich eventuell ein 2tes Blobfeld in der Tabelle anlegen, wo ich beim Speichern des Datensatzes auch nochmal ein Thumbnail ablege.

Ich zweifele auch daran, ob die Idee so wirklich gut ist, soviele Bilder direkt in der Datenbank abzulegen. Das bauscht die nur unnötig auf. Alternativ kannst Du auch nur den Dateinamen speichern, und das Bild selbst dann als Datei irgendwo ablegen, lokal oder auf einem Server wenn Du im Netz arbeitest.

Karstadt 28. Aug 2006 08:11

Re: Bilder aus mehreren Datensätzen in eine Tabelle anzeigen
 
Hallo. Die Bilder werden in eine kleine Auflösung in die Tabelle gespeichert 100x100 (JPEG Format) die großen Bilder liegen auf der Festplatte (ca. 2 MB Pro Bild). Ich muss aber die Bilder nach möglichkeit als 1 Datensatz darstellen...sprich 10 Bildern aus 10 Datensätzen werden als 1 Datensatz anzegeigt.. kann man einen berechneten Feld dafür nehmen?

Jelly 28. Aug 2006 08:23

Re: Bilder aus mehreren Datensätzen in eine Tabelle anzeigen
 
Zitat:

Zitat von Karstadt
sprich 10 Bildern aus 10 Datensätzen werden als 1 Datensatz anzegeigt

Wozu denn das? Die Anzahl der Spalten wird prinzipiell festgehalten. Was Du da hast, ist eindeutig eine 1:n Beziehung, und das ist ja auch gut so.

Karstadt 28. Aug 2006 08:44

Re: Bilder aus mehreren Datensätzen in eine Tabelle anzeigen
 
Wenn ich mir das recht überlege. Dann ist das ja eine gute IDEE. Die Schadensbilder werden vertikal angezeigt. beim klick auf das bild wird das Bild (über PFAD Feld) groß geladen....

Denn das was ich wollte ist, das die Bilder aus 10 Datensätzen Horizontal angezeigt werden (sprich eine Zeile)

Jelly 28. Aug 2006 08:50

Re: Bilder aus mehreren Datensätzen in eine Tabelle anzeigen
 
Wie Du die Bilder darstellst, ist Dir überlassen. Du bist ja nicht an ein DBGrid gebunden.

Du kannst ja auch dynamisch irgendwas erstellen mittels einer TScrollbox. Du durchläufst alle gefundenen Datensätze und erzeugts für jeden dynamisch ein neues Image in der TScrollbox. Dann passt du für Image die Eigenschaft Parent, Left, Top, Width und Height an, ebenfalls noch das OnClick Ereignis und Du hast deine horizontale Bilderliste... Sollte ja nicht so schwer sein, oder?

Karstadt 28. Aug 2006 08:56

Re: Bilder aus mehreren Datensätzen in eine Tabelle anzeigen
 
Zitat:

Zitat von Jelly
Wie Du die Bilder darstellst, ist Dir überlassen. Du bist ja nicht an ein DBGrid gebunden.

Du kannst ja auch dynamisch irgendwas erstellen mittels einer TScrollbox. Du durchläufst alle gefundenen Datensätze und erzeugts für jeden dynamisch ein neues Image in der TScrollbox. Dann passt du für Image die Eigenschaft Parent, Left, Top, Width und Height an, ebenfalls noch das OnClick Ereignis und Du hast deine horizontale Bilderliste... Sollte ja nicht so schwer sein, oder?

Sollte ja nicht so schwer sein, oder?... Nein, ist das nicht. Ich wollte nur wissen, ob es irgendeine ander Lösung gäbe. Z.b. Die Bilder in einen berechtenen Feld speichern und dann mit TDBAdvGrid anzeigen lassen. Oder denken Sie das das schwieriger ist als ihre lösung?

Jelly 28. Aug 2006 09:03

Re: Bilder aus mehreren Datensätzen in eine Tabelle anzeigen
 
Schmeiss eine scrollbox, listbox, ein image (imgtemplate) und einen button auf deine Form... Hier der Code zum Laden der Bilder (in meinem Fall aus Dateien und alle mit gleichen Breiten).

Delphi-Quellcode:
implementation

uses
  Windows;

{$R *.dfm}

procedure TForm16.Button1Click(Sender: TObject);
var
  i: Integer;
  fn: string;
  img: TImage;
begin
     for i := 0 to listbox1.items.count - 1 do begin
          fn := listbox1.items[i] ;
          img := TImage.create (Self) ;
          img.Parent := scrollbox1 ;
          img.AutoSize := false ;
          img.Stretch := false ;
          img.Tag := i ;
          img.Left := (i*32) + 8 ;
          img.Top := 8 ;
          img.Width := 24 ;
          img.height := 24 ;
          img.Picture.LoadFromFile(fn);
          img.Cursor := crHandPoint ;
          img.OnClick := imgTemplateClick ;
     end;

end;

procedure TForm16.imgtemplateClick(Sender: TObject);
begin
    caption := inttostr ((Sender as TImage).tag) ;
end;

end.


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