Форум: "Потрепаться";
Текущий архив: 2002.02.07;
Скачать: [xml.tar.bz2];
ВнизПроблема при разработке графического компонента. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c