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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2016, 08:42   #1
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию Cоздание своего компонента. не приходят Create и Paint

Здравствуйте.
Delphi 2007 пытаюсь сделать свой компонент наследник от TCustomPanel.
Код:
unit ResizeCorner;

interface

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

type
  TResizeCorner = class(TCustomPanel)
  private
    { Private declar ations }
  protected
    { Protected declarations }
  public
    { Public declarations }
    procedure Paint;   override;
    constructor Create(aOwner : TComponent);override;
//    destructor Destroy; override;
  published
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('My', [TResizeCorner]);
end;

constructor TResizeCorner.Create(aOwner : TComponent);
begin
  inherited Create(aOwner);
  canvas.Brush.Color := cllime;
end;

procedure TResizeCorner.Paint;
begin

//  Canvas.FillRect(ClientRect);
//  FillRgn(Canvas.Handle,rgn,Canvas.Brush.Handle);
  MessageBox(0,'','',0);
end;

end.
События Create и Paint не приходят.
BLACK_RAIN вне форума Ответить с цитированием
Старый 28.03.2016, 09:49   #2
TaLadno
Форумчанин
 
Регистрация: 03.06.2015
Сообщений: 393
По умолчанию

Код:
type
  TResizeCorner = class(TCustomPanel)
  private
    { Private declar ations }
  protected
    { Protected declarations }
    procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
  public
    { Public declarations }
    constructor Create(aOwner : TComponent);override;
//    destructor Destroy; override;
  published
    { Published declarations }
  end;

constructor TResizeCorner.Create(aOwner: TComponent);
begin
  inherited;
  self.canvas.Brush.Color := cllime;
end;

procedure TResizeCorner.WMPaint;
begin
  //inherited;
  Canvas.FillRect(ClientRect);
  //FillRgn(Canvas.Handle, self.Canvas.re ,Canvas.Brush.Handle);
end;
Код:
procedure TForm2.FormCreate(Sender: TObject);
var ResizeCorner: TResizeCorner;
begin
  ResizeCorner := TResizeCorner.Create(self);
  ResizeCorner.Parent := self;
  //ResizeCorner.Caption := 'TResizeCorner';
  ResizeCorner.Left := 10;
  ResizeCorner.Top := 10;
  ResizeCorner.Width := 200;
  ResizeCorner.Height := 50;
end;
А зачем это все?
Вы там держитесь.
TaLadno вне форума Ответить с цитированием
Старый 28.03.2016, 13:01   #3
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Разобрался. После изменения кода, нужно каждый раз делать build проекта. А при добавления новых свойств в компонент, еще и переустанавливать его каждый раз. Иначе, эффекта 0

p.s. А что за хрень случилась? Сделал два похожих тестовых компонента. Оба работали. За ненадобностью удалил один, а второму теперь опять Create перестал приходить. Его и на форму кинуть нельзя. Пишет Control "" has no parent control. Cейчас пересоздам пакет и всё заработает. Но почему???

Последний раз редактировалось BLACK_RAIN; 28.03.2016 в 13:32.
BLACK_RAIN вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WPF написание своего компонента JunkieBeat C# (си шарп) 5 19.08.2014 11:53
EasyListView - вставка своего компонента куда-нибудь, или аналог компонента ListView Человек_Борща Компоненты Delphi 12 11.02.2013 00:01
переписать событие своего компонента Dimasw Компоненты Delphi 3 25.09.2011 22:40
Проблема с подключением своего компонента к программе SalasAndriy Компоненты Delphi 7 03.10.2010 10:06
Помогите в создании своего компонента hunter03 Компоненты Delphi 1 06.11.2009 09:36