AGB  ·  Datenschutz  ·  Impressum  







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

Uhrzeiger

Ein Thema von Yoko · begonnen am 8. Okt 2009 · letzter Beitrag vom 9. Okt 2009
Antwort Antwort
Yoko

Registriert seit: 6. Okt 2009
Ort: Gladbeck
3 Beiträge
 
#1

Uhrzeiger

  Alt 8. Okt 2009, 18:16
Halli Hallo,
ich befinde mich in Stufe 11 und habe das Fach Informatik. Wir arbeiten mit der Lib mSum und müssen zunächsts eine Uhr programmieren. Da ich ein fleißiger Schüler bin () will ich mich damit auch ein wenig zuhause beschäftigen und nicht nur in der Schule arbeiten. Zunächst hier mein bisheriger Quelltext bevor ich zu meiner Frage komme.

Delphi-Quellcode:
program pClock;
uses
  mSum;

var
  meinSchirm:Bildschirm;
  meinStift:Buntstift;
  meineMaus:Maus;
  Radius,striche:ganzeZahl;
begin
  meinSchirm:=Bildschirm.init;
  meinStift:=Buntstift.init;
  meineMaus:=Maus.init;
  Radius:=meinSchirm.breite div 4;

//Zeichne Kreis
meinStift.bewegeBis(meinSchirm.breite div 2, meinSchirm.hoehe div 2);
meinStift.zeichneKreis(meinSchirm.breite div 4);

//Minutenstriche
striche:=0;
repeat
meinStift.dreheUm(6);
meinStift.runter;
meinStift.bewegeum(radius);
meinStift.hoch;
meinStift.bewegeBis(meinSchirm.breite div 2, meinSchirm.hoehe div 2);
striche:=striche+1;
until striche=60;

//erster Innenkreis
meinStift.bewegebis(meinSchirm.breite div 2, meinSchirm.hoehe div 2);
meinStift.setzeFarbe(weiss);
meinStift.setzeFuellMuster(gefuellt);
meinStift.zeichneKreis(radius * 31/32);

//Ausrichtung
meinStift.drehebis(0);
meinStift.setzeFarbe(schwarz);
meinStift.setzeLinienBreite(2);
//Minutenstriche
striche:=0;
repeat
meinStift.bewegebis(meinSchirm.breite div 2, meinSchirm.hoehe div 2);
meinStift.runter;
meinStift.bewegeum(radius);
meinStift.dreheUm(30);
meinStift.hoch;
striche:=striche+1;
until striche=12;

//zweiter Innenkreis
meinStift.bewegebis(meinSchirm.breite div 2, meinSchirm.hoehe div 2);
meinStift.setzeFarbe(weiss);
meinStift.zeichneKreis(radius *19/20) ;

//Freigeben
meinSchirm.gibFrei;
meinStift.gibFrei;
meineMaus.gibFrei;

end.
So das ist mein bisheriger Quelltext für eine Uhr. Was gehört noch zu einer Uhr? Natürlich die Zeiger. Da sind wir bei meinem Problem ich will wissen wie ich solche Zeiger Programmiere und sie dazu bringe sich zu bewegen oder wenn z.B. Sekundenzeiger einmal rum ist, dass der Minutenzeiger wandert usw. Vielleicht kann mir da jemand helfen und/oder Denkanstöße geben!

PS: ES HANDELT SICH HIER WEDER UM EINE HAUSAUFGABE NOCH UM EIN PROJEKT! Das ist alles Unterrichtsstoff und Teil meiner Selbstfortbildung!
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Uhrzeiger

  Alt 8. Okt 2009, 18:56
Hallo,

LineTo

Hier habe ich mit MoveTo/LineTo gearbeitet.

Dass der Minuten-Zeiger sich nach 60 Sekunden bewegt,
musst du halt programmieren.

Delphi-Quellcode:
iSec, iMin: Integer

iSec:= 59;
Inc(iSec);
if iSec=60 then
begin
  iSec:= 0;
  Inc(iMin);
end;

Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#3

Re: Uhrzeiger

  Alt 8. Okt 2009, 19:01
@Heiko , die arbeiten mit der Unit mSum...

Das ist so ein Graphikdingens für die Scuhle um das arbeiten mit Zeichnungen zu erleichertn.
K. A. ob Yoko Ahnung von TCanvas etc. hat
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Uhrzeiger

  Alt 8. Okt 2009, 19:02
Hi, und Willkommen!

Leider kenne ich diese Unit da nicht, mit der ihr arbeitet. Aber prinzipiell ein paar Sachen:

1. Du könntest 3 Variablen einführen: Stunden, Minuten, Sekunden.
2. Mit einem Timer kannst du die Sekunden hochzählen. (Setze das Timerintervall auf 1000ms) Wenn die Sekunden bei 60 angekommen sind, setzt du sie auf Null und erhöhst die Minuten um 1. (Entsprechendes gilt für die Stunden)
3. Ich denke mal, wie man den Strich für die Zeiger zeichnet, sollte dir klar sein, wenn du das Ziffernblatt schon fertig programmiert hast? (Deine mSum Unit kann scheinbar zeichnen da brauchst du kein Lineto)


Alternativ könnte man auch im Timer immer die Systemuhrzeit abfragen, in Stunden, Minuten und Sekunden aufteilen und erhält somit die korrekte Uhrzeit, aber versuch besser erstmal den ersten Vorschlag...
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
Yoko

Registriert seit: 6. Okt 2009
Ort: Gladbeck
3 Beiträge
 
#5

Re: Uhrzeiger

  Alt 9. Okt 2009, 14:52
Ja wie ich den Zeiger erstelle weiß ich, aber ich weiß nicht wie ich ihn an der einen Seite (Mitte, quasi wo der Zeiger festgenagelt ist) festhalte und der andere Teil wandert...das ist zuerst mein Problem, wenn ich das rausgefunden habe glaube ich erklärt sich das fast von selbst...dann brauch ich nur noch eine geeignete schleifer und ich sollte fertig sein.. Danke für die bisherigen Antwort, hoffe auf noch mehr Hilfe
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Uhrzeiger

  Alt 9. Okt 2009, 14:59
Hallo,

male ihn doch einfach bei jedem Timer-Intervall komplett neu.
Das geht über XXX.Invalidate,
wobei XXX deine Komponente (z.B,. von TLabel abgeleitet) ist.

Darauf reagierst du im OnPaint.

Die Koordinaten-Berechnung darfst du aber selber übernehmen,
müsste Sin() sein

geg. ist der Radius und der Winkel (360° = 24h)


Heiko
Heiko
  Mit Zitat antworten Zitat
Yoko

Registriert seit: 6. Okt 2009
Ort: Gladbeck
3 Beiträge
 
#7

Re: Uhrzeiger

  Alt 9. Okt 2009, 16:23
Zitat von hoika:
Hallo,

male ihn doch einfach bei jedem Timer-Intervall komplett neu.
Das geht über XXX.Invalidate,
wobei XXX deine Komponente (z.B,. von TLabel abgeleitet) ist.

Darauf reagierst du im OnPaint.

Die Koordinaten-Berechnung darfst du aber selber übernehmen,
müsste Sin() sein

geg. ist der Radius und der Winkel (360° = 24h)


Heiko
Könntest du mir am besten mal ein Muster zeigen...das sind so viele Begriffe drin mit denen ich nichts anfangen kann bin noch nicht dahinter gekommen wie das gemeint ist bzw wie ich das einsetze..
MfG Yoko
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Uhrzeiger

  Alt 9. Okt 2009, 16:51
Hallo,

so viel Zeit habe ich nicht

zeig doch noch, was du schon hast
und was du nicht verstanden hast.


Heiko
Heiko
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#9

Re: Uhrzeiger

  Alt 9. Okt 2009, 17:44
digitalcoding.com - Delphi Tutorial
This example provide by - digitalcoding.com

http://dezfoul.net/~william/transp_clock.zip
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#10

Re: Uhrzeiger

  Alt 9. Okt 2009, 21:28
Also du hast doch die Minutenstriche gezeichnet...kannst du vielleicht mal ein Screenshot anhängen, wie die aussehen?
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:33 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