Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Zeitliche Abfolge funktioniert nicht


bf109g.01 - Mo 02.05.11 12:53
Titel: Zeitliche Abfolge funktioniert nicht
Hallo, ich habe in meinem Programm einige Bilder.
Wenn man auf eines dieser Bilder klickt, so soll das Bild erst durch ein anderes (aus Ressource) ersetzt werden und dazu ein Sound aus derselben Ressourcendatei gespielt werden. Danach soll das Prog kurz warten und dann das Bild unsichtbar machen.
Der Text dazu:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
begin
  // Bild laden aus Ressource
  (Sender as TIMage).Picture.Bitmap.LoadFromResourceName(HInstance, 'IMG_S'+IntToStr(Img.Games)+'_2');
  // Sound abspielen  
  RessSound(CBSound.ItemIndex);  
  // Warten  
  sleep(2000);
  //Ausblenden
  (Sender as TIMage).visible:=false;
end

Stattdessen wechselt das Bild aber gar nicht. Man hört den Ton und danach verschwindet das Bild.

Erst wenn ich Sleep und Ausblenden entferne, sehe ich das neue Bild wieder, damit ist mir aber nicht geholfen... :(
Bis jetzt dachte ich eigentlich immer das Programm geht die zeilen von oben nach unten durch und nicht erst den Ton, dabei überspringt sie das neu laden usw usw...

Gibt vllt andere Möglichkeiten? Ich habe gestern viel mit TTimer probiert, aber da gibt es ähnliche Probleme...


Gausi - Mo 02.05.11 12:58

Die Anweisungen weredn schon alle durchgeführt, aber da steckt halt keine Anweisung "Zeichne das Bild neu" drin. Probier mal, vor dem Sleep ein

Delphi-Quelltext
1:
(Sender as TIMage).Repaint; // oder .Update oder .Refresh                    

einzubauen - dann sollte das funktionieren.