Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2010, 19:40   #1
Flip-er
 
Регистрация: 03.05.2009
Сообщений: 4
Вопрос Проблема при написании компонента на основе TCustomControl

Привет всем!!!
Я уже две недели мучаюсь с одной проблемой, пытался написать компонент (кнопку) на основе TCustomControl:
Код:
unit VTSButton;

interface

uses
  SysUtils, Classes, Controls,
  Windows, Graphics;

type
  TVTSButton = class(TCustomControl)
  private
    FBack: TBitMap;
    FLeaveImg: TBitMap;
    procedure LoadImg(Value: TBitMap);
  protected
  public
    constructor Create(AOWner: TComponent); override;
    destructor Destroy; override;
    procedure Paint; override;
  published
    property Image: TBitMap read FBack write LoadImg;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('VTSComponents', [TVTSButton]);
end;

{ TVTSButton }

constructor TVTSButton.Create(AOWner: TComponent);
begin
  inherited Create(AOWner);
  ControlStyle := ControlStyle - [csOpaque];
  Width := 100;
  Height := 20;
  FBack := TBitMap.Create;
  FLeaveImg := TBitMap.Create;
end;

destructor TVTSButton.Destroy;
begin
  FBack.Destroy;
  FLeaveImg.Destroy;
  inherited;
end;

procedure TVTSButton.LoadImg(Value: TBitMap);
begin
  FBack.Width := Value.Width;
  FBack.Height := Value.Height;
  BitBlt(FBack.Canvas.Handle, 0, 0, Value.Width, Value.Height,
         Value.Canvas.Handle, 0, 0, SRCCOPY);

  Width := FBack.Width;
  Height := FBack.Height;

  FLeaveImg.Width := FBack.Width;
  FLeaveImg.Height := FBack.Height;
  BitBlt(FLeaveImg.Canvas.Handle, 0, 0, FBack.Width, FBack.Height,
         FBack.Canvas.Handle, 0, 0, SRCCOPY);
end;

procedure TVTSButton.Paint;
begin
  inherited;
  BitBlt(Canvas.Handle, 0, 0, Width, Height, FBack.Canvas.Handle,
         0, 0, SRCCOPY);
end;

end.
этот исходник работает, но если в процедуре Paint попробовать вывести FleaveImg
Код:
procedure TVTSButton.Paint;
begin
  inherited;
  BitBlt(Canvas.Handle, 0, 0, Width, Height, FLeaveImg.Canvas.Handle,
         0, 0, SRCCOPY);
end;
то при запуске программы cavas моего компонента пустой, почему?
как решить данную проблему?
Flip-er вне форума Ответить с цитированием
Старый 27.03.2010, 01:07   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Почитайте статейку, думаю, будет пользительно:
http://articles.org.ru/cfaq/index.php?qid=2532
mihali4 вне форума Ответить с цитированием
Старый 27.03.2010, 13:44   #3
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

1. Как создается контрол ?
2. Если выводите FLeaveImg, то удостоверьтесь что в данном TBitmap что-то есть (т.е. как вижу, надо быть уверенным что LoadImg был вызван)
BOBAH13 вне форума Ответить с цитированием
Старый 27.03.2010, 14:53   #4
Flip-er
 
Регистрация: 03.05.2009
Сообщений: 4
По умолчанию

я раньше делал так:
Код:
procedure TVTSButton.Paint;
begin
  inherited;
  if FLeaveImg.Handle <> 0
   then
    BitBlt(Canvas.Handle, 0, 0, Width, Height, FLeaveImg.Canvas.Handle,
           0, 0, SRCCOPY);
end;
но прикол в том что, в режиме редактирования формы изображение на моем компоненте есть, а при запуску программы изображения нет

Последний раз редактировалось Flip-er; 27.03.2010 в 15:07.
Flip-er вне форума Ответить с цитированием
Старый 28.03.2010, 19:27   #5
Flip-er
 
Регистрация: 03.05.2009
Сообщений: 4
Плохо

опять тупик
Flip-er вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема при создании компонента Levsha100 Компоненты Delphi 3 02.05.2009 12:05
Проблема перехвата сообщений при создании невизуального компонента volod3000 Компоненты Delphi 7 08.03.2009 14:13
Возникла проблема при написании чата HelP mar4elo Работа с сетью в Delphi 12 29.11.2008 22:16
Предлагаю сотрудничать, при написании программы. misterio8800 Фриланс 17 19.11.2008 21:27
Помогите при написании WebBrowser kuzmich Компоненты Delphi 17 15.12.2007 18:58