Re: Image wieder blank machen
Bei mir tut sich da einfach nichts.
Ich poste jetzt mal den kompletten Quelltext von procedure TForm1.Timer1Timer(Sender: TObject);:
Delphi-Quellcode:
außerdem noch die Variablendeklaration:
procedure TForm1.Timer1Timer(Sender: TObject);
begin if stunde < 10 then ausgabestd:='0'+inttostr(stunde); if stunde >= 10 then ausgabestd:=inttostr(stunde); if minute < 10 then ausgabemin:='0'+inttostr(minute); if minute >= 10 then ausgabemin:=inttostr(minute); if sekunde < 10 then ausgabesek:='0'+inttostr(sekunde); if sekunde >= 10 then ausgabesek:= inttostr(sekunde); sekunde:=sekunde+1; begin; if sekunde > 59 then begin; sekunde:=0; minute:=minute+1; image1.invalidate; end; if minute > 59 then begin minute:=0; stunde:=stunde+1; end; if stunde > 59 then stunde:=0; label1.caption:='Zeit:'+ausgabestd+':'+ausgabemin+'.'+ausgabesek; image1.canvas.ellipse(10+6*sekunde,10,15+6*sekunde,15); if sekunde = 59 then Image1.Invalidate; end end;
Delphi-Quellcode:
Ich hoffe, ihr könnt mir so weiterhelfen.
var
Form1: TForm1; stunde,minute,sekunde:integer; ausgabestd,ausgabemin,ausgabesek:string; |
Re: Image wieder blank machen
Ist der Timer auch enabled?
|
Re: Image wieder blank machen
sollte es nicht anstelle von
Delphi-Quellcode:
eher heißen:
if stunde > 59 then stunde:=0;
Delphi-Quellcode:
?
if stunde > 23 then stunde:=0;
Und was geht denn nicht? Wird nichts gezeichnet? |
Re: Image wieder blank machen
Ich habe mal schnell eine Version mit weniger Variablen (dafür mit mehr Berechnungen) erstellt:
Delphi-Quellcode:
[edit] Für lange Laufzeiten sekunde als Cardinal statt integer umdeklariert *gg* [/edit]
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Image1: TImage; Timer1: TTimer; Label1: TLabel; procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private-Deklarationen } sekunde: Cardinal; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin sekunde := 0; end; procedure TForm1.Timer1Timer(Sender: TObject); begin if (sekunde mod 60) = 0 then image1.Canvas.FillRect(Rect(0,0,Image1.Width,Image1.Height)); image1.canvas.ellipse(10 + 6 * (sekunde mod 60),10,15 + 6 * (sekunde mod 60),15); Label1.Caption := Format('%.2d:%.2d:%.2d',[Succ(sekunde) div 3600, Succ(sekunde) div 60, Succ(sekunde) mod 60]); inc(sekunde); end; end. |
Re: Image wieder blank machen
Hi,
hier noch was zum knobeln:
Delphi-Quellcode:
Grüße vom marabu
procedure TDemoForm.ClockTimer(Sender: TObject);
var r: TRect; dt: TDateTime; begin with Sender as TTimer do begin Enabled := False; dt := Now; Panel.Caption := TimeToStr(dt); with Image do begin if SecondOf(dt) mod 5 = 0 then Canvas.FillRect(Canvas.ClipRect); r := Rect(Random(Width), Random(Height), Random(Width), Random(Height)); Canvas.Ellipse(r); end; Interval := 1000 - MilliSecondOf(Now); Enabled := True; end; end; |
Re: Image wieder blank machen
Jaja, DateUtils
|
Re: Image wieder blank machen
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für eure Antworten.
Der Timer ist enabled. Danke für den Hinweis mit der Stunde (>23), ich habe es ausgebessert. Aber gehen tut es immer noch nicht. Problembeschreibung: Pro Sekunde wird ein Kringel hinzugefügt. Nach 60 (oder 59, das spielt keine Rolle) Sekunden sind dann 60 (oder 59) Kringel da, und rien ne va plus. Nichts passiert mehr. Erwünschte Problemlösung: Es geht wieder von vorne los, d.h. alle 60 (oder 59) Kringel verschwinden. In der nächsten Sekunde kommt wieder ein Kringel usw. usf. |
Re: Image wieder blank machen
Hast Du meine Lösung mal versucht? Invalidate hat bei mir auch nicht genügt, weswegen ich das ganze Image einfach komplett übermale. Die "fehlenden" Variaben kannst Du ja dann wieder deklarieren.
|
Re: Image wieder blank machen
Ich würde auch sagen, das Image mit FillRect neu zeichnen. Dann dürfte einem erneuten Zeichnen nichts mehr im Wege stehn...
Es sei denn, irgendwas anderes läuft noch schief, nur ich kann das jetzt nicht ausprobieren. |
Re: Image wieder blank machen
Bei dir kommt mod vor, das haben wir noch nicht gelernt. Was bedeutet das denn?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:35 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