关于cxGrid使用的问题 我使用cxgrid设置了一列checkbox但是程序运行的时候总是不能改变它的值,请问用什么方法可以改变它的值。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在数据绑定的View中加一个非绑定的CheckBox列首先必须先作如下的设置: <aView>.DataController.DataModeController.GridMode := False; <aView>.DataController.DataModeController.SmartRefresh := True; <aView>.DataController.KeyFieldNames := 'aUniqueField';然后就可以添加新列了:uses cxDataStorage, cxCheckBox;var aCol: TcxGridDBColumn;... aCol := <aView>.CreateColumn; with aCol do begin //请不要设置DataBinding.FieldName属性的值 Name := 'colUnbound'; Caption := 'Check'; end; //设置值类型 aCol.DataBinding.ValueTypeClass := TcxBooleanValueType; //设置对应内置编辑器 aCol.PropertiesClass := TcxCheckBoxProperties; //或者 //aCol.PropertiesClassName := 'TcxCheckBoxProperties'; //设置内置编辑器的相关属性 with aCol.Properties as TcxCheckBoxProperties do begin AllowGrayed := False; ValueChecked := True; ValueUnchecked := False; end; =============================================================================修改一个列的值之后自动修改另一列的值对于数据绑定的GridView,建议在对应的DataSet的Field.OnChange事件或DataSet的BeforePost事件中实现对于非绑定的GridView,则在DataController.OnRecordChanged事件中实现uses cxVariants, cxDataUtils;procedure <Form>.<Column>PropertiesEditValueChanged( Sender: TObject);var Edit: TcxCustomEdit; Value: Double; View: TcxGridDBTableView; AnotherColumn: TcxGridColumn;begin Edit := Sender as TcxCustomEdit; if VarIsNumericEx(Edit.EditValue) then begin Value := Edit.EditValue; View := <Grid>.FocusedView as TcxGridDBTableView; AnotherColumn := View.GetColumnByFieldName(AnotherField); View.DataController.SetEditValue(AnotherColumn.Index, Value/5, evsValue); end;end;注:使用SetEditValue的好处是它会保存修改前的值,以便用户通过按Esc键恢复原值=============================================================================== 这样的程序能否可行呢? 两个TComboBox组件互动的问题 如何将memo中选中的文字拖动到edit中 在文本文件里搜索 TGIFImage实现bmp2gif转换如何设置透明色? 高手请进,来者有份,关于事务!!!! 困惑!高手回复! 请问一个打印连续发票时出现的怪问题? 各位 何种字体是trueType型的?急!!!!!!!! =======>简单问题,高分奉送,高手大侠快来探讨,来着都有分,,,,快来 请教一个简单的问题 有没有判断用户是否是Administrator的API
<aView>.DataController.DataModeController.GridMode := False;
<aView>.DataController.DataModeController.SmartRefresh := True;
<aView>.DataController.KeyFieldNames := 'aUniqueField';然后就可以添加新列了:
uses
cxDataStorage, cxCheckBox;var
aCol: TcxGridDBColumn;
...
aCol := <aView>.CreateColumn;
with aCol do
begin //请不要设置DataBinding.FieldName属性的值
Name := 'colUnbound';
Caption := 'Check';
end; //设置值类型
aCol.DataBinding.ValueTypeClass := TcxBooleanValueType; //设置对应内置编辑器
aCol.PropertiesClass := TcxCheckBoxProperties;
//或者
//aCol.PropertiesClassName := 'TcxCheckBoxProperties'; //设置内置编辑器的相关属性
with aCol.Properties as TcxCheckBoxProperties do
begin
AllowGrayed := False;
ValueChecked := True;
ValueUnchecked := False;
end;
事件中实现
对于非绑定的GridView,则在DataController.OnRecordChanged事件中实现uses
cxVariants, cxDataUtils;procedure <Form>.<Column>PropertiesEditValueChanged(
Sender: TObject);
var
Edit: TcxCustomEdit;
Value: Double;
View: TcxGridDBTableView;
AnotherColumn: TcxGridColumn;
begin
Edit := Sender as TcxCustomEdit;
if VarIsNumericEx(Edit.EditValue) then
begin
Value := Edit.EditValue; View := <Grid>.FocusedView as TcxGridDBTableView;
AnotherColumn := View.GetColumnByFieldName(AnotherField);
View.DataController.SetEditValue(AnotherColumn.Index, Value/5, evsValue);
end;
end;注:使用SetEditValue的好处是它会保存修改前的值,以便用户通过按Esc键恢复原值===============================================================================