Entwickler-Ecke

Sonstiges (Delphi) - onIdle und Refresh


Maa83 - Do 23.09.04 12:44
Titel: onIdle und Refresh
Hallo,

ich erklär mal um was es geht:

ich habe zwei Variablen die beide hochgezählt werden. Die eine immer konstant um 1 die andere mit Random(2) --> Also entweder um 1 erhöhen oder gar nicht.
Die Funktion in der dies geschieht wird im OnIdle-Ereignis der Applikation aufgerufen --> Also immer und immer wieder :)

darunter rufe ich dann noch die Ausgabe auf.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TFrm_Simulation.AppIdle(Sender: TObject; var Done: Boolean);
begin
    //Wettergenerator anwerfen:
    Wetter.MakeWetter;

    lbl_Temperatur.Caption := FloatToStr(Wetter.Temperatur);
//    lbl_Sonnenstand.Caption := IntToStr(Wetter.Sonnenstand);
    sb_Sonnenstand.Position := Wetter.Sonnenstand;
end;


Ihr seht das ich eine Zeile rausgenommen habe.
Tempertatur = Random(2)
sonnenstand = konstant +1

Das ganze funktioniert auch soweit das das Label hochgezählt wird.
doch die Scrollbar (sb_Sonnenstand) wird scheinbar nur dann hochgezählt wenn auch der Random Wert zutrifft.

Beim debuggen stimmen die Werte aber. Es muss also mit dem Refreshen zusammenhängen. Denn wenn ich die Zeile die oben auskommentiert ist wieder aktiviere dann funktioniert das ganze so wie ich es will.

Hoffe ihr versteht was ich möchte.

Gruß
Maa


sourcehunter - Fr 24.09.04 20:40

Haste schon mal ein Repaint probiert?


Maa83 - Sa 25.09.04 11:39

ja, hat aber auch nichts genützt.
ich hab das ganze jetzt durch ein Shape ersetzt das seine Position je nach Zahl veränder. Das funktioniert auch :roll: . (So sollte es auch sein, die scrollbar war nur zum testen)


sourcehunter - Sa 25.09.04 19:11

Dann is ja alles in Ordnung.