AGB  ·  Datenschutz  ·  Impressum  







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

Image wieder blank machen

Ein Thema von Avicenna · begonnen am 29. Okt 2007 · letzter Beitrag vom 29. Okt 2007
Antwort Antwort
Seite 3 von 4     123 4      
Avicenna
(Gast)

n/a Beiträge
 
#21

Re: Image wieder blank machen

  Alt 29. Okt 2007, 17:47
Bei mir tut sich da einfach nichts.
Ich poste jetzt mal den kompletten Quelltext von procedure TForm1.Timer1Timer(Sender: TObject);:
Delphi-Quellcode:
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;
außerdem noch die Variablendeklaration:
Delphi-Quellcode:
var
  Form1: TForm1;
  stunde,minute,sekunde:integer;
  ausgabestd,ausgabemin,ausgabesek:string;
Ich hoffe, ihr könnt mir so weiterhelfen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#22

Re: Image wieder blank machen

  Alt 29. Okt 2007, 17:49
Ist der Timer auch enabled?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#23

Re: Image wieder blank machen

  Alt 29. Okt 2007, 17:52
sollte es nicht anstelle von
if stunde > 59 then stunde:=0; eher heißen:
if stunde > 23 then stunde:=0; ?
Und was geht denn nicht? Wird nichts gezeichnet?
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#24

Re: Image wieder blank machen

  Alt 29. Okt 2007, 17:57
Ich habe mal schnell eine Version mit weniger Variablen (dafür mit mehr Berechnungen) erstellt:
Delphi-Quellcode:
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.
[edit] Für lange Laufzeiten sekunde als Cardinal statt integer umdeklariert *gg* [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#25

Re: Image wieder blank machen

  Alt 29. Okt 2007, 18:02
Hi,

hier noch was zum knobeln:

Delphi-Quellcode:
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;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#26

Re: Image wieder blank machen

  Alt 29. Okt 2007, 18:03
Jaja, DateUtils
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Avicenna
(Gast)

n/a Beiträge
 
#27

Re: Image wieder blank machen

  Alt 29. Okt 2007, 18:34
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.
Miniaturansicht angehängter Grafiken
13_142.png  
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#28

Re: Image wieder blank machen

  Alt 29. Okt 2007, 18:36
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#29

Re: Image wieder blank machen

  Alt 29. Okt 2007, 18:45
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.
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
Avicenna
(Gast)

n/a Beiträge
 
#30

Re: Image wieder blank machen

  Alt 29. Okt 2007, 19:37
Bei dir kommt mod vor, das haben wir noch nicht gelernt. Was bedeutet das denn?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 17:00 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