TCustomControl abgeleitet

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
lazarus_newbee
Beiträge: 42
Registriert: So 5. Sep 2010, 14:09
OS, Lazarus, FPC: Win7 (L 0.9.28.2 FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Erfurt

TCustomControl abgeleitet

Beitrag von lazarus_newbee »

Hallo zusammen,
ich versuche gerade eine Klasse zu erstellen, die sich auf TForm.Canvas zeichnet und auf Click reagiert.

Code: Alles auswählen

unit feld;
...
Type TFeld = class(TCustomControl)
constructor create(aOwner:TComponent);
procedure paint;
public
  property iFeld : Integer read fiFeld write fiFeld;
private
  fiFeld: Integer;
end;
...
constructor TFeld.create(AOwner:TComponent);
begin
  inherited create(AOwner);
...
end;
 
procedure TFeld.Paint;
begin
  Canvas.Brush.Color:=clRed;
  Canvas.Ellipse(10,20,10,20);  // nur Ein Ausgabebeispiel
end;
Ich hoffe, dass sich das Objekt in der Paint-Methode zeichnet.
Im Hauptform soll dann gezeichnet werden

Code: Alles auswählen

programm project1;
...
TForm1 = class (TForm)
...
  procedure Button1Click(Sender);
end;
....
procedure Button1Click(Sender:TObject);
var Feld1 : TFeld;
begin
  Feld1:=TFeld.Create(self);
  Feld1.Show;  // oder wie kann ich das sonst anzeigen?
end;

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: TCustomControl abgeleitet

Beitrag von theo »

Du musst ihm einen Parent geben
Feld1.Parent:=Self.

Btw: Seltsames Snippet. Hast du das abgetippt oder wo kommt das her?
z.B:
procedure Button1Click(Sender:TObject);
müsste eig. so aussehen:
procedure TForm1.Button1Click(Sender: TObject);

Und das Schlüsselwort "programm" gibt's gar nicht. Das wäre "program", aber normalerweise würde da "unit Unit1;" stehen.

lazarus_newbee
Beiträge: 42
Registriert: So 5. Sep 2010, 14:09
OS, Lazarus, FPC: Win7 (L 0.9.28.2 FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Erfurt

Re: TCustomControl abgeleitet

Beitrag von lazarus_newbee »

So sollte es auch sein. Die Stunde war halt schon vorgerückt und ich hab das aus dem Kopf gemacht.
Die Geschichte mit dem Parent hab ich probiert, ich hab halt AOwner gecastet und verwendet.
Aber angezeigt wird der Kreis nicht

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: TCustomControl abgeleitet

Beitrag von theo »

lazarus_newbee hat geschrieben:So sollte es auch sein.
Nö, so sollte es nicht sein, weil der, welcher dir helfen will dann nicht weiss, was nun Tippfehler etc. ist und wo der Bug zu suchen ist.

Ist das fehlende "override" hinter Paint nur ein Tippfehler, oder vielleicht die Ursache deines Problems?

procedure Paint; override;

lazarus_newbee
Beiträge: 42
Registriert: So 5. Sep 2010, 14:09
OS, Lazarus, FPC: Win7 (L 0.9.28.2 FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Erfurt

Re: TCustomControl abgeleitet

Beitrag von lazarus_newbee »

Mit "so sollte es auch sein" war gemeint, daß Dein Hinweis zutreffend war.

Ähm... das andere versuch ich rauszufinden

lazarus_newbee
Beiträge: 42
Registriert: So 5. Sep 2010, 14:09
OS, Lazarus, FPC: Win7 (L 0.9.28.2 FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Erfurt

Re: TCustomControl abgeleitet

Beitrag von lazarus_newbee »

Das override hat auch nicht geholfen. Es wird nix angezeigt.

lazarus_newbee
Beiträge: 42
Registriert: So 5. Sep 2010, 14:09
OS, Lazarus, FPC: Win7 (L 0.9.28.2 FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Erfurt

Re: TCustomControl abgeleitet

Beitrag von lazarus_newbee »

Ich habs gefunden: Höhe und Breite waren nicht definiert und damit = 0

Antworten