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 TcxGrid hat keine Verbindung zu den Spaltendaten (https://www.delphipraxis.net/110323-tcxgrid-hat-keine-verbindung-zu-den-spaltendaten.html)

grenzgaenger 16. Mär 2008 16:06


TcxGrid hat keine Verbindung zu den Spaltendaten
 
Hallo Zusammen,

ich versuch mich grad, vergeblich dran, Daten ordentlich in ein TcxGrid mit einer TcxCustomDataSource im unbound Mode einzustellen. Die Daten zeigt er auch wunderbar an, nur, wenn ich die columns verschiebe, bleiben die daten wo sie waren und wandern nicht mit...

Anlage der Columns:
Delphi-Quellcode:
procedure TfAnalyse.GenerateColumns;
var
 i: integer;
begin
 with gtv do
 begin
  ClearItems;
  for I := 0 to ds.FieldCount - 1 do
  begin
   with gtv.CreateColumn do //GTV = TcxGridTableView
   begin
    databinding.ValueType := ds.FieldTypes[i]; //DS = TcxCustomDataSource
    Caption              := ds.FieldNames[i];
    case i of
     0: width := 60;
     1: width := 70;
     2: width := 70;
     3: width := 70;
     4: Width := 50;
     5: Width := 120;
    end;
   end;
  end;
  DataController.CustomDataSource := ds;
 end;
end;
der GetValue sieht wie folgt aus:
Delphi-Quellcode:
function tDS.GetValue(ARecordHandle: TcxDataRecordHandle; AItemHandle: TcxDataItemHandle): Variant;
begin
  case Integer(AItemHandle) of
   0: Result := ReportData.items[Integer(aRecordHandle)].Rating;
   1: Result := ReportData.items[Integer(aRecordHandle)].Firma;
   2: Result := ReportData.items[Integer(aRecordHandle)].Genre;
   3: Result := ReportData.items[Integer(aRecordHandle)].Tag;
   4: Result := ReportData.items[Integer(aRecordHandle)].Nummer;
   5: Result := ReportData.items[Integer(aRecordHandle)].Bezeichnung;
  end;
end;
Wie kann ich TcxGrid überzeugen auch die daten (mit den columns) mit zu verschieben? :gruebel: :gruebel:

Herzlichen Dank für Euere Hilfe
GG

PS: wahrscheinlich hab ich irgendwo 'n kleinen schalter vergessen, aber ich find ihn nicht... :wall:

alzaimar 16. Mär 2008 16:40

Re: TcxGrid hat keine Verbindung zu den Spaltendaten
 
Jede Spalte hat eine eigene ID, und über die musst Du in der TcxCustomDataSource die Daten holen, und nicht durch die Spaltennummer. Dazu kannst Du die Databinding.Data-Eigenschaft der einzelnen Spalten benutzen (dort eine eindeutige ID zuweisen).

Du überschreibst die Methode im TcxCustomDatsource-Derivat:
Delphi-Quellcode:
Function TMycxDataSource.GetItemHandle(AItemIndex: Integer): TcxDataItemHandle; // [protected override]
Var
  g: TcxCustomGridTableItem;

Begin
  g := TcxCustomGridTableItem(DataController.GetItem(AItemIndex));
  Result := TcxDataItemHandle(g.databinding.Data);
End;
Und in der Initialisierung deines TcxGrids weisst Du einfach die 'ID' (also deine Spaltenkennung) der Databinding.Data-Eigenschaft zu.

Delphi-Quellcode:
aColumn.DataBinding.Data := Pointer(aID);
Fertig. Ach ja, steht auch so in der DevExpress-Hilfe :zwinker:

grenzgaenger 16. Mär 2008 20:32

Re: TcxGrid hat keine Verbindung zu den Spaltendaten
 
hallo alzaimar,

danke für die kompetente hilfe. hatte ich nicht in der devExpress hilfe gefunden und die beispiele funktionierten... tja, jetzt weiss ich wonach ich suchen muss.. das pivotgrid läuft halt mit der anderen technik .. tja, andere probleme --> andere lösungen.

wünsch dir noch einen schönen abend.
GG

:cheers: :cheers: :thumb: :thumb: :cheers: :cheers:


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