Delphi Cxgrid获取选中行列,排序规则,当前正在编辑的单元格内的值
本文转自以下网址,感谢作者分享 https://blog.csdn.net/pcent/article/details/8169112
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | 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 ; |
凡哥,别他妈吹牛逼了
分类:
Delphi相关
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)