Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Bild aus Pfadangabe in DBGrid anzeigen (https://www.delphipraxis.net/129882-bild-aus-pfadangabe-dbgrid-anzeigen.html)

Mongfice 27. Feb 2009 07:54


Bild aus Pfadangabe in DBGrid anzeigen
 
Moin!

Ich hab ein kleines Problem, mit dem ich nicht wirklich weiter kommen.

Ich hab Daten zu Bildern in einer Tabelle abgelegt und lasse diese in meinem Programm über ein DBAdvGrid anzeigen.
Eine Spalte dieses Grids soll nun auch einen Thumbnail zum Bild enthalten, leider bekomm ich das nur hin, wenn ich das Bild als Blob in der DB hinterlege, was aber ausdrücklich unerwünscht ist, da die Datenmenge viel zu groß wäre. Die Tabelle soll lediglich einen Pfad zum Bild enthalten.

Irgendwie steh ich da seit inzwischen ein paar Tagen auf dem Schlauch.
Hab als "Notlösung" jetzt nen TImage eingefügt, dass über DBAdvGrid.OnCLick aktualisiert wird, das ist aber auch nicht das Gelbe vom Ei, da das Bild selbst eigentlich das Wichtigste ist und man ja ungern 100 Bilder durchklicken will, um das richtige zu finden.

Hat da jemand nen Tipp für mich? Ich brauch die Funktionalität des Grids an sich auf jeden Fall, da es keine feste Anzahl an Bildern gibt, die dort angezeigt werden müssten.

Gruß
Michael

dataspider 27. Feb 2009 08:55

Re: Bild aus Pfadangabe in DBGrid anzeigen
 
Hi,

ich würde im DataSet ein berechnetes Feld vom Typ Blob [EDIT] bzw. Graphic [/EDIT] einfügen.
Im OnCalcFields erfolgt dann das Laden entsprechend des Dateinamens.

Frank

Mongfice 27. Feb 2009 09:50

Re: Bild aus Pfadangabe in DBGrid anzeigen
 
Mhh, könntest du da etwas ausführlicher werden?
Evtl. mit nem kleinen Beispiel?

Ich glaube ich versteh zwar, was du meinst, aber weiß nicht genau, wie ich das anstellen soll. Vorallem, da über die gleiche DS auch die Bearbeitung der Daten erfolgen kann/soll - im Moment.

nahpets 27. Feb 2009 10:11

Re: Bild aus Pfadangabe in DBGrid anzeigen
 
Hallo,

schau mal bitte, ob Du das Laden der Bilder nicht in das DBAdvGrid.DataSource.DataSet.AfterScroll-Ereignis verschieben kannst. Dann müsste ein Bild immer nach dem Verschieben des Satzzeigers geladen werden, sprich: immer dann, wenn ein neuer/weiterer Datensatz angezeigt wird.

Mongfice 27. Feb 2009 10:29

Re: Bild aus Pfadangabe in DBGrid anzeigen
 
Das Problem ist, ich kapier nicht so ganz, wie ich das Bild wieder in das Grid bekomme.

Klar, ich kann den Pfad in jedem beliebigen Ereignis auslesen und das Bild laden (z.B. in nen TImage). Aber wie lade ich das Bild entweder direkt in das Grid oder wie bekomm ich das TImage dann im Grid angezeigt?
Für jede Zeile nen Image neben dem Grid anzuzeigen ist ja nicht wirklich prakitkabel.

Das bisher eingefügte TImage von dem ich sprach ist ja nur ne Notlösung, da es ja nur jeweils einen Thumb anzeigen kann, und nicht alle auf einmal.

nahpets 27. Feb 2009 10:45

Re: Bild aus Pfadangabe in DBGrid anzeigen
 
Hallo,

da ich die von Dir genutzte Gridkomponente nicht habe, kann ich Dir da wohl nicht so recht weiterhelfen. Wie sieht das denn aus, wenn ein Bild in der Datenbank ist und dann in dem Grid angezeigt wird, sind die Bilder dann nicht sehr klein?

Wäre eventuell die Benutzung eines DBCtrlGrids eine Alternative, da kannst Du für jede Spalte ein DBText oder ein DBEdit drauflegen, zusätzlich aber auch ein TImage. Das musst Du dann einmal für einen Datenzeile machen, hast es dann aber anschließend für alle Zeilen zur Verfügung, benötigts also nicht für jede Zeile ein eigenes TImage.
Das Ergebnis wird nicht genau wie ein DBGrid aussehen, da Dir die Titelzeile und links die Satzmarkierung fehlen, aber eventuell ließe sich ja was brauchbares daraus machen.

Mongfice 27. Feb 2009 11:05

Re: Bild aus Pfadangabe in DBGrid anzeigen
 
Also, wenn das Bild als Blob in der DB ist, dann kann ich es direkt im Grid anzeigen lassen, indem ich für die Spalte im Grid einstelle, dass die Binär-Daten als Bild interpretiert werden sollen. Die Größe der Zelle kann ich auch einstellen, so dass das Bild darauf passend skaliert wird. Es geht auch nicht darum, dass Bild in der vollen Größe anzuzeigen, sondern nur als Thumbnail. Leider ist aber die Datenmenge trotzdem viel zu groß um auch nur die Thumbnails in der DB direkt zu speichern.

Die Sache mit dem DBCtrlGrid werd ich mal probieren. Es muss nicht unbedingt genau wie ein DBGrid aussehen. Mal sehn ob ich dann irgendwas wichtiges verliere, wenn ich es damit mache.

Mongfice 2. Mär 2009 10:41

Re: Bild aus Pfadangabe in DBGrid anzeigen
 
Mhh, ich habs jetzt mit dem DBCrtlGrid gemacht, das geht soweit auch sehr gut.
Nur fehlen mir jetzt 2 "Funktionen" die das DBAdvGrid gleich mitgebracht hat.
1. Scrollen durch die Liste mit dem Mausrad
2. Öffnen des Popup-Menüs wählt unterliegendes Element des Grids aus.

Speziell letzteres wäre sehr wichtig. Hat jemand da nen Tip, wie ich die Funktionalität beim DBCtrlGrid umgesetzt bekomme?


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