Текущий архив: 2005.10.09;
Скачать: CL | DM;
Вниз
Ошибка в наследнике TStringGrid Найти похожие ветки
← →
hawkins (2004-12-07 20:03) [0]Здраствуйте!Помогите понять ошибку:
Написал компонент - наследник TStringGrid. Добавил несколько
свойств, перегрузил процедуры Paint, DrawCell. Далее написал
программу: окно создает дочернее окно с несколькими стринг гридами(мой компонент) ,
если окрывать и закрывать дочернее окно несколько раз подряд то выползает ошибка "Параметр задан неверно", затем ошибка "Canvas dose not allow drawing" и зависает. А вот если в компоненте закоментировать кусок (в тексте компонента коментарий), то все нормально. Не пойму никак в чем дело ...
Далее сокращенный текст компонента:
TMy_StringGrid=class(TStringGrid)
private
procedure DrawCell(ACol, ARow: Longint; ARect: TRect;
AState: TGridDrawState); override;
private
...
protected
...
FIndicators:TImageList;
FIndicators2:TImageList;
...
public
...
constructor Create(AOwner: TComponent);override;
destructor Destroy;
procedure Paint;override;
...
implementation
const
bmKey = "AD_KEY2";
bmStar="AD_STAR";
...
constructor TMy_StringGrid.Create(AOwner: TComponent);
var
Bmp: TBitmap;
Bmp2:TBitmap;
begin
//-- Если далее поставить коментарий то ошибки в про-ме не будет
//-------- здесь начинается коментарий -------------
Bmp := TBitmap.Create;
Bmp2:=TBitmap.Create;
try
Bmp.LoadFromResourceName(HInstance, bmKey);
Bmp2.LoadFromResourceName(HInstance, bmStar);
FIndicators := TImageList.CreateSize(Bmp.Width, Bmp.Height);
FIndicators2 := TImageList.CreateSize(Bmp2.Width, Bmp2.Height);
FIndicators.AddMasked(Bmp, clWhite);
FIndicators2.AddMasked(Bmp2, clWhite);
finally
Bmp.Free;
Bmp2.Free;
end;
//-------------- здесь коментарий заканчивается -------
inherited Create(AOwner);
end;
destructor TMy_StringGrid.Destroy;
begin
FIndicators2.Free;
FIndicators2.Free;
inherited Destroy;
end;
...
← →
Алхимик © (2004-12-08 09:24) [1]
> FIndicators2.Free;
> FIndicators2.Free;
Уничтожение вижу. А создание?
← →
Amoeba © (2004-12-08 16:54) [2]Destructor обязательно должен быть объявлен c директивой override. У TObject он ведь виртуальный! Где она у тебя?
← →
ЮЮ © (2004-12-10 08:40) [3]Ошибка, скорей всего, не здесь, а, например, в DrawCell - она гораздо чаше вызывается и работает с Canvas.
Страницы: 1 вся ветка
Текущий архив: 2005.10.09;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.036 c