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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2016, 15:41   #1
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию событие перерисовки для наследника TPanel

Код:
unit CustomDrawPanel;

interface

uses
  System.SysUtils, System.Classes, Vcl.Controls, Vcl.ExtCtrls, Vcl.Graphics,
  Winapi.Messages, Winapi.Windows;

type
  TDrawProc = procedure(Sender : TObject; Canvas_: TCanvas) of object;

type
  TCustomDrawPanel = class(TPanel)
  private
    { Private declarations }
    fOnRedawEvent : TDrawProc;
    procedure Paint; override;
    procedure WMPAINT(var msg: TWMPaint); message WM_PAINT;
//  procedure CustomDraw;
  protected
    { Protected declarations }
  public
    { Public declarations }
    constructor Create(aowner : TComponent); override;
    destructor Destroy; override;
  published
    { Published declarations }
    property OnRedraw : TDrawProc read fOnRedawEvent write fOnRedawEvent;
  end;

procedure Register;

implementation

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

constructor TCustomDrawPanel.Create(aowner: TComponent);
begin
  inherited Create(aowner);
end;

destructor TCustomDrawPanel.Destroy;
begin
  inherited;
end;

procedure TCustomDrawPanel.Paint;
begin
  Exit;
end;

procedure TCustomDrawPanel.WMPAINT(var msg: TWMPaint);
var
  ps : TPaintStruct;
begin
  BeginPaint(Handle, ps);
  if Assigned(fOnRedawEvent) then
  begin
    fOnRedawEvent(Self, Canvas);
  end;
  EndPaint(Handle, ps);

end;

end.
почему событие перерисовки приходит постоянно?
BLACK_RAIN вне форума Ответить с цитированием
Старый 14.07.2016, 16:33   #2
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

перенес событие в Paint - заработало. А почему так не работает? То есть работает, но постоянно приходит.
BLACK_RAIN вне форума Ответить с цитированием
Старый 14.07.2016, 16:51   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
перенес событие в Paint - заработало. А почему так не работает? То есть работает, но постоянно приходит.
Категорически советую: прежде чем писать наследника от какого-то чужого (пусть и стандартного) класса - ЧИТАТЬ ЕГО ИСХОДНИКИ!

Тогда и подобных вопросов не возникнет.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регионы для перерисовки NEoMASTERR Мультимедиа в Delphi 1 19.03.2015 10:42
Скорость перерисовки окна Arbis Win Api 8 30.03.2013 16:15
Событие для СЛЧИС() rubius2008 Microsoft Office Excel 0 25.02.2011 00:00
Мерцание при перерисовки компонента Altera Компоненты Delphi 2 25.03.2008 11:35
Компонент на основе TPanel для отображения погоды из интернета... xzDelphi Компоненты Delphi 7 08.01.2008 17:33