Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - StatusBar Bilder aktualisieren


DELPHIn - So 30.10.05 16:35
Titel: StatusBar Bilder aktualisieren
Mittlerweile weis ich, wie man in einer StatusBar Bilder anzeigt.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure THaupt.StatusBarMainDrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
begin
  if Panel.Index = 1 then  //Datenbank schreibgeschützt
    if nurlesen.Checked then
      ImageListButtons1.Draw(StatusBarMain.Canvas,Rect.Left,Rect.Top,22,true)
    else
      ImageListButtons1.Draw(StatusBarMain.Canvas,Rect.Left,Rect.Top,-1,true);

Allerdings habe ich ein Problem dabei:
Wenn das Bild wieder gelöscht werden soll, bleibt es dennoch stehen. Es verschwindet erst, wenn man mit einem anderen Fenster drüberfährt.
Was mache ich falsch?
Auch ein Refrash oder Repaint bringt keinen Erfolg!

Danke

DELPHIn


Alstar - So 30.10.05 16:40

Hi!
Schonmal mit Update probiert?

Alstar


DELPHIn - Di 01.11.05 16:03

Ja, Update geht auch nicht.
Bzw. es geht alles, aber eben nur manchmal. Wenn die Anzeige der Bilder mal nicht aktualisiert wird, muss man nur mit einem anderen Fenster die Statusbar verdecken und schon wird alles korrekt dargestellt.
Sehr merkwürdig!
Ich habe das jetzt umgangen, es werden jetzt graue Duplikate der Bilder drübergelegt statt sie zu löschen. Sieht auch gut aus und erfüllt den Zweck.
Mich würde aber dennoch interessieren was ich falsch mache.

DELPHIn


Delete - Di 01.11.05 19:01

Suche im MSDN INVALIDATERECT.


Lannes - Di 01.11.05 19:39

Hallo,

oder damit:

Delphi-Quelltext
1:
StatusBar1.Invalidate;                    


DELPHIn - Fr 11.11.05 10:36

Hat funktioniert, danke!

DELPHIn