首页 > 其他分享 >Cxgrid获取选中行列,排序规则,当前正在编辑的单元格内的值

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

时间:2023-10-30 16:13:07浏览次数:38  
标签:begin 单元格 end Cxgrid DataController Controller 选中 gdtv1 cxGrid1DBTableView1

cxGrid,数据库中存在:GongSiNo,GongSiMc;cxGrid中显示列GongSiMc,Properties指定的是ComBoBox,GongSiMc变化时更新GongSiNo的值并存入数据库。在Properties的OnChange事件中写代码:
{ GSNo, GSMc: string;}

GSMc := cxgrdCZYDBTableView1.Controller.EditingController.Edit.EditingValue;
GSNo := ReturnGongSiNo(GSMc);
--------------------------------------------------------------------------------------------------------------------------------
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;
————————————————
版权声明:本文为CSDN博主「苍穹帝」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gjtao1130/article/details/25499555

标签:begin,单元格,end,Cxgrid,DataController,Controller,选中,gdtv1,cxGrid1DBTableView1
From: https://www.cnblogs.com/Thenext/p/17798107.html

相关文章

  • 直播平台制作,日期选择框设置只可以选中某几个特定日期
    直播平台制作,日期选择框设置只可以选中某几个特定日期判断当前日期是否存在于可选范围avaiableDateList,存在disabledDate返回false代表可选,不存在返回true不可选择 代码示例: <a-date-pickerformat="YYYY-MM-DD":disabled-date="disabledDate"/>disabledDate(current){le......
  • # yyds干货盘点 # Python实现excel工作簿中单元格底色为黄色的数据筛选
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【哎呦喂 是豆子~】问了一个pandas数据提取的问题,一起来看看吧。大佬们请教个问题有没有什么办法可以实现 excel工作簿中单元格底色为黄色的行筛选出来 当行只要有一个单元格标黄了当行数据筛选出来?二、实现过程这里【......
  • Python实现excel工作簿中单元格底色为黄色的数据筛选
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【哎呦喂 是豆子~】问了一个pandas数据提取的问题,一起来看看吧。大佬们请教个问题有没有什么办法可以实现 excel工作簿中单元格底色为黄色的行筛选出来 当行只要有一个单元格标黄了当行数据筛选出来?二、实现过程......
  • cesium 3dtile单击选中
    监听瓦片加载完成事件,将所有3dtile对象按id归纳到map中tileset.readyPromise.then(()=>{console.log('tileset.readyPromise');tileset.setObjsColor()})//allTilesLoaded会被调用多次旋转、放大缩小模型时会触发这个事件,不适合用来做一......
  • vue3 和 element-plus 实现指定单元格编辑
    思路1.获取到指定单元格的位置2.通过状态来判断是否展示编辑步骤1.定义变量去确定行和列lettableRowEditId=ref(null),//控制可编辑的每一行lettableColumnEditIndex=ref(null),//控制可编辑的每一列2.在el-table上绑定单元格的点击事件cell-click(单击)cell......
  • EXCEL中去掉单元格首尾空格,保留字符串中间空格
    用到的函数:MID,FIND,LEFT,RIGHT,TRIM,SUBSTITUTE,LEN     公式:=MID(A1,FIND(LEFT(TRIM(A1)),A1),FIND("☆",SUBSTITUTE(A1,RIGHT(TRIM(A1)),"☆",LEN(A1)-LEN(SUBSTITUTE(A1,RIGHT(TRIM(A1)),""))))-FIND(LEFT(TRIM(A1)),A1)+1)说明:设单元格为A1,值为:$ab$��......
  • WPF 已知问题 RadioButton 指定 GroupName 后关闭窗口可能导致无法选中
    本文记录一个WPF已知问题,当WPF的RadioButton指定GroupName且将IsChecked状态绑定到ViewModel上,将包含以上控件的代码的窗口显示两个,接着关闭其中一个。此时可以看到依然开着的窗口的RadioButton控件无法正确在用户界面上点击选中此问题已经报告给WPF官方,请看htt......
  • 利用 pandas 自动合并 excel 单元格
    代码比较简洁df=pd.DataFrame({"animal":("horse","horse","dog","dog"),"color":("black","white","grey","black"),"name&qu......
  • cesium 3dtils 房屋打组 实现单个房屋选中效果
    效果 scenetree.json记录的是模型的数据,这种element的节点上记录的name就是建模时给建筑物打组时起的名字,后面cesium创建模型时,建筑物上的每个feature都会添加这个name参数,根据这个name参数可以找到这个模型中的所有feature  handler.setInputAction((event)=>......
  • 将复选框设置为已选中状态,使用jQuery
    内容来自DOChttps://q.houxu6.top/?s=将复选框设置为已选中状态,使用jQuery我想使用jQuery来选中一个复选框,就像这样:$(".myCheckBox").checked(true);或者$(".myCheckBox").selected(true);有这样的方法吗?现代jQuery使用.prop():$('.myCheckbox').prop('checked',......