zoukankan      html  css  js  c++  java
  • CXGRID用法(取行、列值;定位选中某行等等)

    Delphi Cxgrid获取选中行列,排序规则,当前正在编辑的单元格内的值

    cxGrid1DBTableView1.Controller.FocusedRowIndex 当前行号

    cxGrid1DBTableView1.Controller.FocusedRow 当前行
    cxGrid1DBTableView1.Controller.FocusedColumn 当前列
    cxGrid1DBTableView1.Controller.FocusedColumnIndex 当前列号
    cxGrid1DBTableView1.Controller.EditingItem 当前编辑中的单元框
    cxGrid1DBTableView1.Controller.EditingController.Edit 当前的编辑框

    在编辑状态下可以这样取当前单元格的值:
    if cxGrid1DBTableView1.Controller.FocusedColumn.Editing then
    ShowMessage(cxGrid1DBTableView1.Controller.EditingController.Edit.EditingValue)
    else
    cxGrid1DBTableView1.DataController.GetValue(cxGrid1DBTableView1.DataController.FocusedRecordIndex,
    cxGrid1DBTableView1.Controller.FocusedItemIndex);

    非编辑状态下可以这样取得单元格内的值:
    OnCellClick事件代码: 
    procedure   TForm1.cxGrid1DBTableView1CellClick( 
        Sender:   TcxCustomGridTableView; 
        ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; 
        AShift: TShiftState;   var   AHandled: Boolean); 
    var 
        v : Variant; 
    begin 
        v := ACellViewInfo.Value; 
    end;

    取列值
    i := cxGrid1DBBandedTableView1.Controller.FocusedColumn.Index;
    cxGrid1DBBandedTableView1.DataController.GetValue(cxGrid1DBBandedTableView1.Controller.SelectedRows[0].RecordIndex,i);
    cxGrid1DBTableView1.DataController.Values[行,列]
    取得焦点
    cxGrid1DBTableView1.Columns[5].FocusWithSelection;
    cxGrid1DBTableView1.Columns[4].Focused:=True;
    得到当前点击的单元格的值
    uses   Clipbrd;

    OnCellClick事件代码:
    procedure   TForm1.cxGrid1DBTableView1CellClick(
        Sender:   TcxCustomGridTableView;
        ACellViewInfo:   TcxGridTableDataCellViewInfo;   AButton:   TMouseButton;
        AShift:   TShiftState;   var   AHandled:   Boolean);
    var
        v   :   Variant;
    begin
        v   :=     ACellViewInfo.Value;//值
        Clipboard.AsText     :=     vartostr(v);//保存到clipboard
    end;
    cxGrid的DBTableView的名称为dgtv1

    1. 返回选中的行数 gdtv1.DataController.GetSelectedCount;

    2. 返回选中行的索引: gdtv1.DataController.GetSelectedRowIndex(0) , 表示第一个选中行的索引

    3. 返回选中行的数据;

       var
       I, J:Integer;
    begin
       for I:=0 to gdtv1.DataController.GetSelectedCount - 1 do begin
         J := gdtv1.DataController.GetSelectedRowIndex(I);
         ShowMessage(VarToStr(gdtv1.DataController.GetValue(J, 0))); //选择中行的第列的值
       end;
    end;

    4. 获取cxGrid排序规则

    const
       OrderArray: array[soNone..soDescending] of string = ('None', 'ASC', 'DESC');
    var
       I: integer;
       S, OrderStr: string;
    begin
       for I := 0 to gdtv1.SortedItemCount - 1 do begin
         if S <> '' then
           S := S + ', ';
         OrderStr := OrderStr + gdtv1.SortedItems[I].DataBinding.DefaultCaption + ' ';
         OrderStr := OrderStr + OrderArray[TcxDataSortOrder(gdtv1.SortedItems[I].SortOrder)];
         S := S + OrderStr;
       end;
       ShowMessage('ORDER BY ' + S);

    5.获取多选的值

      for   i   :=   0   to   cxgrid1.SelectedRows.Count-1   do
    begin 
     cxgrid1.DataSource.DataSet.GotoBookmark(Pointer(cxgrid1.SelectedRows.Items[i])); //定位选中的字段

    end;

    6.//选择行的第1列的值

     for I:=0 to cxGrid1DBTableView1.DataController.GetSelectedCount - 1 do
     begin
       J := cxGrid1DBTableView1.DataController.GetSelectedRowIndex(I);
       ShowMessage(VarToStr(cxGrid1DBTableView1.DataController.GetValue(J, 0)));  

    end;

    7.获取所选行的值

      with cxGrid1DBTableView1.Controller do
      begin

       for i:=0 to SelectedRowCount-1   do
       begin
        SelectedRows[i].Focused:=True;
        ShowMessage(ADOQuery1.fieldbyname('mc').AsString);
       end;

    end

  • 相关阅读:
    C#--SqlDependency监控数据库表的变化
    C#--尝试读取或写入受保护的内存,这通常指示其他内存已损坏。
    C#--lock线程锁
    C#--抽象类(转载)
    ArrayList源码分析
    多线程编程bug起源分析
    Linux-CentOS-Nginx安装
    记一次springMVC的跨域解决方案
    Linux下压缩工具gzip和归档工具tar及其实战shell应用
    Docker在Centos 7上的部署
  • 原文地址:https://www.cnblogs.com/Kim53622744/p/4428995.html
Copyright © 2011-2022 走看看