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

Вниз

Проблема при разработке графического компонента.   Найти похожие ветки 

 
VEG ©   (2001-12-15 21:35) [0]

Ну, вот решился начать учиться разработке компонентов... Это ДЕЙСТВИТЕЛЬНО не трудно, если РАЗОБРАТЬСЯ... Так вот, пытаюсь сделать компонент типа TImage. Вот куски кода:

unit Muar;

interface

uses
Classes, Graphics, Controls, ExtCtrls;

type
TMuar = class(TImage)
private

protected
procedure Paint; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published

end;

procedure Register;

implementation
{$R Resources.res}

procedure TMuar.Paint;
var
FTD:integer;
bm:TBitmap;
begin
bm:=TBitmap.Create;
bm.Width:=Width;
bm.Height:=Height;

{Обрабатываю BitMap bm}

Canvas.Draw(0,0,bm);//А здась чего-то виснет(ошибки не происходит)
bm.Free;
end;

constructor TMuar.Create(AOwner: TComponent);
var
i:integer;
begin
inherited;
Align:=alTop;
Height:=50;
Transparent:=True;
AutoSize:=False;
Paint;
end;

destructor TMuar.Destroy;
begin
inherited;
end;

procedure Register;
begin
RegisterComponents("Samples", [TMuar]);
end;

end.

Так вот, в строке "Canvas.Draw(0,0,bm);" прога с этим компонентом чего-то виснет...


 
vasco ©   (2001-12-15 23:24) [1]

Ты вычеркнул самое интересное:
bm:=TBitmap.Create;
bm.Width:=Width;
bm.Height:=Height;

{Обрабатываю BitMap bm}

Canvas.Draw(0,0,bm);//А здась чего-то виснет(ошибки не происходит)
bm.Free;

И вообще, попробуй для начала подсунуть Canvas.Draw какой-нибудь битмап левый, например, рисунок TImage. Если скушает, тогда ты где-то портишь свой битмап в коде {Обрабатываю BitMap bm}.


 
DK ©   (2001-12-16 02:46) [2]

У тебя просто происходит рекурсивный вызов процедуры Paint.
Попобуй рисовать так: Canvas.CopyRect(ClientRect, bm.Canvas, ClientRect);
И всё же в данном случае destructor совсем не нужен.


 
BOSS_007 ©   (2001-12-16 12:23) [3]

Так, ладно, я попробовал строчку Canvas.Draw(0,0,bm); заменить на Picture.Bitmap:=bm;. Произошло то же самое... А ваши подсказки сейчас попробую...


 
VEG ©   (2001-12-16 12:32) [4]

С моего компа выходил один чурка... Кароль забыл старый поставить...:-)
Так, ладно, я попробовал строчку Canvas.Draw(0,0,bm); заменить на Picture.Bitmap:=bm;. Произошло то же самое... А ваши подсказки сейчас попробую...


 
РУС ©   (2001-12-16 12:41) [5]

Чё-то я не догнал... Дык это ты в чате флудил?


 
vasco ©   (2001-12-16 14:14) [6]

>DK
Вообще-то не должно...
>VEG
Но если это так, то надо добавить тестовую переменную (логическую) и при входе в Paint проверять, если она равна true, то выходим из Paint. Если же нет, устанавливаем ее в true, производим рисование, "выключаем" эту переменную ( false) и завершаем Paint.


 
VEG ©   (2001-12-16 18:17) [7]

>РУС
Нет, флудил не я, сосед мой енто все затеял и осуществил... Меня уговорил, что бы я никому ниче не говорил, но он провалился: В моем счастливчике он придумывал вопросы, и в разделе Thanks написан его ник и E-Mail. У его нет выхода в и-нет, поэтому он опять таки меня уговорил(впервые), чтобы он вышел от меня в и-нет, а за это он мне придумает кучу вопросов... Это человек он такой... Любит выпендриваться по и-нету перед умнейшими его. Сам то он геймер, в программерстве ничего не понимает, поэтому и хочет повыпендриваться перед программерами. Вы бы у него спросили, например, что такое For To Do, он бы ничего не ответил т.к. он только знает только для чего есть begin и end. Баловаться он тут уже наврятли будет, т.к. он вечно в разных местах себя крутым вертит. Это ему, наверное, очень нравиться... Ты бы видел как он сидел у меня и ржал!!!
=>Это я ему дал выйти в и-нет первый и последний раз, а сам он выходит в основном из почты...
P.S: Не говори ему, если он еще раз придет сюда, что я рассказал тебе его дырку. Во время разгавора скажи, что кажысь знаешь откуда он:В моем счастливчике раздел Thanks его имя и E-Mail. Я даже больше, чем уверен, что он сюда больше не вернется после этого.


 
РУС ©   (2001-12-16 18:42) [8]

>>VEG
Ну-ну...


 
DK ©   (2001-12-19 03:11) [9]

2vasco © (16.12.01 14:14)
> >DK
>Вообще-то не должно...


Если это относится к моему ответу про рекурсию, то я тогда пробовал оригинальный и предложенный мною вариант.
Второй работал корректно, первый вызывал страшные глюки глюки, кроме того постоянно моргал.
Сейчас перепроверить не могу (снёс временно Дельфи - срочно нужно было место)



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

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

Наверх




Память: 0.49 MB
Время: 0.013 c
1-18923
LamerMen
2002-01-24 09:56
2002.02.07
Что использовать TMemo TR..Edit?


1-18857
@andrew
2002-01-21 11:15
2002.02.07
Привет Всем! У меня почему-то такой глюк.


3-18697
Mr.Hunter
2002-01-09 12:18
2002.02.07
Как определить имя БД , зная только название поля


1-18839
DJ X
2002-01-18 08:05
2002.02.07
Генератор паролей


1-18809
Муть
2002-01-24 11:54
2002.02.07
TRichEdit и горячие клавиши