Главная страница
    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.47 MB
Время: 0.014 c
14-11395
ICQ
2002-10-13 22:50
2002.11.04
Принцип работы собирания мыл


1-11163
Sam Stone
2002-10-24 11:09
2002.11.04
Слежение


14-11455
chsv
2002-10-12 17:45
2002.11.04
а какие хорошие книги есть по WIN API?


1-11287
Krez
2002-10-23 11:48
2002.11.04
Установка нового компонента


4-11556
@Ujin
2002-09-04 21:07
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский