Delphi-PRAXiS
Seite 1 von 2  1 2      

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 TcxGrid, Grafiken einbinden (https://www.delphipraxis.net/136334-tcxgrid-grafiken-einbinden.html)

GreenHorn3600 28. Jun 2009 19:13


TcxGrid, Grafiken einbinden
 
Hallo Wissende,

ich bin mal wieder am verzweifeln mit dem TcxGrid. Ich möchte einfach eine kleine Grafik zu einen Feld einbinden, in einer Spalte aber unterschiedliche Grafiken je nach Inhalt des Feldes. Ich weiss daß dies möglich ist, ich weiss nur nicht wie.

Zur Versorgung des cxGrids verwende ich den UnBound Mode, ich füge also selbst die Daten hinzu, passe sie an und entferne diese wieder, wenn es sein muss auch in der Datenbank. Daher würd mir ein Beispiel einer datensensitiven Komponente leider nicht weiterhelfen.

Weiß jemand wie es möglich ist? Danke.

Euer GreenHorn

alzaimar 28. Jun 2009 19:18

Re: TcxGrid, Grafiken einbinden
 
Das Bild in einen TStringStream, dessen DataString-Eigenschaft als Variant im TcxMyCustomDateSource.GetValue zurückliefern. Fertig.

GreenHorn3600 28. Jun 2009 19:31

Re: TcxGrid, Grafiken einbinden
 
Hallo Alzhaimer,

danke für Deine Antwort. Werde es mir mal näher ansehen. Ein Beispiel hast Du nicht zufällig da? Ich bestücke das TcxGrid folgendermassen...
Delphi-Quellcode:
  with GTV.DataController do
  begin
   Values[i, GTVC_Cat.Index]         := fCatList.items[i].Cat;
   values[i, GTVC_Merker.Index]      := fCatList.items[i].Merker;
   values[i, GTVC_Image.Index]       := fCatList.items[i].Image; //<< ist dies die Richtige Stelle im DataController oder
                                                                  //   oder muss ich die Grafik wo anders hinzufügen?
  end;
Dank Dir.
GreenHorn

alzaimar 28. Jun 2009 21:26

Re: TcxGrid, Grafiken einbinden
 
Delphi-Quellcode:
Function BitmapToString (aBitmap : TBitmap) : String;
Var
  stringStream : TStringStream;

Begin
  stringStream := TStringStream.Create('');
  Try
    aBitmap.SaveToStream (stringStream);
    Result := stringStream.DataString;
  Finally
     stringStream.Free
  End
End;

....
  MyView.DataController.Values[SomeRecord, MyViewGraphicsColumn.Index] := BitmapToString(SomeBitmap);

GreenHorn3600 28. Jun 2009 23:18

Re: TcxGrid, Grafiken einbinden
 
Herzlichen Dank Alzaimar,

werde es bei Gelegeheit mal umsetzen. Hoffe es klappt :-)

Schöne Grüße
Euer GreenHorn

dataspider 29. Jun 2009 06:31

Re: TcxGrid, Grafiken einbinden
 
Hi,

wenn die Grafik zu einer Column gehört und in einer ImageList liegt, mache ich es so:

Delphi-Quellcode:
procedure TMainForm.gvCustomDrawCell(Sender:
    TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo:
    TcxGridTableDataCellViewInfo; var ADone: Boolean);
const
  ImageIndent = 3;
var
  AImageRect, ATextRect: TRect;
begin
  ACanvas.Brush.Color := AViewInfo.Params.Color;
  ACanvas.FillRect(AViewInfo.Bounds);
  AImageRect := AViewInfo.ContentBounds;
  AImageRect.Left := AImageRect.Left + ImageIndent;
  AImageRect.Right := AImageRect.Left + ImageList.Width;
  ATextRect := AViewInfo.ContentBounds;
  ATextRect.Left := AImageRect.Right + ImageIndent;
  ACanvas.DrawImage(ImageList, AImageRect.Left, AImageRect.Top, AViewInfo.Item.Tag);
  ACanvas.DrawTexT(AViewInfo.Text, ATextRect, DT_SINGLELINE or DT_LEFT);
  ADone := True;
end;
Methode OnCustomDrawCell der Column...

Cu, Frank

GreenHorn3600 30. Jun 2009 21:36

Re: TcxGrid, Grafiken einbinden
 
Hallo Frank,

ja Du hast recht das ganze ist auf eine Column bezogen und die Images liegen in einer TImageList. Werde deinen Tipp mal ausprobieren.

Btw: Hast Du schon Erfahrung wie es sich mit Skins verträgt?

Schöne Grüsse
Euer GreenHorn

dataspider 1. Jul 2009 06:38

Re: TcxGrid, Grafiken einbinden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von GreenHorn3600
Hast Du schon Erfahrung wie es sich mit Skins verträgt?

Ich gehe davon aus, dass es funktioniert.

Im Anhang ein Beispiel mit dem Skin StarDust...

Frank

GreenHorn3600 1. Jul 2009 20:55

Re: TcxGrid, Grafiken einbinden
 
Hallo Frank,

dein Beispiel sieht gut aus :-) . Habe mir gerade noch mal deinen Quellcode angesehen, und ja, ist ja alles mit den Orginalparametern versehen... da hab ich keine Angst, dass irgendwas störendes auftritt.

Dank Dir für deine Mühe.
GreenHorn

mjustin 1. Jul 2009 21:03

Re: TcxGrid, Grafiken einbinden
 
Zitat:

Zitat von GreenHorn3600
Hallo Wissende,

ich bin mal wieder am verzweifeln mit dem TcxGrid. Ich möchte einfach eine kleine Grafik zu einen Feld einbinden, in einer Spalte aber unterschiedliche Grafiken je nach Inhalt des Feldes. Ich weiss daß dies möglich ist, ich weiss nur nicht wie.

Zur Versorgung des cxGrids verwende ich den UnBound Mode, ich füge also selbst die Daten hinzu, passe sie an und entferne diese wieder, wenn es sein muss auch in der Datenbank. Daher würd mir ein Beispiel einer datensensitiven Komponente leider nicht weiterhelfen.

Weiß jemand wie es möglich ist? Danke.

Euer GreenHorn

Da gibt es einen eigenen Column-Typ, cxDBImageComboBox (oder so ähnlich). Wenn man den auf readonly setzt, kann der Benutzer die Grafik auch nur sehen und keinen anderen Wert auswählen. Läßt sich auch mit einer Imagelist verwenden, klappt problemlos.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz