2012-03-26 25 views
0

Devexpress TcxGridを使用していますが、選択したセルテキストを取得しようとしています。私のTcxGridは何らかのDataSourceに接続されています。私はそれがDataControlerだと思います。TcxGridから選択したセルテキストを取得するには?

私の目標は、行全体のセルからテキストを取得し、コマースで分割した文字列に配置することです。

+0

グリッドソースがある場合は、この関数プロシージャTcxCustomGridTableView.CopyToClipboard(ACopyAll:Boolean)を見てください。結果はクリップボードに表示されますが、出力はあなたが探しているものです。 –

答えて

3

あなたは複数選択とし、TcxGridDbTableViewからの値たい場合は:私の結果で を私は行の間の分離を持っていません。

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

選択した行のすべてのセルのテキストが必要ですか?

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

グリッドには、DataControlerの子孫があります。 DataController内の項目を順番に調べることができます。また、グリッドの構成方法によっては、DataController内のアイテムは、グリッドに表示されている個々の「列」に対応できます。これは、DataController内のアイテムはtheresにとどまっていると言われています

このコードは、グリッドの各列を循環し、DataController値に基づいて文字列を構築します。

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

cxGridは、アクティブな選択が実際のデータ行でない状況でも終了する可能性があります。私はいつでも値を引き出しています。 AFocusedRecord:= SalesGridView.Controller.FocusedRecord; if(AFocusedRecord <> nil)および (AFocusedRecord.IsData = true)ここでレコードで作業してください。 –

+0

良い点。そのグリッドにはたくさんの力がありますし、細かいこともたくさんあります。 –

関連する問題