| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Ошибка в наследнике TStringGrid |
| Автор: hawkins 8.12.2004, 07:55 |
| Здраствуйте!Помогите понять ошибку: Написал компонент - наследник 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; ... |
| Автор: bear 9.12.2004, 07:03 |
| inherited Create(AOwner);в конструкторе поставь сразу после begin |