Einzelnen Beitrag anzeigen

NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Klasse erstellen funktioniert nicht...

  Alt 29. Feb 2008, 14:48
Hm...
also ich meine warum schwer, wenns auch einfach geht.

Deklarie doch einfach Felder, die für die Erzeugung gebraucht werden.
Ich würde dafür erlich gesagt von TGrahpicControl ableiten, dadurch hast du die Paint Funktion bereits, die du dan überschreiben kannst. Mach es so:

Delphi-Quellcode:
unit Uhren;

interface

uses Math, Graphics, Sysutils;

type TKoordinaten=record
    X,Y: Integer;
    end;

type TUhren=class(TGraphicControl) //hoffe ist richtig geschrieben
  private
    FUhrFarbe : TColor;
    FRahmenFarbe : TColor;
    FMinutenFarbe : TColor;
    FStundenFarbe : TColor;
    uhX,uhY, uRadius : Integer;
    function Koor(Winkel, Laenge: Integer):TKoordinaten;
    procedure SetUhrFarbe(Value : TColor);
    procedure SetRahmenFarbe(Value : TColor);
    procedure SetMinutenFarbe(Value : TColor);
    procedure SetStundenFarbe(Value : TColor);
  public
    property UhrFarbe : TColor read FUhrFarbe write SetUhrFarbe;
    property RahmenFarbe : TColor read FRahmenFarbe write SetRahmenFarbe;
    property MinutenFarbe : TColor read FMinutenFarbe write SetMinutenFarbe;
    property StundenFarbe : TColor read FStundenFarbe write SetStundenFarbe;
    procedure Paint; override;
    constructor Create; override;
    destructor Destroy; override;
  end;

implementation

constructor TUhren.Create;
begin
inherited Create;
uhX:=X;
uhY:=Y;
uRadius:=Radius;
end;

destructor TUhren.Destroy;
begin
inherited Destroy;
end;

function TUhren.Koor;
var X,Y: Integer;
begin
X:= Round(sin(Winkel)*Laenge);
Y:= Round(sqrt(sqr(Laenge)-sqr(x)));
case Winkel of
0..90: begin
        Koor.X:=uhx+X;
        Koor.Y:=uhy+Y;
        end;
91..180: begin
        Koor.X:=uhx+X;
        Koor.Y:=uhy-Y;
        end;
181..270: begin
        Koor.X:=uhx-X;
        Koor.Y:=uhy-Y;
        end;
271..359: begin
        Koor.X:=uhx-X;
        Koor.Y:=uhy+Y;
        end;
end;
end;

procedure TUhren.Paint;
var Temp: String;
    Mins: Integer;
    Ziel: TKoordinaten;
begin
Temp:=TimeToStr(Time);
Mins:= StrToInt(Temp[4]+Temp[5]);
Ziel:=Koor((6*Mins),trunc(uRadius*(5/6)));
with Canvas do
begin
Pen.Color:= FMinutenFarbe;
MoveTo(uhx,uhy);
LineTo(Ziel.X,Ziel.Y);
end;
Temp:=TimeToStr(Time);
Mins:= StrToInt(Temp[1]+Temp[2]);
Ziel:=Koor((30*Mins),Round(uRadius*(0.5)));
with Canvas do
begin
Pen.Color := FStundenFarbe;
MoveTo(uhx,uhy);
LineTo(Ziel.X,Ziel.Y);
Pen.Color:=FRahmenFarbe;
Brush.Color:=FUhrFarbe;
Ellipse(uhx-uRadius,uhy-uRadius,uhx+uRadius,uhy+uRadius);
end;
 
end;

end.
EDIT: Sorry, habe vergessen diese rauszunehmen.

So hoffe du verstehst, wie ich es umgeformt habe. Das habe ich jetzt aus dem Kopf geschrieben.
Versuch mal zu kompelieren und hoffe es klappt.

Gruß NickelM
Nickel
  Mit Zitat antworten Zitat