Главная страница
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.014 c
6-67936
IronWit
2003-05-15 11:09
2003.07.21
как из dll получить кол-во писем на pop3 сервере


4-68134
PSA
2003-05-19 16:14
2003.07.21
Работа с окнами на ActiveX


14-67972
Dmitriy O.
2003-07-03 08:32
2003.07.21
Чем сейчас занимается


3-67728
niko4543
2003-06-27 17:22
2003.07.21
База данных в Делфи.


3-67677
seregin
2003-06-26 14:34
2003.07.21
IB/FB - Запрос по подзапросу с группировкой