您的位置:首页 > 其它

cxGrid动态创建带CheckBox列时遇到的问题...

2011-07-19 19:04 417 查看
目的:为了不太依赖设计时添加cxGrid列并绑定数据,决定动态创建cxGrid列,其中CheckBox未绑定数据集

代码

// 动态创建GridView
procedure MyClass.initializecxMyGoods(cxGrid_DBTableView1:TcxGridDBTableView);
begin

cxGrid_DBTableView1.DataController.DataModeController.GridMode
:= False;
cxGrid_DBTableView1.DataController.DataModeController.
SmartRefresh := True;
// 设置主键
cxGrid_DBTableView1.DataController.KeyFieldNames := 'ID';

with cxGrid_DBTableView1.CreateColumn do
begin
Name := 'colUnbound';
Caption := '选择';
DataBinding.ValueTypeClass := TcxBooleanValueType;
PropertiesClass := TcxCheckBoxProperties;
MinWidth := 40;
with TcxCheckBoxProperties(Properties) do
begin
AllowGrayed := False;
ValueChecked := True;
ValueUnchecked := False;
NullStyle := nssUnchecked;
//绑定事件,如果不取消checkbox焦点,拖拽分组时出现错误提示:Privileged instruction 
OnChange := CancleFocuse;
end;
end;

with cxGrid_DBTableView1.CreateColumn do
begin
Caption := '商品名称';
DataBinding.FieldName := 'name';
MinWidth := 100;
end;
//创建用来显示文本
with cxGrid_DBTableView1.CreateColumn do
begin
Caption := '备注';
DataBinding.FieldName := 'note';
DataBinding.ValueType := 'Variant';
PropertiesClass := TcxBlobEditProperties;
with TcxBlobEditProperties(Properties) do
begin
BlobEditKind := bekMemo;
BlobPaintStyle := bpsText;
end;
MinWidth := 40;
end;

end;


当改变checkbox时,若焦点不转移到其他列则出现 Privileged instruction错误!

具体原因还未找到,临时解决方案 在CheckBox的OnChange事件中解除焦点 : cxGrid_mygoodsDBTableView1.Focused := False;

onCancle:

procedure MyClass.CancleFocuse(Sender: TObject);
begin
// 释放焦点 (解决分组时出现的指令越界 , 问题不明,未从根本解决)
cxGrid_DBTableView1.Focused := False;
end;


暂时解决问题!具体原因有时间再搞。。。 

//代码基本来自网上  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: