2012-03-26 6 views
0

Ich verwende Devexpress TcxGrid und ich versuche, ausgewählten Zellentext zu erhalten. Mein TcxGrid ist mit einer Art von DataSource verbunden - ich denke, es ist DataControler.Wie erhalten Sie ausgewählten Zellentext von TcxGrid?

Mein Ziel ist es, den Text von Zellen in der gesamten Zeile zu erhalten und in eine Zeichenfolge mit Kommas geteilt.

+0

Wenn Sie die Netzquelle haben Sie in dieser Funktion Prozedur TcxCustomGridTableView.CopyToClipboard (ACopyAll: Boolean) suchen möchten. Das Ergebnis ist in der Zwischenablage, aber die Ausgabe ist, was Sie suchen. –

Antwort

3

Wenn Sie Werte mit Mehrfachauswahl wollen und von einem TcxGridDbTableView: In meinem Ergebnis, ich habe keine Trennung zwischen den Reihen.

function GetSelectedValuesFrmGrid: String; 
var 
    intSelectLoop, 
    intRowLoop: Integer; 
    oTableView: TcxGridDbTableView; 
    strValue: Variant; 
    oList: TStringList; 
begin 
    Result:= ''; 
    // Kind Of TableView 
    if <TcxGrid>.ActiveView is TcxGridDbTableView then 
    begin 
    oTableView:= <TcxGrid>.ActiveView as TcxGridDbTableView; 
    oList:= TStringList.Create(); 
    try 
     for intSelectLoop:= 0 to oTableView.Controller.SelectedRowCount-1 do 
     begin 
     for intRowLoop:= 0 to oTableView.Controller.SelectedRows[intSelectLoop].ValueCount-1 do 
     begin 
      strValue:= oTableView.Controller.SelectedRows[intSelectLoop].Values[intRowLoop]; 
      // Value can be Null 
      if VarIsNull(strValue) then 
      begin 
      strValue:= ''; 
      end; 
      oList.Add(strValue); 
     end; 
     end; 
     Result:= oList.CommaText; 
    finally 
     oList.Free; 
    end; 
    end; 
end; 
0

Sie benötigen den Text von allen Zellen in ausgewählten Zeilen?

for I := 0 to cxGridDBTableView.Controller.SelectedRowCount -1 do 
    for J := 0 to cxGridDBTableView.Controller.SelectedRows[I].ValueCount -1 do 
     SelectedRowStr := SelectedRowStr + VarToStr(cxGrid1DBTableView1.Controller.SelectedRows[I].Values[J]) + ','; 
SelectedRowStr := Copy(SelectedRowStr,1,length(SelectedRowStr)-1); 
1

Das Gitter wird einen DataControler-Nachfolger haben. Sie können die Elemente im DataController durchlaufen und abhängig davon, wie Ihr Grid konfiguriert ist, können die Elemente im DataController den einzelnen "Spalten" entsprechen, die in Ihrem Grid angezeigt werden. Davon abgesehen bleiben die Elemente in einem DataController erhalten.

Mit diesem Code können Sie durch jede Spalte im Raster navigieren und die Zeichenfolge basierend auf den DataController-Werten aufbauen.

var 
    i: Integer; 
    DC: TcxCustomDataController; 
    s: string; 
begin 
    s := ''; 
    DC := <yourgrid>.DataController; 
    for i := 0 to <yourgrid>.ColumnCount -1 do begin 
     s := s + vartostr(DC.Values[DC.FocusedRecordIndex, <yourgrid>.Columns[i].Index]) + ','; 
    end; 
    if Length(s) > 0 then 
     s := Copy(s,1,Length(s)-1); 
end; 
+1

Das cxGrid kann auch in Situationen enden, in denen die aktive Auswahl keine echte Datenzeile ist. Ich benutze das immer wenn ich Werte herausziehe. AFocusedRecord: = SalesGridView.Controller.FocusedRecord; if (AFocusedRecord <> nil) und (AFocusedRecord.IsData = true) dann hier mit Datensatz arbeiten. –

+0

Guter Punkt. Es gibt viel Power mit diesem Raster und viele Feinheiten. –