Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.21;
Скачать: CL | DM;

Вниз

DesignTime отрисовка   Найти похожие ветки 

 
SPeller ©   (2002-11-17 13:36) [0]

Всем доброго времени суток. У меня такая проблема. Зеркало моего компонента наследуется от TKOLPanel, и всё что мне требуется от зеркала - нарисовать на этой панельке битмап. Делаю так:

TKOLSPLPicture = class( TKOLPanel )
private
fBitmap: TBitmap;
procedure SetBitmap( const NV: TBitmap );
public
procedure Paint; override;
......
property Bitmap: TBitmap read fBitmap write SetBitmap;
end;

....

procedure TKOLSPLPicture.SetBitmap( const NV: TBitmap );
begin
Paint;
fBitmap := NV;
end;

procedure TKOLSPLPicture.Paint;
begin
inherited;
if not fBitmap.Empty then
BitBlt( Canvas.Handle, 0, 0, fBitmap.Width, fBitmap.Height,
fBitmap.Canvas.Handle, 0, 0, SRCCOPY );
end;


Однако при этом при попытке задания битмапа вылетает ошибка в rtl60.bpl, моей bpl, DesignIDE.bpl и, соответственно, никакой битмап не вырисовывается. При этом при попытке удаления или иных действий с контролом постоянно вылетают ошибки в каких-то rtl, bpl и т.п., однажды даже ошибка в VMHSyntaxEdit сюда затесалась, коим в проекте даже и не пахло :-). Собственно вопрос: как так отрисовать, чтобы без ошибок?


 
Alexander ©   (2002-11-17 21:41) [1]

Ответа я не знаю...
А почему Paint в SetBitmap стоит раньше присваивания? Получается при присваивании ты сначала перерисовываешь, а потом меняешь битмап, то есть изменённый не отрисуется.


 
SPeller ©   (2002-11-18 01:52) [2]


> А почему Paint в SetBitmap стоит раньше присваивания?

Это не влияет. Если сделать присвоение первым то результат тот же. Тем более перед отрисовкой стоит проверка if not fBitmap.Empty then


 
Gandalf   (2002-11-20 10:02) [3]

А ты не забыл битмап создать, fBitmap:=TBitmap.Create? Можешь код кинуть, там посмотрим.


 
Gandalf   (2002-11-20 19:55) [4]

Малений урок по компоненто строению... я как-то сразу не заметил, не люблю код на глаз проверять.

procedure TKOLSPLPicture.SetBitmap( const NV: TBitmap );
begin
Paint;
//fBitmap := NV; // Так делать незя!
fBitmap.Assign(NV);
end;


 
SPeller ©   (2002-11-21 11:57) [5]

Протупил... :-))
Просто последние с пол-тысячи присвоений свойств я делал для простых переменных, а тут машинально написал... ))



Страницы: 1 вся ветка

Текущий архив: 2003.07.21;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.018 c
8-67933
Bill
2003-03-29 21:29
2003.07.21
Отсечение кривых линий


3-67659
Igor Mish
2003-06-25 16:40
2003.07.21
что за файлы *.lck


1-67764
Кен
2003-07-07 04:27
2003.07.21
RxLib Как избежать замены русских букв на знаки вопросов ?


3-67668
s_ser
2003-06-26 13:00
2003.07.21
Работать с BLOB полями в INTERBASE, через IBX компоненты.


14-68027
Klot
2003-07-04 18:43
2003.07.21
Настройка среды