![]() |
Delphi-Version: XE8
TStatusBar mit 'OwnerDraw'-Panel periodisch neu zeichnen
Hallo Freunde,
Hintergrund Mir geht es um eine Rückmeldung, ob eine Datenbankverbindung besteht. Diese Überprüfung wird auch periodisch über ein Timer-Ereignis alle 3s angestoßen. Über den Bool'schen Wert "DbConnectIsOk" sehe ich den aktuellen Verbindungsstatus. Form/StatusBar In meiner Main-Form habe ich eine StatusBar dessen 2.Panel den Style "psOwnerDraw" hat, damit ich anhand dieser Anleitung ![]() das Panel zeichne.
Delphi-Quellcode:
Problem
Procedure TfrmMainWindow.Stat_MainDrawPanel(StatusBar : TStatusBar; Panel : TStatusPanel;
Const Rect : TRect); Begin If Panel = StatusBar.Panels[1] Then // zweites Panel Begin With StatusBar.Canvas Do Begin If DbConnectIsOk Then //DbConnectIsOk ist eine globale Variable die den Verbindungsstatus anzeigt Begin Brush.Color := ClLime; Font.Color := ClTeal; Font.Style := [FsItalic]; Panel.Text := 'Verbunden'; End Else Begin Brush.Color := Clred; Font.Color := ClNavy; Font.Style := [FsBold]; Panel.Text := 'Getrennt'; End; FillRect(Rect); // Hintergrund mit der Farbe füllen TextRect(Rect, 2 + Il_StatusBar.Width + Rect.Left, Rect.Top, Panel.Text); // Textausgeben (Il_STatusBar ist die ImageList mit dem Icon) End; Il_StatusBar.Draw(Stat_Main.Canvas, Rect.Left, Rect.Top, 0); // Icon einfügen //Stat_Main ist die StatusBar End; End; Jetzt würde ich allerdings auch gerne das Panel neu zeichnen lassen, da dieses eine mögliche Veränderung von "DbConnectIsOk" lediglich bei einem Neuzeichnen der gesamten Maske (Resize/Show/...) mitbekommt. Entweder müsste ich TfrmMainWindow.Stat_MainDrawPanel jedesmal über das TimerEvent aufrufen (da wüsste ich nicht genau wie) oder es gibt noch eine andere Lösung, mit der ich im TimerEvent das Panel direkt neu zeichnen kann. Hat jemand einen guten Rat für mich? |
AW: TStatusBar mit 'OwnerDraw'-Panel periodisch neu zeichnen
Fürs Neuzeichnen kannst du StatusBar.Invalidate, StatusBar.Refresh, StatusBar.Update oder StatusBar.Repaint verwenden. Näheres Dazu in der Hilfe.
|
AW: TStatusBar mit 'OwnerDraw'-Panel periodisch neu zeichnen
Wunderbar!
Ich hatte nicht daran gedacht, nach einer passenden Methode der StatusBar zu suchen. Vielen Dank. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz