使用CXGRID中有点新的问题,只有一列的CXGRID中新增一行内容时要回车后才能取得这行的内容,还有如新增一行不输入,什么也不操作去取得这行的内容会出错。
问题是只有一列的情况下,怎么去检查是否有输入内容?

解决方案 »

  1.   

    用连接到cxGrid的DataSet判断试试
    例如: 
    if DataSet.Fields[0].AsString <> '' then
      Showmessage('有内容');如果不行,就先使cxGrid失去焦点,再获得焦点 SetFocus
      

  2.   

    不是这个意思,cxGrid新增一行时vartostr(cxGrid1DBTableView1.Controller.FocusedRow.Values[0]),不操作时出错,可能是没有初始化,输入内容时不回车,vartostr(cxGrid1DBTableView1.Controller.FocusedRow.Values[0])还是没有内容,
      

  3.   

    我想问个问题,cxGrid新增一行,如果没有数据集打开就不能输入内容,怎么解决?
      

  4.   

    显示当前点击的栏位的值-->VarAsType(AViewInfo.GridRecord.DisplayTexts[cxGrid1DBTableView1Column0.Index], varString)cxGrid新增一行,如果没有数据集打开就不能输入内容,怎么解决?---〉
    dataset至少应该是insert或者edit,两个状态的其一吧,不然当然没办法操作!自己设定状态就是了。
      

  5.   

    多谢楼上的朋友,不这这名行不通edit1.Text:=VarAsType(AViewInfo.GridRecord.DisplayTexts[cxGrid1DBTableView1Column0.Index], varString);
      

  6.   

    如果焦点没有转移,用displaytext ,values等都是取不到数据的,只能自己从CxGrid的低层自己找
      

  7.   

    type
      THackGridColumn = class(TcxGridColumn);  THackcxCustomEdit = class(TcxCustomEdit);function GetcxGridCellDisplayValue(AGridListColumn: TcxGridColumn):string;
    var
      lEdit : THackcxCustomEdit;
    begin
      Result := '';
      if AGridListColumn = nil then
        Exit;
      with THackGridColumn(AGridListColumn).Controller do
      begin
        lEdit := THackcxCustomEdit(EditingController.Edit);
        if lEdit <> nil then
          Result := lEdit.DisplayValue;
      end;
    end;