![]() |
Klick auf Button mit enabled=false
Moin moin,
ich habe ein eigentlich ziemlich einfaches Problem, habe aber noch keine Lösung gefunden. Problem: Ich möchte ein Control (in meinem Fall ein TAdvToolbarButton aus TMS, ist aber egal) "ausgrauen", aber trotzdem das Mouse-Event abfangen. Ja, ist nicht meine Idee, es soll halt so. Allerdings sind alle Mouse-Events deaktiviert, solange ich enabled auf true habe. Mein Workaround wäre, das Aussehen des Buttons so zu verändern, dass er "disabled" aussieht, aber es nicht ist. Gibt es noch eine andere Möglichkeit, von der ich nichts weiss? Kann man einem Control sagen, dass es im "disabled"-Zustand noch auf Events reagieren soll? Vielen Dank für eure Hilfe! Eike |
Re: Klick auf Button mit enabled=false
Wenn ein Control deaktivuiert ist, ist es nunmal nicht mehr bedienbar. das ist der Sinn des Deaktivieren.
|
Re: Klick auf Button mit enabled=false
Zitat:
Um es deutlich zu machen, hier ein Auszug aus der Windows-API-Dokumentation: Zitat:
|
Re: Klick auf Button mit enabled=false
Es gibt zwar zwei halbwegs einfache Möglichkeiten, um hier an die Mouse-Events zu gelangen,
aber erstmal 'ne Frage: wozu möchtest/mußt du diese denn nutzen? Eventuell gibt es für dein Vorhaben ja einen "besseren" Weg. |
Re: Klick auf Button mit enabled=false
Ein Toolbar-Button soll, wenn keine Lizenz für das Addon vorhanden ist, disabled sein, damit ein normaler User sieht, dass man da nicht klicken kann. Allerdings soll trotzdem, wenn ein User trotzdem draufklickt, eine Meldung angezeigt werden ("Extra-Lizenz benötigt, bitte kaufen, blabla").
Ich werde dann wohl das Image vom Button durch das disabled-image ersetzen, die Schriftfarbe auf "grau" setzen und die Events drauflassen. Da es in der Toolbar ist, geht sowas wie transparentes Control drüberlegen oder so natürlich auch nicht... :( |
Re: Klick auf Button mit enabled=false
Zitat:
OnMouseClick des übergeordneten Controls und prüfen ob auf den Button geklickt wurde
Delphi-Quellcode:
@Mithrandir: wie kommst du nur darauf? :roll:
procedure TForm1.ToolBar1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if PtInRect(Button1.BoundsRect, Point(X, Y)) and not Button1.Enabled then ShowMessage('nee, is nich'); end; |
Re: Klick auf Button mit enabled=false
So einen Schwachsinn kann sich doch nur eine Marketingabteilung ausgedacht haben. :wall:
|
Re: Klick auf Button mit enabled=false
Ich finde es schon interessant, wie jeder über fehlende UI-Standards bei Windows (im Vergleich zu MacOS) redet aber trotzdem werden (die wenigen Standards) missachtet. Ein deaktivierter Button sollte imho nicht bedienbar sein.
|
Re: Klick auf Button mit enabled=false
Zitat:
Ich glaub nur eher, dass da noch nie jemand weiter reingeschaut hat. ![]() (merk ich vorallem, wenn ich Crossplatform-Programm wie InkScape nutze und da immer die "Schliessen, Speichern, Abbrechen"-Knoepfe verdreht sind.) |
Re: Klick auf Button mit enabled=false
Diese kamen aber erst mit Vista
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 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