Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Auf TGraphicControl zeichnen (https://www.delphipraxis.net/135982-auf-tgraphiccontrol-zeichnen.html)

R2009 21. Jun 2009 16:16


Auf TGraphicControl zeichnen
 
Hi,

ich möchte auf eine von TGraphicControl abgeleitete Klasse zeichnen.
Den canvas kann ich nicht erreichen weil der unter protected deklariert ist.
Wie krieg ich die abgeleitete klasse dazu dass ich auf den canvas von TGraphicControl zeichnen kann?
Vielleicht steh ich auch Heute etwas auf dem Schlauch.

Viele Grüsse

DeddyH 21. Jun 2009 16:32

Re: Auf TGraphicControl zeichnen
 
Ist das Deine eigene Klasse?

R2009 21. Jun 2009 16:37

Re: Auf TGraphicControl zeichnen
 
Hi,
ich habe tz3d davon abgeleitet. Bei der abgeleiteten Klasse tritt das Problem auf.

Grüsse

DeddyH 21. Jun 2009 16:53

Re: Auf TGraphicControl zeichnen
 
Ich versteh es immer noch nicht ganz. Wenn Du ableitest, kannst Du den Canvas doch unter public veröffentlichen.

SirThornberry 21. Jun 2009 18:18

Re: Auf TGraphicControl zeichnen
 
Und wenn du ableitest kannst du in der abgeleiteten Klasse auf die Sachen im Protected zugreifen. Entsprechend brauchst du nicht mal etwas im Public veröffentlichen.

R2009 22. Jun 2009 05:39

Re: Auf TGraphicControl zeichnen
 
Hi,

Zitat:

Und wenn du ableitest kannst du in der abgeleiteten Klasse auf die Sachen im Protected zugreifen. Entsprechend brauchst du nicht mal etwas im Public veröffentlichen.
Gerade das geht nicht! In der abgeleiteten Klasse komm ich an den canvas nicht heran.


Mal eine blöde Frage:
Wie veröffentlicht man denn etwas was in der Originalklasse unter protected stand?

Vielen Dank

DeddyH 22. Jun 2009 08:41

Re: Auf TGraphicControl zeichnen
 
Zitat:

Zitat von R2009
Gerade das geht nicht! In der abgeleiteten Klasse komm ich an den canvas nicht heran.

Ist mir unbegreiflich. Wie versuchst Du es denn?

Zitat:

Zitat von R2009
Mal eine blöde Frage:
Wie veröffentlicht man denn etwas was in der Originalklasse unter protected stand?

Indem man es unter public schreibt. Schau mal in die VCL-Sourcen, da ist es oft so, dass eine Elternklasse vom Typ TCustomIrgendwas deklariert wird, welche nur protected-Eigenschaften aufweist. Von dieser Elternklasse wird dann die "eigentliche" VCL-Klasse TIrgendwas abgeleitet, welche einfach nur die benötigten Eigenschaften im public-Abschnitt aufweist.
Delphi-Quellcode:
type TCustomIrgendwas = class(TWuppdi)
  ...
protected
  property Bla: TBla read FBla write FBla;
  ...
end;

TIrgendwas = class(TCustomIrgendwas)
...
public
  property Bla;
...
end;

R2009 23. Jun 2009 05:51

Re: Auf TGraphicControl zeichnen
 
Hi,

Delphi-Quellcode:
unit Unit1;

interface

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

type
  T3d=    class(Tgraphiccontrol)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var t:t3d;
begin
  t:=t3d.Create(self);
  t.Parent:=form1;
     t.canvas.moveto(1,1);
     t.canvas.lineto(100,100);
  canvas.Assign(t.canvas); <------
  t.Free;
end;

end.
Jetzt funktioniert das plötzlich, nachdem ich in der abgeleiteten Klasse privat und public eingefügt habe.
Sonst nichts verändert.

Ich hab leider noch einen Fehler:
Warum lässt sich der canvas des tgraphiccontrol nicht dem canvas der Form zuweisen?
Habs auch mit einer Bitmap probiert:
Fehlermeldung:
Tcontrolcanvas kann nicht zu Tcontrolcanvas zugewiesen werden!

Ziel meiner Aktion ist es einfach einen canvas zu haben auf den ich zeichnen und der zugewiesen werden kann.

Viele Grüsse

Lannes 23. Jun 2009 06:56

Re: Auf TGraphicControl zeichnen
 
Hallo,
Zitat:

Zitat von R2009
...Ziel meiner Aktion ist es einfach einen canvas zu haben auf den ich zeichnen und der zugewiesen werden kann.

suchst Du sowas?
Canvas einer RadioGroup zugewiesen


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz