AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TcxGrid, Grafiken einbinden

Offene Frage von "GreenHorn3600"
Ein Thema von GreenHorn3600 · begonnen am 28. Jun 2009 · letzter Beitrag vom 1. Jul 2009
Antwort Antwort
Seite 1 von 2  1 2      
GreenHorn3600

Registriert seit: 24. Jun 2007
165 Beiträge
 
#1

TcxGrid, Grafiken einbinden

  Alt 28. Jun 2009, 20:13
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
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: TcxGrid, Grafiken einbinden

  Alt 28. Jun 2009, 20:18
Das Bild in einen TStringStream, dessen DataString-Eigenschaft als Variant im TcxMyCustomDateSource.GetValue zurückliefern. Fertig.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
GreenHorn3600

Registriert seit: 24. Jun 2007
165 Beiträge
 
#3

Re: TcxGrid, Grafiken einbinden

  Alt 28. Jun 2009, 20:31
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
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: TcxGrid, Grafiken einbinden

  Alt 28. Jun 2009, 22:26
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);
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
GreenHorn3600

Registriert seit: 24. Jun 2007
165 Beiträge
 
#5

Re: TcxGrid, Grafiken einbinden

  Alt 29. Jun 2009, 00:18
Herzlichen Dank Alzaimar,

werde es bei Gelegeheit mal umsetzen. Hoffe es klappt

Schöne Grüße
Euer GreenHorn
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: TcxGrid, Grafiken einbinden

  Alt 29. Jun 2009, 07:31
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
Frank Reim
  Mit Zitat antworten Zitat
GreenHorn3600

Registriert seit: 24. Jun 2007
165 Beiträge
 
#7

Re: TcxGrid, Grafiken einbinden

  Alt 30. Jun 2009, 22:36
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
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: TcxGrid, Grafiken einbinden

  Alt 1. Jul 2009, 07:38
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
Miniaturansicht angehängter Grafiken
cxgrid_skin_296.jpg  
Frank Reim
  Mit Zitat antworten Zitat
GreenHorn3600

Registriert seit: 24. Jun 2007
165 Beiträge
 
#9

Re: TcxGrid, Grafiken einbinden

  Alt 1. Jul 2009, 21:55
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
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#10

Re: TcxGrid, Grafiken einbinden

  Alt 1. Jul 2009, 22:03
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.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:22 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