AGB  ·  Datenschutz  ·  Impressum  







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

Analoguhr

Ein Thema von MrFish · begonnen am 25. Apr 2004 · letzter Beitrag vom 11. Mai 2007
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
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.
 
Nicodius

 
Delphi 2006 Architect
 
#31
  Alt 8. Mai 2004, 17:13
haha du genie du

aber wenn ich mir mein erstes programm anschaue dann denke ich mir was hab ich am anfang falsch gemacht

für nen Anfänger
Nico Müller
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon
 
#32
  Alt 8. Mai 2004, 17:38

ich hab nicht gesagt, das das prog fürn anfänger leicht ist (ich wüsste nicht, ob ichs könnte...)
  Mit Zitat antworten Zitat
Nicodius

 
Delphi 2006 Architect
 
#33
  Alt 8. Mai 2004, 17:39
hat ja auch niemand behauptet das du das gesagt hast
Nico Müller
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon
 
#34
  Alt 8. Mai 2004, 17:50
stimmt auch wieder

wenn ich mir anschaue, was ich mir am anfang da zusammengesch**** hab....
ich versteh die quelltexte heute selber nicht mehr, statt se mir durzulesen, schreib ich se neu
  Mit Zitat antworten Zitat
MrFish

 
Delphi 7 Personal
 
#35
  Alt 9. Mai 2004, 12:56
Ich habe den schönen Code von Luckie verunstaltet. Jetzt hat die Uhr ein Ziffernblatt.

@Luckie
Ich habe da noch zwei Fragen:
1 Du nutzt die Procedure CalcAngel. Ich dachte bisher das jede Procedure deklariert werden muss.
Ich finde aber keine Deklaration dafür. Was stimmt hier nicht.
2 Die unterstrichene Codeteile verstehe ich nicht.
Ich habe zwar erkannt des das die Zeigerlänge ist aber mehr auch nicht. Kannst du mir daq eine genauere Erklärun geben.
Delphi-Quellcode:
 
  // Zeiger löschen
  ClearHands(Start, OldSecs, [u]Paintbox1.Height div 2 div 2 - 40[/u], 1);
  // Zeiger zeichnen
  PaintHands(Start, secs, [u]Paintbox1.Height div 2 div 2 - 40[/u], 1);
  // alten Winkel merken
  OldSecs := secs;

  ClearHands(Start, OldMins, [u]Paintbox1.Height div 2 div 3 - 45[/u], 2);
  PaintHands(Start, mins, [u]Paintbox1.Height div 2 div 3 - 45[/u], 2);
  OldMins := mins;

  ClearHands(Start, OldHrs, [u]Paintbox1.Height div 2 div 6 - 55[/u], 4);
  PaintHands(Start, hrs, [u]Paintbox1.Height div 2 div 6 - 55[/u], 4);
  OldHrs := hrs;
[edit=Luckie]Delphi-Tag geschlossen. Mfg, Luckie[/edit]
  Mit Zitat antworten Zitat
XeRo

 
Delphi 7 Enterprise
 
#36
  Alt 9. Mai 2004, 13:09
Wenn ich die Form vergrößere werden die zeiger größer aber nicht der kreis um die zeiger...
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon
 
#37
  Alt 10. Mai 2004, 13:52
sieht doch schon richtig gut aus

was ncoh fehlt, sind zahlen um den kreis.....
  Mit Zitat antworten Zitat
grayfox

 
Delphi 4 Standard
 
#38
  Alt 10. Mai 2004, 15:22
hallo mrfish!

werd nicht gleich nervös! luckie wird schon noch vorbeischauen!
in der zwischenzeit beantworte ich mal deine frage zur procedure 'CalcAngels'

wie du siehst, kann man auch 'nichtdefinierte' proceduren verwenden, und zwar dann, wenn sie
nur in jener unit verwendet werden, in der sie erstellt sind. es spricht ja nichts dagegen, oder?
nachdem CalcAngels nur eine berechnung durchführt und nicht in direktem zusammenhang mit Form1 steht, ist es auch nicht notwendig, sie in die objektdefinition aufzunehmen.
CalcAngels ist eine procedure, die du zb in einer eigenen unit auslagern und später in anderen programmen einbinden könntest. dann ist sie allerdings im interface-abschnitt der unit anzuführen, sonst wird sie von den anderen programmen nicht gefunden (sie wird ja nun ausserhalb der unit verwendet, in der sie zu finden ist. klar?)

ich hoffe, dass ich mich nicht zu kompliziert ausgedrückt habe *gg*

mfg, stefan
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#39
  Alt 10. Mai 2004, 16:30
Die Prozedur muss nur zum Zeitpunkt der Benutzung bekannt sein. Deklariere ich A vor B kann ich A in B benutzen aber nicht B in A.
Michael
  Mit Zitat antworten Zitat
grayfox

 
Delphi 4 Standard
 
#40
  Alt 10. Mai 2004, 16:33
jup! so kann man es auch sagen

mfg, stefan
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 20:03 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