由于计算机操作系统从32位升级到64位,我的DELPHI版本也从DELPHI 7升级到XE3。在操作DBGRID中出现了一些问题,思考很久都没有得到解决,来发帖请教大家。
由于数据库中的数据在程序写入是就加了密,所以在查询显示的时候需要解密。
于是我重写了DBGRID的DrawColumnCell事件,代码如下
//定义重写事件
procedure DrawDataCell(const Rect: TRect; Field: TField; State: TGridDrawState);override;
//重写时间代码
procedure TDBGRID.DrawDataCell(const Rect: TRect; Field: TField; State: TGridDrawState);
begin
Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, 解密(Column.Field.AsString));
end;
这断代码在DEELPHI 7中运行没有问题。
在XE3中运行出现了一下问题:
当数据查询后,显示正常;但是当选中DBGRID的单元格的时候,数据库中存的数据:Column.Field.AsString,与解密后的Column.Field.AsString重复在一起显示,造成数据显示补正常。
总的来说就是:
获得焦点的但愿可数据显示不正常,为Column.Field.AsString与解密后的Column.Field.AsString重叠显示。
失去焦点的单元格数据又恢复正常,显示解密后的Column.Field.AsString。