1. beim compilen bekommst nen EAccessViolation? das halt ich fürn gerücht
eher bei der ausführung deines codes
2. hat dir mammi nich erklärt in klassen ein/ausgabe methoden von den reinen datenverarbeitenden methoden zu trennen?
3. klassenprozedur wäre was anderes
"class procedure" - war etwas verwirrt beim öffnen dieses dingsens hier
4. wie man objekt orientiert programmiert -
http://www.delphibasics.co.uk/Article.asp?Name=OO - das solltest dir eventuell mal zu gemüte führen
5.
Delphi-Quellcode:
type
TGraph = class{(TObject)}
private
FXLength: integer;
FYLength: integer;
FCenter: TPoint;
FCanvas: TCanvas;
procedure SetXLength(const Value: integer);
procedure SetYLength(const Value: integer);
procedure SetCenter(const Value: TPoint);
public
constructor Create(ACanvas: TCanvas);
procedure DrawAxes;
procedure DrawHorzMarkers(Left: TPoint; Len: integer);
procedure DrawVertMarkers(Top: TPoint; Len: integer);
property XLength: integer read FXLength write SetXLength;
property yLength: integer read FYLength write SetYLength;
property Center: TPoint read FPoint write SetPoint;
property Canvas: FCanvas write FCanvas;
end;
implementation
constructor TGraph.Create(ACanvas: TCanvas);
begin
inherited Create;
FCanvas := ACanvas;
end;
procedure TGraph.SetXLength;
begin
if FXLength <> Value then
FXLength := Value;
end;
procedure TGraph.SetYLength;
begin
if FYLength <> Value then
FYLength := Value;
end;
procedure TGraph.SetCenter;
begin
if (FCenter.X <> Value.X) or (FCenter.Y <> Value.Y) then
FCenter := Value;
end;
procedure TGraph.DrawAxes;
begin
if not Assigned(FCanvas) then
Exit;
with FCanvas do begin
// hier der malkrams
end;
end;
// bei den andern Draw* isses dann dasselbe, und du greifst auf FXLength, FYLength & FCenter zurück -