![]() |
VCL Button Image während modalem Dialog weg
Hallo,
in einer D11.1 VCL Anwendung gibt es einen Toolbar mit Toolbuttons drauf. Die Icons dazu kommen von einer VirtualImageList. Bei einem Button wird jetzt immer das Icon ausgeblendet, wenn ich den anklicke. Im On Click handler wird ein modaler Dialog erzeugt und angezeigt. Schließe ich den Dialog, ist das Icon wieder da. En Repaont auf dem Button selber hat nichts gebracht. Verschiebe ich den modalen Dialog oder ändere seine Größe wird das Icon neu gezeichnet. Wenn ich statt dem Stl Charcoral dark slate den Standard Windows Stil benutze passiert das nicht. Allerdings passiert dann was ganz anderes: In dem modalen Dialog gibt es ein Bottom aligned TPanel auf dem die Buttons (OK, Abbrechen usw.) drauf sind. Die Farbe des Panels flimmert bei Nutzung des Windows Stils dann permanent grün und rot, das sind die beiden Farben die in einem Grid oberhalb dieses Panels verwendet werden. Aber wie die das Panel plötzlich flimmern lassen? Irgendwer eine Idee woher diese Probleme kommen? Grüße TurboMagic |
AW: VCL Button Image während modalem Dialog weg
Ach ja: bei anderen Stilen flimmter das auch nicht und dem Panel wird im Code auch nirgends eine Farbe zugewiesen.
|
AW: VCL Button Image während modalem Dialog weg
Früher hatten Buttons ein Glyph (Icon/Image) und das konnte wie Mehrere behandelt werden. (mehrere Teilbilder in dem einem Bild, wie z.B. Normal/Pressed/Disabled)
Da mußte man aufpassen, was dort als "Anzahl" in einem Property stand. (irgendwie fand ich das angenehmer, ein mehrteiliges Image, anstatt bis zu 3 ImageLists verwalten zu müssen ... mit den ImageIndex ist das doch total grauenhaft, aber ich würde eh empfehlen lieber "ImageNamen" zu verwenden) Ich weiß aber noch, dass, wenn die Icons mehr als 16 Farben hatten, und man nicht selber die anderen Icons/Images lieferte, dass z.B. das generieren des DisableImages nicht funktionierte und das Bild dann leer war, wenn Delphi Windows versuchte dieses Icon aus dem ersten Icon abzuleiten. Heute ist das bissl anders, aber die ToolBar/ToolButtons haben immernoch 3 StateImages Images, HotImages? und DisableImages und außerdem noch Zitat:
Grundsätzlich: die ToolButton sind ein TGraphicControl, also Delphi malt den Knopf selber. Und bei Labels, welche auch TGraphicControl sind, hab ich in den letzten Jahrzehnten öfters mal erlebt, dass die Controls ab und an mal verwanden, ohne erkennbaren Grund. Da konnte man dann aber notfalls auf TStaticText umstellen, welches das "echte" Label von Windows ist. Hier wäre dann noch die Wahl, auf Ribbons zu wechseln ... die sind eh viel cooler. :stupid: Zitat:
|
AW: VCL Button Image während modalem Dialog weg
Hallo,
danke für die Idee mit dem ParentBackground. Das hab' ich mal rausgenommen und siehe da: jetzt geht es. Obwohl beide ClBtnFace hatten. Jetzt hab' ich aber ein anderes Problem: Der Bildschirm enthält einen Button über den man einen neuen Dialog zur Erfassung von Daten aufrufen kann. Wird dieser mittels OK geschlossen, werden die Daten in die DB geschrieben und die Anzeige des Parent Dialogs durch neu Ausführen des Selects aktualisiert. Nur ändert irgendwer (nicht ich im Code!) den Mauscursor auf eine Sanduhr mit Text SQL darunter. Woher kommt das und wie stelle ich es wieder ab? Ich habe schon versucht den Cursor des Parent Fensters vor Aufruf dieser Erfassungsmaske in einer lokalen variable zu sichern und im finaly block des AUfrufes dieses Erfassungsbildschirmes wieder zuzuweisen, hat aber nichts gebracht. Grüße TurboMagic |
AW: VCL Button Image während modalem Dialog weg
Gelöst!
Wenn man beim DataSet das hier setzt: FMyFDQuery.ResourceOptions.SilentMode := True; ist die Sanduhr deaktiviert. |
AW: VCL Button Image während modalem Dialog weg
Hallo,
ich glaube ehrlich gesagt nicht, dass das Button Imnage während Dialogaufruf weg Problem an den Disabled Images oder so liegt, werde das aber nochmal prüfen. Denn: wenn ich keinen Stil anwende (= Windows), dann bleibt das Icon da! Grüße TurboMagic |
AW: VCL Button Image während modalem Dialog weg
Hallo,
habe jetzt mal dem Toolbar auch für die Diaabled und HotImages die selbe VirtualImage List zugeordnet. Hat leider nichts gebracht. Nur: es gibt da auch andere Buttons die modale Dialoge aufrufen und bei deren Buttons passiert das nicht. Ich hab' mal einen funktionierenden Button verlgichen und konnte keine relevanten Unterschiede feststellen (klar, Name, ImageIndex und Hint sind anders aber sonst nix). Noch jemand eine Idee? Grüße TurboMagic |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:01 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-2025 by Thomas Breitkreuz