Как получить выделенный текст ячейки из TcxGrid? - PullRequest
0 голосов
/ 26 марта 2012

Я использую Devexpress TcxGrid и пытаюсь получить выделенный текст ячейки.Моя TcxGrid связана с каким-то источником данных - я думаю, что это DataControler.

Моя цель - получить текст из ячеек во всей строке и поместить его в строку, разделенную запятыми.

Ответы [ 3 ]

3 голосов
/ 26 марта 2012

Если вы хотите значения с множественным выбором и из 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;
1 голос
/ 26 марта 2012

Сетка будет иметь потомок DataControler.Вы можете переключаться между элементами в DataController и, в зависимости от того, как настроена ваша сетка, элементы в DataController могут соответствовать отдельным «столбцам», показанным в вашей сетке.При этом элементы в DataController остаются в состоянии

. Этот код позволит вам циклически проходить по каждому столбцу в сетке и строить строку на основе значений 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;
0 голосов
/ 26 марта 2012

Вам нужен текст из всех ячеек в выбранных строках?

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...