AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Klasse erstellen funktioniert nicht...

Ein Thema von Abraxas · begonnen am 28. Feb 2008 · letzter Beitrag vom 29. Feb 2008
 
NickelM

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

Re: Klasse erstellen funktioniert nicht...

  Alt 29. Feb 2008, 13: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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:13 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