Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
3-1124798024
Ландграф Павел
2005-08-23 15:53
2005.10.09
Копирование данных из одного .mdb в другой .mdb


14-1127168179
Антон_
2005-09-20 02:16
2005.10.09
Джеффри РИХТЕР WINDOWS Создание эффективных WIN32-приложений с


3-1123867184
Silver...
2005-08-12 21:19
2005.10.09
CrossTable + Редактирование


2-1125285887
-=snoop=-
2005-08-29 07:24
2005.10.09
ф-ия COPYFILE, не могу найти...


14-1126849420
Разгневанный манагер
2005-09-16 09:43
2005.10.09
Как защитить свой компьютер от непрошенных гостей?