Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Gelöst: Schrott in der StatusBar (https://www.delphipraxis.net/198539-geloest-schrott-der-statusbar.html)

MacGuyver 12. Nov 2018 11:22

Gelöst: Schrott in der StatusBar
 
Moin Leute :hi:

Ich verwende ein TTntStatusBar in meinem Projekt. Ich zeichne dabei Panels selber um Grafiken und andere Hintergrundfarben verwenden zu können. Immer wieder kommt es vor, dass dort Text aus immer den gleichen Menüpunkten angezeigt werden. Ich hatte schon auf DoubleBuffered umgestellt, was keine Änderung brachte.

Eben bin ich drüber gestolpert und konnte den Fehler beheben: ShowHint war True und Hint war leer.

:shock:

Das wars? Ja, ich setze nun "ShowHint := Hint > '';" und gut.

Ob der Fehler auch bei einem TStatusBar aufkommt, kann ich nicht sagen.

Delphi.Narium 12. Nov 2018 11:33

AW: Gelöst: Schrott in der StatusBar
 
Den Fehler kenn ich schon von der Statusbar aus Delphi 7.

Nur, dass die Problemlösung so einfach ist, dadrauf bin ich noch nicht gekommen :-(

Hobbycoder 12. Nov 2018 14:22

AW: Gelöst: Schrott in der StatusBar
 
Mann-O-Mann....genau den Fehler hatte ich bis vor kurzem auch noch in einer alten D7-Anwendung. Hab ewig danach gesucht, weil ich es mir einfach nicht erklären konnte und vor allem der Fehler scheinbar recht sporadisch aufgetreten ist.
Aus lauter Verzweiflung habe ich dann die StatusBar rausgeschmissen und mir eine eigene Komponente dafür geschrieben. Hätte ich damals schon gewusst, dass die Lösung derart banal ist... ;-) Hat mich Tage gekostet ;-)

taaktaak 12. Nov 2018 16:24

AW: Gelöst: Schrott in der StatusBar
 
Moin, Moin,
dieser Fehler hat mich auch schon bei der TStatusbarPro zur Verzweiflung gebracht! Insbesondere, da er wirklich nur extrem sporadisch auftaucht. Nun gibt es eine Abhilfe - ok. Leider verstehe ich die Angabe zur Abhilfe nicht...

"ShowHint := Hint > '';"

Was will mir das sagen :stupid::cyclops:

Redeemer 12. Nov 2018 16:51

AW: Gelöst: Schrott in der StatusBar
 
In Anwendungen mit TStatusBar steht bei mir irgendwo am Anfang der Anwendung
Delphi-Quellcode:
Application.Hint := '';


/Edit: oder meinst Menüpunkte aus deinem Programm? Ich kenne das Problem nur mit Menüpunkten aus Delphi, die beim Start meines Programms angezeigt werden.

Hobbycoder 12. Nov 2018 17:09

AW: Gelöst: Schrott in der StatusBar
 
Bei mir war das so, dass zur Runtime sporadisch in den Panels plötzlich nicht mehr das Gezeichnete war, sondern eben das Mainmenu der Application.

Aber eine Regelmäßigkeit konnte ich seinerzeit nicht wirklich ableiten. (Es wird aber eine gegeben haben)
Zitat:

Zitat von taaktaak (Beitrag 1417895)
"ShowHint := Hint > '';"

Was will mir das sagen :stupid::cyclops:

Möglicherweise, zumindest vermute ich das jetzt mal, soll das

Delphi-Quellcode:
StatusBar1.ShowHint := StatusBar1.Hint <>'';
lauten. So würde es für mich Sinn ergeben.

Heißt wohl, dass wenn der HintString leer ist, greift die StatusBar auf irgendwas anderes zu.
Bei mir was das nur so, wenn ich die Panels selber gezeichnet habe. Es muss aber noch eine andere Abhängigkeit geben, denn ich habe das schon Jahrelang fehlerfrei genutzt, bis durch irgendeine Änderung der Fehler plötzlich "aktiv" war.

Delphi.Narium 12. Nov 2018 17:21

AW: Gelöst: Schrott in der StatusBar
 
Zitat:

Zitat von taaktaak (Beitrag 1417895)
Moin, Moin,
dieser Fehler hat mich auch schon bei der TStatusbarPro zur Verzweiflung gebracht! Insbesondere, da er wirklich nur extrem sporadisch auftaucht. Nun gibt es eine Abhilfe - ok. Leider verstehe ich die Angabe zur Abhilfe nicht...

"ShowHint := Hint > '';"

Was will mir das sagen :stupid::cyclops:

Naja, das Attribut ShowHint schaltet die automatische Anzeige von Hints ein oder aus.
Hier wird sie halt nur eingeschaltet, wenn der Inhalt des Attributes Hint größer als ein Leerzeichen ist, also irgendwas an Text enthält.

Das Problem liegt wohl in der automatischen Anzeige von Hints, wenn diese leer sind. Dann wird irgendein Menüeintrag des Programmes in irgendein Panel der Statusbar geschrieben - manchmal - manchmal auch nicht. Egal ob TStatusBar oder TStatusbarPro, bei beiden tritt dieses Problem auf.

Wobei ich das
Delphi-Quellcode:
"ShowHint := Hint > '';"
nicht nur auf die Hintanzeige der Statusbar "reduzieren" würde, sondern ganz allgemein. Probleme gibt es vor allem auch noch dann, wenn bei 'ner TStatusBar(Pro) AutoHint auf True steht. Irgendwas wird dann da sporadisch "gewürfelt".

Einziges nachvollziehbare dabei: In der StatusBar steht irgendwas aus dem MainMenü des Programmes. Was anderes, als Captions von Menüeinträgen, habe ich so in der Statusbar nie zu Gesicht bekommen.

taaktaak 13. Nov 2018 09:42

AW: Gelöst: Schrott in der StatusBar
 
Moin,Moin,
da die StatusBarPro offenbar nicht ganz unbekannt ist. Möchte ich kurz über meine Versuche zur Abhilfe berichten: Die StatusBarPro gibt ja die Möglichkeit bereits im OI individuelle Hint-Text zu hinterlegen. Dies nutze ich auch, allerdings möchte ich die Möglichkeit haben nicht für jedes Panel eine Text anzeigen zu müssen.

Damit wird es ein wenig kompliziert. Einerseits muss StatusBarPro.ShowHint damit praktisch immer auf TRUE gesetzt werden um in den einzelnen Panels den Hint anzuzeigen. Um den "Anzeige-Schrott" zu unterbinden ist lt. McGyuver aber in diesem Fall zwingend ein Hint-Text für die (gesamte) Statusbar zu definieren. Dieser Text wird aber immer dann angezeigt, wenn für das einzelne Panel kein Text hinterlegt ist - das ist aber ja nicht gewollt.

Um auch diesen Fällen gerecht zu werden, habe ich die Komponente TStatusBarPro angepasst und in TStatusBarPro.CMHintShow() an das Ende die Zeile
Delphi-Quellcode:
if FMousePanel.Hint = '§§§' then Message.HintInfo^.HintStr :='';
eingefügt. Diesen Text gebe ich nun im OI an, wenn das Panel keinen HintText anzeigen soll. Ob damit der "Schrott" wirksam verhindert werden kann ???

Da das alles nur "gebastel" ist, hab ich versucht, zu ergründen worin die Verbindung zum MainMenu liegen könnte, um die Frage zu klären wie es dazu kommen kann, dass der PanelText manchmal aus den Captions des MainMenu besteht - ich habe nichts gefunden. Schade.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 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