Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi ich brauch dringende Hilfe bei meiner Analog Uhr!!!!! (https://www.delphipraxis.net/89441-ich-brauch-dringende-hilfe-bei-meiner-analog-uhr.html)

naschkatze1987 31. Mär 2007 14:07

Re: ich brauch dringende Hilfe bei meiner Analog Uhr!!!!!
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das ist mein Quelltext:

Delphi-Quellcode:

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
 close
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var i, k : integer;
begin
 Bitbtn1.visible:=false;
 k:=0;
 Timer1.Enabled:=true;

with Image1.canvas do
 BEGIN
   brush.color:=clblack;
   Rectangle(0,485,825,600);

//Himmel
  For i:=0 to 485 do
    Begin
      Pen.Color:=$00C293F0;
      MoveTo(0,i);
      LineTo(825,i);
    End;


 Repeat
  Pixels[random(clientwidth),random(100)]:=$00CA7ABB;
  inc(k)
 Until k=100000;

  k:=0;

 Repeat
  Pixels[random(clientwidth),random(200)]:=$00CA7ABB;
  inc(k)
 Until k=100000;

  k:=0;

 Repeat
  Pixels[random(clientwidth),random(300)]:=$00CA7ABB;
  inc(k)
 Until k=100000;

  k:=0;

 Repeat
  Pixels[random(clientwidth),random(400)]:=$00CA7ABB;
  inc(k)
 Until k=100000;

  k:=0;

 Repeat
  Pixels[random(clientwidth),random(486)]:=$00CA7ABB;
  inc(k)
 Until k=100000;

  k:=0;

 Repeat
  Pixels[random(clientwidth),random(100)]:=$00C46B97;
  inc(k)
 Until k=20000;

  k:=0;

 Repeat
  Pixels[random(clientwidth),random(200)]:=$00C46B97;
  inc(k)
 Until k=40000;

  k:=0;

 Repeat
  Pixels[random(clientwidth),random(300)]:=$00C46B97;
  inc(k)
 Until k=50000;

  k:=0;

 Repeat
  Pixels[random(clientwidth),random(400)]:=$00C46B97;
  inc(k)
 Until k=60000;

  k:=0;

 Repeat
  Pixels[random(clientwidth),random(486)]:=$00C46B97;
  inc(k)
 Until k=80000;


// Big Ben
 Pen.Color:=clblack;
 Brush.Color:=clblack;
 Polygon([Point(655,16),Point(622,110),Point(682,110)]);

 Pen.Color:=$0038383838;
 Brush.Color:=$0038383838;
 Rectangle(619,111,677,119);

 Pen.Color:=clblack;
 Brush.Color:=clblack;
 Polygon([Point(617,118),Point(677,118),Point(677,111),Point(680,105),Point(690,118),Point(690,166),Point(681,166),Point(681,127),Point(617,127)]);

 Pen.Color:=$0038383838;
 Brush.Color:=$0038383838;
 Rectangle(619,128,681,167);

 Pen.Color:=clblack;
 Brush.Color:=clblack;
 Polygon([Point(614,166),Point(691,167),Point(716,219),Point(590,219)]);

 Pen.Color:=$0038383838;
 Brush.Color:=$0038383838;
 Rectangle(587,220,702,228);

 Pen.Color:=clblack;
 Brush.Color:=clblack;
 Polygon([Point(578,227),Point(702,227),Point(702,220),Point(716,220),Point(716,233),Point(727,233),Point(728,267),Point(737,272),Point(737,412),Point(734,412),Point(730,417),Point(730,417),Point(730,600),Point(706,600),Point(706,400),Point(712,396),Point(712,239),Point(578,239)]);

 Pen.Color:=$0038383838;
 Brush.Color:=$0038383838;
 Polygon([Point(579,240),Point(711,240),Point(711,396),Point(705,401),Point(705,580),Point(570,580),Point(570,400),Point(567,400),Point(567,264),Point(570,264),Point(570,258),Point(579,255)]);

 Pen.Color:=clgray;
 Brush.Color:=clgray;
 Rectangle(571,268,709,395);
 Pen.Color:=clsilver;
 Brush.Color:=clsilver;
 Ellipse(575,272,703,390);

 END;

end;



procedure TForm1.Timer1Timer(Sender: TObject);
var winkel               : real;
    x, y, x1, y1, r, i   : Integer;
    hour, min, sec, msec : Word;
begin
 Form1.Caption:=DateTimeToStr(Now);

 Refresh;

 DecodeTime(Now, hour, min, sec, msec);

 r:=60;

// Ziffern
Canvas.Font.Size:=2;
Canvas.Textout(665,283,'I');
Canvas.Textout(680,300,'II');
Canvas.Textout(685,325,'III');
Canvas.Textout(679,351,'IV');
Canvas.Textout(663,368,'V');
Canvas.Textout(635,375,'VI');
Canvas.Textout(606,368,'VII');
Canvas.Textout(590,351,'VIII');
Canvas.Textout(584,325,'IX');
Canvas.Textout(593,300,'X');
Canvas.Textout(610,282,'XI');
Canvas.Textout(635,275,'XII');


// Sekundenzeiger
 winkel:=sec* ((2*pi) / 60) - pi/2;

 x:=Trunc(cos(winkel)*r);
 y:=Trunc(sin(winkel)*r);

 x:=x+(639);
 y:=y+(331);

 Canvas.Pen.Color:=clblack;
 Canvas.Pen.Width:=1;
 Canvas.MoveTo(639,331);
 Canvas.LineTo(x,y);

//Minutenzeiger
 winkel:=min* ((2*pi) / 60) - pi/2;

 x:=Trunc(cos(winkel)*r*0.9);
 y:=Trunc(sin(winkel)*r*0.9);

 x:=x+(639);
 y:=y+(331);

 Canvas.Pen.Width:=2;
 Canvas.MoveTo(639,331);
 Canvas.LineTo(x,y);

//Stundenzeiger
 IF hour>12 THEN hour:=hour-12;
 winkel:=(hour*(2*pi) / 12) + (min*(2*pi) / 720) - pi/2;

 x:=Trunc(cos(winkel)*r*0.6);
 y:=Trunc(sin(winkel)*r*0.6);

 x:=x+(639);
 y:=y+(331);

 Canvas.Pen.Width:=3;
 Canvas.MoveTo(639,331);
 Canvas.LineTo(x,y);

// Ziffernstriche
FOR i:=0 TO 11 DO
begin
 winkel:=i*((2*pi) / 12) - pi/2;

 x:=Trunc(cos(winkel)*r*1.2);
 y:=Trunc(sin(winkel)*r*1.2);
 x1:=Trunc(cos(winkel)*r);
 y1:=Trunc(sin(winkel)*r);

 x:=x+(639);
 y:=y+(331);
 x1:=x1+(639);
 y1:=y1+(331);

 Canvas.Pen.Width:=2;
 Canvas.MoveTo(x,y);
 Canvas.LineTo(x1,y1);
end;

 // Minutenstriche
FOR i:=0 TO 59 DO
begin
 winkel:=i*((2*pi) / 60) - pi/2;

 x:=Trunc(cos(winkel)*r*1.1);
 y:=Trunc(sin(winkel)*r*1.1);
 x1:=Trunc(cos(winkel)*r);
 y1:=Trunc(sin(winkel)*r);

 x:=x+(639);
 y:=y+(331);
 x1:=x1+(639);
 y1:=y1+(331);

 Canvas.Pen.Width:=1;
 Canvas.MoveTo(x,y);
 Canvas.LineTo(x1,y1);
end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Timer1.Enabled:=false;
end;
und die neue Datei hab ich angehangen...

raiguen 31. Mär 2007 15:17

Re: ich brauch dringende Hilfe bei meiner Analog Uhr!!!!!
 
Liste der Anhänge anzeigen (Anzahl: 2)
@naschkatze:
Das mit dem Image.Canvas uwsw kannst du getrost vergessen!
Ich häng Dir mal das geänderte Projekt an! Wie gesagt: 2 kleine Änderungen und swchon funktioniert das :-)
Hoffe, das hilft!
Und für alle anderen noch einen Screenshot, wie das aussehen soll ;)

naschkatze1987 31. Mär 2007 15:29

Re: ich brauch dringende Hilfe bei meiner Analog Uhr!!!!!
 
das is ja toll und vielen Dank nochma, aber ich glaub mit Delphi3 funzt das nich so, zumindest kann ichs nich richtig öffnen und so... und leider arbeiten wir in der Schule mit Delphi 3...

naschkatze1987 31. Mär 2007 15:44

Re: ich brauch dringende Hilfe bei meiner Analog Uhr!!!!!
 
Woher nimmstn du FormPaint? Ich weiß nich wie ich da die Procedure reinkriege...

raiguen 31. Mär 2007 15:47

Re: ich brauch dringende Hilfe bei meiner Analog Uhr!!!!!
 
:oops: Delphi3 - das hab ich übersehen..
Da in meiner Unit1 eigentlich nur 'Standard'-Routinen benutzt werden, sollte es eigentlich auch mit Delphi 3 funktionieren! Was kannst du nicht öffen bzw welche Fehlermeldung wird angezeigt?

Was du machen kannst ist folgendes:
Die Dateien Unit1.pas, Unit1.dcu und Unit1.dfm DEINES Projektes mit meinen Dateien gleichen Namens ersetzen und anschliessend in Delphi3 dein Projekt starten.. dann sollte es ohne Probleme möglich sein, das gewünschte Ergebnis zu bekommen..

Zum FormPaint:
Im ObjektInspektor der Form auf Ereignisse gehen und bei OnPaint in die rechte Spalte ein Doppelklick machen -> im Quellcode wird die Prozedure FormPaint automatisch reingeschrieben ;)

naschkatze1987 31. Mär 2007 15:52

Re: ich brauch dringende Hilfe bei meiner Analog Uhr!!!!!
 
also gut, ich versuchs jetzt mal... hoffe das klappt

naschkatze1987 31. Mär 2007 16:41

Re: ich brauch dringende Hilfe bei meiner Analog Uhr!!!!!
 
Liste der Anhänge anzeigen (Anzahl: 1)
also leider klappts nicht, ich hab jetzt mein Projekt 1 und 1 an deins angeglichen, und der schaffts nicht ma den himmel richtig aufzubauen, der fängt dann immer wieder von vorn an...
ich häng mal wieder meine datei an, vielleicht hat sich ja doch n fehler eingeschlichn :oops:

Was bedeutet eig Application.ProcessMessages; ???

naschkatze1987 31. Mär 2007 16:45

Re: ich brauch dringende Hilfe bei meiner Analog Uhr!!!!!
 
Zitat:

Zitat von raiguen
:oops: Delphi3 - das hab ich übersehen..
welche Fehlermeldung wird angezeigt?

Fehler beim Lesen von Form1.Old.CreateOrder: Eigenschaft existiert nicht

raiguen 31. Mär 2007 16:57

Re: ich brauch dringende Hilfe bei meiner Analog Uhr!!!!!
 
aahh... klar: diese Eigenschaft kennt Delphi 3 noch nicht...

So, nun zu deinem Problem: Die Zeile Refresh in der Procedure Timer1Time MUSST du LÖSCHEN!!
Warum? Weil das Refresh dir jedesmal den gemalten Hintergrund neu beschreibt...somit bekommst du eine Endlosschleife und dein BigBenn geschweige denn dir Unr wird angezeugt ;)

Application.ProcessMessages bedeutet in diesem Falle, dass alle Zeichenroutinen sofort sichtbar werden und nicht erst am Ende der Prozedure...

naschkatze1987 31. Mär 2007 17:00

Re: ich brauch dringende Hilfe bei meiner Analog Uhr!!!!!
 
aber das versteh ich nich, ich hab mir ja viele Quelltexte angeguckt und die nehmen alle Refresh, ohne funzt das bei mir ja auch nicht... mit dem TImage gehts ja nur dass es halt flackert...
hab gelesn dass es mitm Bitmap geht, aber dass hab ich bei delphi leider auch nich gefunden :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:43 Uhr.
Seite 3 von 4     123 4      

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