Einzelnen Beitrag anzeigen

Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Button Click aus VCL-Komponente heraus

  Alt 17. Apr 2013, 22:53
Du machst einfach Dinge sichtbar die nicht sichtbar sind, oder implementiert neue Methoden ohne gleich eine Komponente schreiben zu müssen. Das Prinzip ist dasselbe. Ein Beispiel wäre hier ein Panel auf dessen Canvas man normalerweise nicht direkt zugreifen kann und welches kein OnPaintEvent hat.
Wenn man das ganze zwischendurch doch mal brauchen sollte kann man sowas machen:

Delphi-Quellcode:
unit Unit6;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TPanel = Class(ExtCtrls.TPanel)
  private
    FPaint: TNotifyEvent;
  protected
    Procedure Paint; override;
  public
    Property Canvas;
    Property OnPaint: TNotifyEvent read FPaint Write FPaint;
  End;

  TForm6 = class(TForm)
    Panel1: TPanel;
    procedure FormCreate(Sender: TObject);
  private
    procedure PanelPaint(Sender: TObject);
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form6: TForm6;

implementation

{$R *.dfm}
{ TPanel }

procedure TPanel.Paint;
begin
  inherited;
  if Assigned(FPaint) then
    FPaint(self);
end;

procedure TForm6.PanelPaint(Sender: TObject);
begin
  TPanel(Sender).Canvas.Ellipse(0, 0, 100, 100);
end;

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

end.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat