起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 199|回复: 4

DataGrid的单元格只有在编辑状态才显示只读背景色

[复制链接]
发表于 2008-11-17 13:30:05 | 显示全部楼层 |阅读模式
如何做到正常状态下也能区分必填字段和只读字段,自己在CustomDrawCell事件中写代码,但有些字段的只读属性取不出来

要实现需解决以下问题:
1、找到列对应的数据源数据集上的字段是否可编辑状态
2、取出系统提供的只读字段颜色值

如何解决?

第2点已经解决
JSControls.DataViewAttributes.ReadOnlyColor
第1点用
TDataField.ReadOnly or (not TDataField.CanModify)不能完全解决问题,对计算字段本来就不允许改的字段不起作用,急待解决方案

源代码:
begin
        lField:= lDataSet.FindField(TDataGridColumn(AColumn).FieldName);
        if lField<>nil then
        begin
          if lField.ReadOnly or (not lField.CanModify) then
            AColor:= JSControls.DataViewAttributes.ReadOnlyColor;
        end;
回复

使用道具 举报

发表于 2008-11-17 14:25:13 | 显示全部楼层
可以尝试判断业务字段的类型看看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-17 16:49:06 | 显示全部楼层
试过了 不行
lField.FieldKind<>TFieldKind.fkData
回复 支持 反对

使用道具 举报

发表于 2008-11-17 17:37:07 | 显示全部楼层
简单做了一个测试,不知道是否是你要的效果。
其中单价和规格是只读字段,表达式字段也只读。
procedure TZDDZDSXHQBGWD.DataGridCustomDrawCell(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TTreeListNode; AColumn: TTreeListColumn; ASelected, AFocused, ANewItemRow: Boolean; var AText: string; var AColor: Integer; AFont: TFont; var AAlignment: TAlignment; var ADone: Boolean);
var
  lField : TDataField;
  i : Integer;
begin
  for i := 0 to DataGrid.ColumnCount - 1 do
  begin
    //lField.FieldKind
    lField := TSQLDataSet(DataSetBrokerBZSJJ1.DataSet).FieldByName(DataGrid.Columns.FieldName);
    if lField <> nil then
    begin
      if lField.FieldKind = TFieldKind.fkData then
      begin
        if (lField.ReadOnly) or (not lField.CanModify) then
          DataGrid.Columns.Color := Business.System.Graphics.clRed;//JSControls.DataViewAttributes.ReadOnlyColor; //取只读颜色
      end
      else
        DataGrid.Columns.Color := Business.System.Graphics.clRed;//JSControls.DataViewAttributes.ReadOnlyColor; //取只读颜色
    end;
    //lField := DataGrid.
  end;
end;

效果图:

snap1.png

16.73 KB, 下载次数: 109

回复 支持 反对

使用道具 举报

发表于 2008-11-19 16:38:23 | 显示全部楼层
楼主,反馈一下问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-27 18:37 , Processed in 0.045830 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表