【发布时间】:2015-03-06 06:43:48
【问题描述】:
背景:Windows 64 位应用程序、Firemonkey、Delphi XE7
我有大约 10 个 TStringGrid 组件,当单元格中的值不是“正常”时,所有这些组件都使用相同的 onDrawColumnCell 来更改单元格颜色。
我正在使用以下代码,但是如果屏幕上显示红色单元格,则会发生严重的内存泄漏。(如果我将页面滚动到没有显示红色单元格的位置,则没有内存泄漏)。
procedure TForm.grid_DrawColumnCell(Sender: TObject;
const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF;
const Row: integer; const Value: TValue; const State: TGridDrawStates);
var
RowColor: TBrush;
begin
RowColor := TBrush.Create(TBrushKind.Solid, TAlphacolors.Alpha);
if (Value <> 'Normal') then
RowColor.Color := TAlphacolors.Red
else
RowColor.Color := TAlphacolors.Null;
Canvas.FillRect(Bounds, 0, 0, [], 1, RowColor);
{ perform default drawing }
TGrid(Sender).DefaultDrawColumnCell(Canvas, Column, Bounds, Row,
Value, State);
end;
有谁知道如何解决内存泄漏问题?
谢谢
【问题讨论】:
-
您何时发布
TBrush实例?
标签: delphi memory-leaks firemonkey delphi-xe7 tstringgrid