由于計算機作業系統從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。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/104509.html
標籤:VCL組件開發及應用
