![]() |
Probleme mit Create eigener klasse -> Zugriffsverletzung
hi, ich will eine klasse machen
mein ansatz:
Delphi-Quellcode:
beim programmstart bekomm ich eine zugriffsverletzung! :(
...
TStein = class(TControl) public Pressed: Boolean; constructor create; property OnMouseDown; property Caption; property Color; end; var Form1: TForm1; test: TStein; ... constructor TStein.Create(AOwner: TComponent); begin inherited Create(AOwner); Color := clBtnFace; Pressed := false; Caption := ''; SetBounds (0,0,50,50); end; procedure TForm1.FormCreate(Sender: TObject); begin test.create(form1); end; ... kann mir jemand helfen? von klassen erstellen hab ich kaum ahnung! PS: wenn ich hier falsch bin, verschiebt mich und benachrichtigt mich bitte ! :oops: :-D danke im voraus :dp: |
Re: eigene KLasse: Probleme
Delphi-Quellcode:
[edit] Hab das mal etwas verbessert. [/edit]
procedure TForm1.FormCreate(Sender: TObject);
begin test := TStein.create(self); end; |
Re: eigene KLasse: Probleme
danke :wall:
jetzt bekomm ich keine zugriffsverletzung mehr :) aber: ich hab keine ahnung, wie ich jetzt machen soll, dass ich ein rechteck mit schrift bekomm!(geschweige denn mit bildern was ich für später vorhab!) :wiejetzt: ich vermute nur, dass ich irgendwas mit canvas brauch oder? ich bin für jede hilfe dankbar! :dp: :firejump: |
Re: eigene KLasse: Probleme
Dann würde ich an Deiner Stelle von TGraphicControl oder von TCustomControl ableiten, die bringen beide bereits einen Canvas mit. Wenn Deine Komponente kein Fensterhandle für z.B. den Fokus braucht, empfiehlt sich TGraphicControl. Näheres dazu kannst Du in der Hilfe nachlesen.
|
Re: eigene KLasse: Probleme
Könntest du bitte dem Thema einen aussagekräftigen Titel geben der das Problem ansatzweise beschreibt? (zum Beispiel die Fehlermeldung etc.)
|
Re: Probleme mit Create eigener klasse -> Zugriffsverletz
@ Sir Thornberry
besser? ich hab jetzt mal einen ansatz, aber es wird immernoch nichts angezeigt!:
Delphi-Quellcode:
...
constructor TStein.Create(AOwner: TComponent); begin inherited Create(AOwner); Color := clBtnFace; Canvas.Brush.Color := Color; Pressed := false; Caption := 'Test'; SetBounds (0,0,50,50); x := (Width - Canvas.TextWidth(Caption)) div 2; y := (Height- Canvas.TextHeight(Caption)) div 2; Canvas.Rectangle (3, 3, Width-3, Height-3); canvas.TextOut(x,y, Caption); end; ... |
Re: Probleme mit Create eigener klasse -> Zugriffsverletz
Du musst die Paint-Methode überschreiben.
|
Danke im Voraus
:dp:
was gehört da rein? ich hab mal folgendes versucht:
Delphi-Quellcode:
allerdings wird immernoch nichts angezeigt :wall: :wiejetzt:
...
constructor TStein.Create(AOwner: TComponent); begin inherited Create(AOwner); Color := clBtnFace; Canvas.Brush.Color := Color; Pressed := false; Caption := 'Test'; SetBounds (0,0,50,50); end; procedure TStein.Paint; begin x := (Width - Canvas.TextWidth(Caption)) div 2; y := (Height- Canvas.TextHeight(Caption)) div 2; Canvas.Rectangle (3, 3, Width-3, Height-3); canvas.TextOut(x,y, Caption); end; ... Vielen Dank im Voraus |
Re: Probleme mit Create eigener klasse -> Zugriffsverletz
Wenn es nicht zuviel ist, zeig doch nochmal den gesamten Quelltext.
|
Re: Probleme mit Create eigener klasse -> Zugriffsverletz
Delphi-Quellcode:
bitte sehr!
unit Jong;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, stdctrls; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; TStein = class(TGraphicControl) private { Private-Deklarationen } x,y: Integer; Color: TColor; Pressed: Boolean; protected { Protected-Deklarationen } procedure Paint; override; procedure MouseDown (Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; public { Public-Deklarationen } constructor Create(AOwner: TComponent); override; property Caption; end; var Form1: TForm1; test: TStein; implementation {$R *.DFM} constructor TStein.Create(AOwner: TComponent); begin inherited Create(AOwner); Color := clBtnFace; Canvas.Brush.Color := Color; Pressed := false; Caption := 'Test'; SetBounds (0,0,50,50); end; procedure TStein.MouseDown (Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin inherited MouseDown (Button, Shift, X, Y); if Button = mbLeft then begin Pressed := true; Paint; end; end; procedure TStein.Paint; begin x := (Width - Canvas.TextWidth(Caption)) div 2; y := (Height- Canvas.TextHeight(Caption)) div 2; Canvas.Rectangle (3, 3, Width-3, Height-3); canvas.TextOut(x,y, Caption); end; procedure TForm1.FormCreate(Sender: TObject); begin test := TStein.Create(self); end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 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