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/)
-   -   Delphi VCL Button Image während modalem Dialog weg (https://www.delphipraxis.net/210676-vcl-button-image-waehrend-modalem-dialog-weg.html)

TurboMagic 25. Mai 2022 21:46

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

TurboMagic 25. Mai 2022 22:02

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.

himitsu 25. Mai 2022 23:15

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:

Wenn die Eigenschaften DisabledImages und HotImages der Symbolleiste gesetzt sind, werden in den Zuständen "Schaltfläche nicht gedrückt" und "Mauszeiger über der Schaltfläche" unterschiedliche Bilder angezeigt.
Ist da irgendwo was angegeben?


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:

auch nirgends eine Farbe zugewiesen
Selbst wenn es die gleiche Farbe ist, was sagt ParentColor?

TurboMagic 26. Mai 2022 09:28

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

TurboMagic 26. Mai 2022 10:46

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.

TurboMagic 27. Mai 2022 11:25

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

TurboMagic 6. Jun 2022 10:01

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 15:23 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