Devexpress TcxGridを使用していますが、選択したセルテキストを取得しようとしています。私のTcxGridは何らかのDataSourceに接続されています。私はそれがDataControlerだと思います。TcxGridから選択したセルテキストを取得するには?
私の目標は、行全体のセルからテキストを取得し、コマースで分割した文字列に配置することです。
Devexpress TcxGridを使用していますが、選択したセルテキストを取得しようとしています。私のTcxGridは何らかのDataSourceに接続されています。私はそれがDataControlerだと思います。TcxGridから選択したセルテキストを取得するには?
私の目標は、行全体のセルからテキストを取得し、コマースで分割した文字列に配置することです。
あなたは複数選択とし、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;
選択した行のすべてのセルのテキストが必要ですか?
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);
グリッドには、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;
cxGridは、アクティブな選択が実際のデータ行でない状況でも終了する可能性があります。私はいつでも値を引き出しています。 AFocusedRecord:= SalesGridView.Controller.FocusedRecord; if(AFocusedRecord <> nil)および (AFocusedRecord.IsData = true)ここでレコードで作業してください。 –
良い点。そのグリッドにはたくさんの力がありますし、細かいこともたくさんあります。 –
グリッドソースがある場合は、この関数プロシージャTcxCustomGridTableView.CopyToClipboard(ACopyAll:Boolean)を見てください。結果はクリップボードに表示されますが、出力はあなたが探しているものです。 –