`

cxGrid 实现 checkbox(无数据库记录)

阅读更多

文章转自http://www.cnblogs.com/hzqghost/articles/1434692.html

SQL语句
Query.SQL.add('select   *,'N' as Selected from make order by name ')

进入QUERY字段编辑器
将 Selected 的 FieldKind 设置为 fkInternalCalc

确保 readonly 为 false

给 cxGrid1DBTableView1 新建一列,选择 fielname 设为 Selected
ValueCheck := 'Y'   , ValueunCheck := 'N' 

鼠标点击事件1

procedure TEditProduct.cxGrid1DBTableView1MouseUp(Sender: TObject;
  Button
: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  Row 
: Integer;
begin
  Row 
:= cxGrid1DBTableView1.DataController.FocusedRecordIndex;
  
//cxGrid1DBTableView1.DataController.DataSet.Edit;
  //cxGrid1DBTableView1.DataController.DataSet.FieldByName('Selected').AsString := 'Y';

  if cxGrid1DBTableView1.ViewData.Records[Row].Values[1= 'Y' then
    cxGrid1DBTableView1
.ViewData.Records[Row].Values[1:= 'N'
  
else
    cxGrid1DBTableView1
.ViewData.Records[Row].Values[1:= 'Y';
end;

 

鼠标点击事件2

procedure TorderMore1.cxGrid1DBTableView1CellClick(
  Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: 
Boolean);
var
  Row : 
Integer;
begin
  
if ACellViewInfo.Item.Name ='ColSelect' then
  begin
    Row :
= cxGrid1DBTableView1.DataController.FocusedRecordIndex;
    
if cxGrid1DBTableView1.ViewData.Records[Row].Values[15= 'Y' then
       cxGrid1DBTableView1.ViewData.Records[Row].Values[15] := 'N'
    else
       cxGrid1DBTableView1.ViewData.Records[Row].Values[
15] := 'Y';
  end;
end;

 

初始化

procedure TEditProduct.FormActivate(Sender: TObject);
var
  I 
: integer;
  MakeMK 
: string;
  thisID 
: string;
begin
  
if ID > 0 Then
  MakeMK 
:= ',' + '1,2,3,4,5'+ ',';
  ShowMessage(MakeMK);
  begin
     
for I :=0 to cxGrid1DBTableView1.ViewData.RecordCount-1 do
     begin
       thisID 
:= ','+varToStr(cxGrid1DBTableView1.ViewData.Records[I].Values[0])+',';
       
//ShowMessage(thisID);
       if AnsiStrPos(PChar(MakeMK), PChar(thisID)) <> nil then
         cxGrid1DBTableView1
.ViewData.Records[I].Values[1:= 'Y';
     
end;
  
end;
end;

procedure TEditProduct
.cxGrid1DBTableView1StylesGetContentStyle(
  Sender
: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
  AItem
: TcxCustomGridTableItem; out AStyle: TcxStyle);
begin
  
if ARecord.Values[1= 'Y' then
      AStyle 
:= cxStyle2;
end;

提交结果

  for I :=0 to cxGrid1DBTableView1.ViewData.RecordCount-1 do
  begin
    T 
:= varToStr(cxGrid1DBTableView1.ViewData.Records[I].Values[1]);
    
if T = 'Y' then
      NewMake 
:= NewMake + ',' + varToStr(cxGrid1DBTableView1.ViewData.Records[I].Values[0]);

分享到:
评论

相关推荐

    CheckBox在cxGrid中的应用

    总之,`CheckBox`在`cxGrid`中的应用是Delphi开发中常见的场景,通过合理的配置和事件处理,可以实现高效且直观的数据管理功能。理解并熟练掌握这一技术,对于提升Delphi程序的用户体验和功能完整性至关重要。

    cxGrid动态附加CheckBox选择、求和、操作过滤及定位记录.rar

    为cxGrid动态附加非绑定(无字段关联)的CheckBox列,以提供用户选择,并对操作者的选择进行求和输出;代码中牵涉到用语句对cxGrid过滤、过滤后的记录关联(定位)数据集数据。如有问题,欢迎到“中国软件研发联盟”...

    checkbox在cxGrid

    当你在`cxGrid`中更改`checkbox`状态时,相应的数据库记录也应该同步更新。这通常通过`TDataSet`的`Edit`、`Post`或`Cancel`方法实现。 `cxGrid`的`checkbox`功能强大且灵活,支持多种自定义样式和行为。你可以改变...

    CheckBox在cxGrid分组的应用

    这个主题——"CheckBox在cxGrid分组的应用"——涉及到如何在cxGrid中利用CheckBox控件来实现数据的分组和交互操作。在cxGrid中,CheckBox可以作为列头筛选、行内编辑或单元格内数据表示,使得用户能够通过简单的勾选...

    delphi cxgrid 拖放移动记录 交换行记录

    cxgrid 拖放移动记录,cxgrid 拖放,cxgrid 拖动记录,cxgrid 鼠标拖动记录 这是cxgrid开发公司回复客户时所发送的源码项目,用于实现鼠标拖动记录,改变记录在表格中的位置,所以直接编译运行,供大家借鉴

    CXGrid实现录入单据的例子

    在这个"CXGrid实现录入单据的例子"中,我们将探讨如何利用这些工具在SQL Server数据库环境下构建数据驱动的应用程序。 首先,CXGrid是Dev Express提供的一个高级网格控件,它允许开发者创建复杂的表格布局,并且...

    多个cxGrid之间拖曳记录

    首先,要实现cxGrid之间的拖曳记录,我们需要设置cxGrid控件的属性以支持拖放操作。在Delphi中,通常会涉及到以下几个关键步骤: 1. **启用拖放**:为每个cxGrid控件开启拖放支持。这可以通过设置cxGrid的`DragMode...

    cxGrid动态实现窗口冻结

    标题与描述均提到了“cxGrid动态实现窗口冻结”,这涉及到在使用cxGrid控件时,如何通过编程手段实现对网格视图中的某些列或行进行冻结,使其在滚动查看其他数据时保持固定位置,方便用户同时查看多列数据。...

    cxGrid单元合并(绑定数据记录)

    而“绑定数据记录”则是指将cxGrid的单元格与数据库或其他数据源中的记录关联,以便动态地显示和编辑数据。 首先,我们来看cxGrid控件。cxGrid是一种强大的网格控件,它提供了丰富的功能,如排序、分页、过滤、...

    cxgrid 拖放移动记录位置

    【cxgrid 拖放移动记录位置】是一个关于Delphi组件cxGrid的高级特性应用,主要涉及cxGrid的自定义行为实现,特别是记录的动态排序功能。cxGrid是一款功能强大的网格控件,常用于创建数据可视化界面,如数据库表格。...

    cxgrid资料

    ### cxgrid资料知识点详解 #### 一、数据录入 **1. 在TcxGridDBTableView中设置属性** ...通过以上步骤,便可以在cxGrid中实现数据录入、LookUp功能及CheckBox功能,大大提升了数据库应用程序的可用性和用户体验。

    导出cxGrid主从表记录

    在IT领域,特别是数据库应用和用户界面开发中,cxGrid是一个常见的组件库,它用于创建具有强大数据处理能力的网格控件。cxGrid允许开发者在应用程序中构建主从表结构,这种结构通常用于显示和操作多层关联的数据。在...

    获知主从cxgrid的从表记录数

    这种关联通常是通过外键关系实现的,当选择主表中的一个记录时,从表会自动过滤出对应的相关记录。 要获知从表的记录数,我们需要访问从表的数据源(如TClientDataSet或TDataset派生的对象)。以下是一般步骤: 1....

    cxGrid判断滚动到记录尾部否

    此外,如果你的应用程序需要在达到记录尾部时动态加载更多数据(比如分页加载),可以在这个事件处理函数中实现相关的逻辑,如调用异步加载数据的方法或API。 请确保在实际项目中根据你的具体需求调整代码,并适当...

    cxGrid数据行移动

    这通常涉及到对数据库记录的重新排序,可以通过调整记录的主键值来实现。 4. **事件处理**: - 在cxGrid中,我们可以监听`OnRowChanging`和`OnRowChanged`事件,以便在数据行移动前后执行必要的逻辑,比如更新...

    Delphi7下cxgrid的从表记录数(测试有效).zip

    在Delphi7中,获取从表的记录数是通过访问cxGrid的层次结构来实现的。 首先,我们需要了解cxGrid的基本组件,包括cxGrid本身、cxGrid的Level(层级)和cxGrid的DataSource。cxGrid的DataSource负责连接到数据提供者...

    Delphi CXGrid 拖放移动记录示例

    通过这份源代码项目,您可以实现CXGrid中的记录拖放功能,允许用户简单地通过鼠标拖动来交换行的位置,增强用户界面的交互性和用户体验。这项功能对于需要动态管理数据展示的应用程序尤其有用。 功能特点 拖放移动...

    cxGrid多列模糊下拉过滤

    在“cxGrid多列模糊下拉过滤”这个主题中,我们将深入探讨如何在`cxGrid`中实现多列的模糊过滤,并结合下拉框的功能,提高用户体验。 首先,我们需要理解`cxGrid`的过滤机制。`cxGrid`的过滤功能允许用户根据特定...

    delphi控件cxGrid用法大全

    实现cxGrid像PageControl一样切换不同数据集的显示,可以通过为`cxGrid`添加多个`TableView`,并根据需要切换这些`TableView`的`Visible`属性来实现。 #### 7. 左边几列固定不滚动 为了使cxGrid左边的几列在滚动时...

    cxGrid单元格颜色

    5. 数据绑定和事件响应:`cxGrid`通常与数据库或其他数据源绑定,因此,当数据变化时,我们需要监听`OnDataChange`事件,更新单元格颜色以反映新的数据状态。 6. 多语言和主题支持:`cxGrid`还允许开发者创建和应用...

Global site tag (gtag.js) - Google Analytics