• Dmitry_177 (30.04.08 22:39) [0]
    мне понадобилось в TPanel добавить событие OnPaint, чтобы в нем отрисовывать панель.. в интернете нашел вот такой способ:

    type
     TPanel = class(ExtCtrls.TPanel)
     private
       FOnPaint: TNotifyEvent;
     protected
       procedure Paint; override;
     public
       property Canvas;
       property OnPaint: TNotifyEvent read FOnPaint write FOnPaint;
     end;

     TForm1 = class(TForm)
       procedure FormCreate(Sender: TObject);
       procedure PanelPaint(Sender: TObject);
     end;

    ...

    procedure TPanel.Paint;
    begin
     inherited;
     if Assigned(OnPaint) then OnPaint(Self);
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Panel1.OnPaint := PanelPaint;
    end;

    procedure TForm1.PanelPaint(Sender: TObject);
    begin
    Panel1.Canvas.TextOut(100, 100, 'тест');
    end;



    На форму кинул обычную панель.. Но вот как это работает не пойму..
  • korneley © (30.04.08 22:45) [1]
    Метод, кстати, спорный. Есть апологеты и наоборот. А работает просто - кто последний имя типа определил, тот и "папа" :)
  • Dmitry_177 (30.04.08 22:47) [2]

    > А работает просто - кто последний имя типа определил, тот
    > и "папа" :)


    наверно все же лучше компонентом слеть? как вы считаете?
  • DVM © (30.04.08 22:51) [3]

    > наверно все же лучше компонентом слеть?

    Лучше конечно, а то этот способ выше чреват путаницей. А чтобы не инсталлить компонент в процессе разработки по сто раз, его лучше создавать в рунтайм для проверки.
Есть новые Нет новых   [134490   +7][b:0][p:0.001]