Главная страница
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.012 c
4-68127
sosv
2003-05-21 15:47
2003.07.21
Win API Call


14-67966
Peon
2003-07-05 15:36
2003.07.21
Билеты в Московский Энергетический Институт (МЭИ)


1-67776
Smart
2003-07-08 07:25
2003.07.21
Проблема с TListView


6-67945
ArtAlex
2003-05-10 23:08
2003.07.21
Web-формы


6-67958
Savaga
2003-05-15 11:56
2003.07.21
idHTTP.Get