AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Analoguhr

Ein Thema von MrFish · begonnen am 25. Apr 2004 · letzter Beitrag vom 11. Mai 2007
Antwort Antwort
Seite 1 von 5  1 23     Letzte » 
MrFish
Registriert seit: 16. Jul 2003
Ich habe ein Programm für eine Analoguhr geschrieben.
Es ist nur eine Übung gewesen, da ich noch Anfänger bin und mir Delpi selber beibringe.
Ich würde mich freuen wenn ihr mal drüberschaut und sagt was ihr davon haltet.
Delphi-Quellcode:
 unit Uhr;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TAnaloguhr = class(TForm)
    Edit1: TEdit;
    Uhr: TTimer;
    procedure UhrTimer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Analoguhr: TAnaloguhr;
  SecWinkel : integer;
  MinWinkel : Integer;
  StdWinkel : Integer;
  SecWinkelAlt : integer;
  MinWinkelAlt : integer;
  StdWinkelAlt : integer;
  Zeit : String;
  XPos : integer;
  YPos : Integer;
  Std : Integer;
  Min : Integer;
  Sec : Integer;


implementation

{$R *.dfm}

procedure TAnaloguhr.UhrTimer(Sender: TObject);


begin
{---------------Systemzeit auslesen und zuweisen -------------------}

Zeit := TimeToStr(Time);
Edit1.Text := Zeit;
Std := StrToInt(Copy(Zeit,1,2));
Min := StrToInt(Copy(Zeit,4,2));
Sec := StrToInt(Copy(Zeit,7,2));

{-------------Zeigerwinkel berechnen--------------------------------}

SecWinkel := (( 6 * Sec)+90);
MinWinkel := (( 6 * Min)+90);
StdWinkel := ((30 * Std)+90);

{------------Zeiger Löschen-----------------------------------------}
{-------------Sekunde-----------------------------------------------}

XPos := Trunc (cos(SecWinkelAlt * Pi /180) *(-100));
YPos := Trunc (sin(SecWinkelAlt * Pi /180) *(-100));

Canvas.MoveTo(150,150);
Canvas.Pen.Color := clBtnFace;
Canvas.Pen.Width := 1;
Canvas.LineTo((XPos + 150),(YPos + 150));

{--------------Minuten---------------------------------------------}

XPos := Trunc (cos(MinWinkelAlt * Pi /180) *(-100));
YPos := Trunc (sin(MinWinkelAlt * Pi /180) *(-100));

Canvas.MoveTo(150,150);
Canvas.Pen.Color := clBtnFace;
Canvas.Pen.Width := 3;
Canvas.LineTo((XPos + 150),(YPos + 150));

{--------------Stunde----------------------------------------------}

XPos := Trunc (cos(StdWinkelAlt * Pi /180) *(-80));
YPos := Trunc (sin(StdWinkelAlt * Pi /180) *(-80));

Canvas.MoveTo(150,150);
Canvas.Pen.Color := clBtnFace;
Canvas.Pen.Width := 3;
Canvas.LineTo((XPos + 150),(YPos + 150));


{-------------Zeiger Zeichnen---------------------------------------}
{-------------Sekunde-----------------------------------------------}

XPos := Trunc (cos(SecWinkel * Pi /180) *(-100));
YPos := Trunc (sin(SecWinkel * Pi /180) *(-100));

Canvas.MoveTo(150,150);
Canvas.Pen.Color := 0;
Canvas.Pen.Width := 1;
Canvas.LineTo((XPos + 150),(YPos + 150));

{--------------Minuten---------------------------------------------}

XPos := Trunc (cos(MinWinkel * Pi /180) *(-100));
YPos := Trunc (sin(MinWinkel * Pi /180) *(-100));

Canvas.MoveTo(150,150);
Canvas.Pen.Color := 0;
Canvas.Pen.Width := 3;
Canvas.LineTo((XPos + 150),(YPos + 150));

{--------------Stunde----------------------------------------------}

XPos := Trunc (cos(StdWinkel * Pi /180) *(-80));
YPos := Trunc (sin(StdWinkel * Pi /180) *(-80));

Canvas.MoveTo(150,150);
Canvas.Pen.Color := 0;
Canvas.Pen.Width := 3;
Canvas.LineTo((XPos + 150),(YPos + 150));

{------------Alte Winkel Zwischenspeichern-------------------------}

SecWinkelAlt := SecWinkel;
MinWinkelAlt := MinWinkel;
StdWinkelAlt := StdWinkel;


end;

end.


Dank
Gruß MrFish
Es gibt zwei unbestreitbare Tatsachen: 1. Ich irre mich nie. 2. Die Welt ist eine Scheibe.
 
Benutzerbild von hummer
hummer

 
Delphi 7 Enterprise
 
#2
  Alt 25. Apr 2004, 21:45
Es wäre nicht schlecht, wenn du dein Projekt in den Anhang einfügen könntest. Dann muss man nicht selbst ein neues Projekt erstellen und kompilieren.
Manuel
  Mit Zitat antworten Zitat
MrFish

 
Delphi 7 Personal
 
#3
  Alt 25. Apr 2004, 21:51
Ist gemacht.
Hätte ich auch selbst drauf kommen können.
Angehängte Dateien
Dateityp: dpr project1_160.dpr (271 Bytes, 222x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber

 
Delphi XE Professional
 
#4
  Alt 25. Apr 2004, 21:57
Hi!

Es fehlen immer noch Sachen, z.B. dcu etc.
Mach am besten das ganze Verzeichnis als zip und dann fehlt auch nix.
In der Dpr steht übrigens ne absolutepfadangabe zu unit.

Ciao fkerber
Frederic Kerber
  Mit Zitat antworten Zitat
MrFish

 
Delphi 7 Personal
 
#5
  Alt 25. Apr 2004, 22:06
Nächster Versuch.
Angehängte Dateien
Dateityp: zip analoguhr.zip (200,2 KB, 287x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber

 
Delphi XE Professional
 
#6
  Alt 25. Apr 2004, 22:11
In dem Archiv fehlt wie gesagt noch die Pas-datei, die bei dir hier liegt:

C:\Programme\Borland\Delphi7\Projects\Uhr.pas

Pack die noch da rein und ändere in der dpr-datei den pfad entweder auf \uhr.pas oder uhr.pas (bin mir nicht sicher sorry)

ciao fkerber
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus
 
#7
  Alt 25. Apr 2004, 22:14
Also, die Idee ist nicht schlecht, aber ein bisschen konstruktive Kritik brauchts noch:
1. Der Kreis um die Uhr fehlt (zumindest bei mir), ebenso wie die Striche, die die Minuten bzw. Stundenpositionen zeigen
2. Wenn man schon die Größe des Fensters verändern kann, dann musst du darauf achten, dass es nicht zu klein werden kann. Dies kannst du mit den Constraints des Forms einstellen (MinHeight und MinWidth müssen gesetzt werden). Alternativ kanns du deinem Form eine fixe Größe zuweisen, und BorderStyle auf bsSingle setzen, somit kann die Größe nicht mehr geändert werden.
3. Du hast unten ein Edit mit der Zeit drin. Verwende dafür ein Label oder einen StaticText (register Zusätzlich). Edits sind für Eingaben, und nicht unbedingt für Ausgaben gemacht worden. Falls du wirklich ein Edit verwenden willst, so setze Enabled auf False, so dass der User nichts mehr eingeben kann.
So, das musste raus, ansonsten find ich die Idee gut, und auch die Zeitanzeige scheint zu passen
Andreas B.
  Mit Zitat antworten Zitat
25. Apr 2004, 22:14
Dieses Thema wurde von "Daniel" von "Sonstige Fragen zu Delphi" nach "Open-Source" verschoben.
MrFish

 
Delphi 7 Personal
 
#9
  Alt 25. Apr 2004, 23:10
bis ich das verstanden habe was alles zu einem Delphi Projekt gehört wird wohl noch eine Zeit vergehen.
Angehängte Dateien
Dateityp: pas uhr.pas (3,2 KB, 137x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

 
Delphi 2009 Professional
 
#10
  Alt 26. Apr 2004, 07:55
Hallo MrFish,
Du solltest Dir angewöhnen aus den Variablen Objektfelder zu machen.
So wie Du die Variablen jetzt deklariert hats handelt es sich um Globale-Variablen.
In der OOP gehören Globale-Variablen zu den 42 Totsünden.
Code:
SecWinkel : integer;
  MinWinkel : Integer;
  StdWinkel : Integer;
  SecWinkelAlt : integer;
  MinWinkelAlt : integer;
  StdWinkelAlt : integer;
  Zeit : String;
  XPos : integer;
  YPos : Integer;
  Std : Integer;
  Min : Integer;
  Sec : Integer;
Wenn Du die Variablen als Objektfelder deklarierst würde Deine Formularklasse wie folgt aussehen:
Delphi-Quellcode:
  TAnaloguhr = class(TForm)
    Edit1: TEdit;
    Uhr: TTimer;
    procedure UhrTimer(Sender: TObject);
  private
    { Private-Deklarationen }
    FMinWinkel : Integer;
    FStdWinkel : Integer;
    FSecWinkelAlt : integer;
    FMinWinkelAlt : integer;
    FStdWinkelAlt : integer;
    FZeit : String;
    FXPos : integer;
    FYPos : Integer;
    FStd : Integer;
    FMin : Integer;
    FSec : Integer;
  public
    { Public-Deklarationen }
  end;
Jetzt musst Du noch im Source vor die Variablen das F schreiben. Das F gehört zu einer Nameskonvention. Alle Objektfelder sollten mit einem großen F beginnen. So wie alle Klassen mit einem großen T beginnen.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 05:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz