Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
14-18950
Станислав
2001-11-29 10:42
2002.02.07
Днепропетровск


3-18741
Andrey007
2001-12-29 10:31
2002.02.07
Вопрос по Query.Locate.


3-18728
Akhmadey
2002-01-10 07:58
2002.02.07
Где скачать бы, а?


7-19013
SERGX
2001-10-27 18:25
2002.02.07
плиз


1-18800
MystiX
2002-01-24 15:02
2002.02.07
Компоненты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский