Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.11.04;
Скачать: [xml.tar.bz2];

Вниз

Ламерский вопрос про создание своих компонентов   Найти похожие ветки 

 
GGWIN   (2002-10-21 18:53) [0]

Имеется следующее как пример.
unit CoolPanel;

interface

uses
Windows, Messages, SysUtils, Classes, Controls, ExtCtrls;

type
TCoolPanel = class(TPanel)
private
FBGImage: TBitmap;
procedure SetBGImage(Value: TBitmap);
{ Private declarations }
protected
procedure WMPaint(var m: TWMPaint); message WM_PAINT;
procedure WMEraseBkgnd(var m: TWMEraseBkgnd); message WM_ERASEBKGND;
{ Protected declarations }
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
{ Public declarations }
published
property BGImage: TBitmap read FBGImage write SetBGImage;
{ Published declarations }
end;

procedure Register;

implementation

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

constructor TCoolPanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FBGImage := TBitmap.Create;
end;

destructor TCoolPanel.Destroy;
begin
FBGImage.Free;
inherited Destroy;
end;

procedure TCoolPanel.SetBGImage(Value: TBitmap);
begin
if FBGImage <> Value then FBGImage.Assign(Value);
end;

procedure TCoolPanel.WMEraseBkgnd(var m : TWMEraseBkgnd);
begin
m.Result := LRESULT(False);
end;

procedure TCoolPanel.WMPaint(var m: TWMPaint);
var
x, y: Integer;
begin
inherited WMPaint;
y := 0;
while y < Height do
begin
x := 0;
while x < Width do
begin
Canvas.Draw(x, y, BGImage);
x := x + BGImage.Width;
end;
y := y + BGImage.Height;
end;
end;

end.

Вопрос почему при перетаскивании данного компонента на форму все наглухо виснет?


 
Ricks   (2002-10-21 18:59) [1]

Может из-за Сanvas.Draw? Может оно перерисовывает окно??? Может проще использовать BitBlt (и быстрей)???


 
GGWIN   (2002-10-21 19:15) [2]

Bitblt пробовал - та-же фигня.


 
VaS   (2002-10-21 19:24) [3]

вместо inherited WMPaint напиши просто inherited. Больше ошибок не видно вроде...



 
TTCustomDelphiMaster   (2002-10-21 19:28) [4]

А при создании run-time не виснет?


 
Набережных С.   (2002-10-21 19:43) [5]

У BGImage width = 0, равно как и Height;


 
GGWIN   (2002-10-21 19:47) [6]

В run-time - все пучком. А мне нуно и при разработке!


 
GGWIN   (2002-10-21 19:57) [7]

А размеры по-моему в данном случае не роляют.
Я же еще картинку не вбахал, а просто создал объект.


 
TTCustomDelphiMaster   (2002-10-21 20:04) [8]

А если картинки нет, то зачем ее рисовать?


 
GGWIN   (2002-10-21 20:17) [9]

Дык блин!
Перетаскиваешь ты на форму TImage - картинки еще нет.
Затем нажимаешь кнопочку рядом со свойством Picture и ставишь картинку - теперь картинка есть.
Мне нуно то-же самое но для своего компонета!
В чем блин проблема в выше приведенном коде!!!???


 
Набережных С.   (2002-10-21 20:40) [10]

Печально... У тебя цикл бесконечный.


 
GGWIN   (2002-10-21 21:12) [11]

В смысле...


 
TTCustomDelphiMaster   (2002-10-21 21:32) [12]

y := 0;
while y < Height do
begin
x := 0;
while x < Width do
begin
Canvas.Draw(x, y, BGImage);
x := x + 0;
end;
y := y + 0;


 
GGWIN   (2002-10-22 19:00) [13]

Это все ботва!!!
Но спасибо вам TTCustomDelphiMaster ваш ответ навел меня на правильную мысль.
Итак. Все кому интересно смотрите:
При перетаскивании данной панели на форму - она (панель) сразу-же пытается нарисоваться. А метод прорисовки пытается нарисовать еще не существующее изображение: BGImage.isEmpty (создано, но не заполнено).
И уже из этой причины получается следствие про бесконечный цикл.
Вот.
Всем спасибо!
Коллективный разум победил!


 
TTCustomDelphiMaster   (2002-10-22 19:13) [14]

спасибо Набережных С.


 
GGWIN   (2002-10-22 20:23) [15]

Упссс ...
Вообщем спасибо всем



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

Форум: "Основная";
Текущий архив: 2002.11.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.01 c
1-11188
Weare
2002-10-24 14:34
2002.11.04
Как распечатать *.jpg файл


3-11130
studentik
2002-10-15 16:45
2002.11.04
Работаю с БД InterBase6.5...


1-11158
VaS
2002-10-23 21:06
2002.11.04
string в record


1-11185
roadstar
2002-10-24 15:38
2002.11.04
Из C++


14-11492
qube
2002-10-15 10:37
2002.11.04
Опрос: последняя книга, которая...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский