Announcement

Collapse
No announcement yet.

Canvas

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Canvas

    Hallo ! Ich habe folgende Situation: Ich habe einen Pointer auf ein Objekt vom Typ TChart in der Hand. Nun möchte ich diesen TChart als Bitmap an eine Komponente weiterreichen ohne den TChart zwischenzeitlich in der Zwischenablage oder auf der Platte speichern zu müssen.
    Hat jemand eine Idee?

  • #2
    Hallo Priscilla,<br>
    genau für diesen Fall habe ich mir vor langer langer Zeit einen<br>
    TCanvas Nachfahren erzeugt, der die Canvas-Eigenschaft
    veröffentlicht.<br>
    Setzte das TChart (Align=alClient) auf das Panel. Jetzt kannst du
    die Panel-Canvas in<br>
    eine Bitmap kopieren.<br>
    Jens Schumann <br>

    <pre><font size="1" face="Verdana">
    unit CanvasPanel;

    interface

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

    type
    TCanvasPanel = class(TPanel)
    private
    { Private-Deklarationen}
    fOnPaint : TNotifyEvent;
    fMouseEnter : TNotifyEvent;
    fMouseLeave : TNotifyEvent;
    protected
    { Protected-Deklarationen}
    protected
    procedure WndProc(var Message : TMessage); override;
    procedure CMMouseEnter(Var Message : TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(Var Message : TMessage); message CM_MOUSELEAVE;
    public
    { Public-Deklarationen}
    constructor Create(AOwner : TComponent); override;
    property Canvas;
    published
    { Published-Deklarationen }
    property OnPaint : TNotifyEvent read fOnPaint write fOnPaint;
    property OnMouseEnter : TNotifyEvent read fMouseEnter write fMouseEnter;
    property OnMouseLeave : TNotifyEvent read fMouseLeave write fMouseLeave;
    end;

    procedure Register;

    implementation

    procedure Register;
    begin
    RegisterComponents('Beispiele', [TCanvasPanel]);
    end;

    procedure TCanvasPanel.CMMouseEnter(var Message: TMessage);
    begin
    If Enabled then
    If Assigned(fMouseEnter) then fMouseEnter(Self);
    end;

    procedure TCanvasPanel.CMMouseLeave(var Message: TMessage);
    begin
    If Enabled then
    If Assigned(fMouseLeave) then fMouseLeave(Self);
    end;

    constructor TCanvasPanel.Create(AOwner : TComponent);
    begin
    inherited Create(AOwner);
    fOnPaint:=Nil;
    end;

    procedure TCanvasPanel.WndProc(var Message : TMessage);
    begin
    Inherited;
    If Message.Msg=WM_Paint then
    begin
    If Assigned(fOnPaint) then
    fOnPaint(Self);
    end;
    end;

    end.</font></pre&gt

    Comment

    Working...
    X