![]() |
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
|
Re: Klick auf Button mit enabled=false
Ach ums mal grad nebenbei zu erwähnen: Es ist ein leichtes deaktivierte Buttons ferngesteuert wieder zu aktivieren. Also ein Schutz ist das nicht!
|
Re: Klick auf Button mit enabled=false
Um das geht es doch nicht, der Button soll ja trotz Deaktivierung bedienbar sein
|
Re: Klick auf Button mit enabled=false
Ja ich rede davon, dass folgendes NICHT sicher ist:
Delphi-Quellcode:
if Button.Enabled then
Programmfunktion else ShowMessage('Bitte kaufen!'); |
Re: Klick auf Button mit enabled=false
Hi, erstmal danke für die Hilfe. Ich werde es mal mit dem übergeordneten Control probieren.
Zitat:
@H4ndy: Danke für den Link zum Windows User Experience Guidelines, da werde ich auf jeden Fall mal reinschauen. @Neutral General: Danke für den Hinweis, natürlich wird hier auch nochmal die Lizenz abgefragt. Zu dem Thema kann ich nur nochmal auf ![]() Danke und viele Grüße Eike |
Re: Klick auf Button mit enabled=false
Zur Not vergleichst du halt die stelle an der in der Form geklickt wurde mit der Stellle wo du den Button plaziert hast.
Sollte es sich in dem bereich befinden wollte er wohl draufklicken ;) Gruß Andreas |
Re: Klick auf Button mit enabled=false
1. Der Wunsch der Marketingabteilung, neue Begehrlichkeiten zu wecken, ist absolut legitim und sichert zudem den Job des Programmierers.
2. Die User von heute sind meist so routiniert im Umgang mit Windows, dass sie wissen, dass beim Klick auf einen disabelten Button nichts passiert. 3. Lösung: den Button enabled lassen und in Abhängigkeit von der Lizenz die Funktionalität oder die Kaufanimation aufrufen. |
Re: Klick auf Button mit enabled=false
Zitat:
Zitat:
(klar isses blöd, wenn man beim Kauf der Lizenz dann upgraden muß, aber was nicht drin ist, daß kann auch nicht gecrackt werden)
Delphi-Quellcode:
// aus
if istLizenzVorhanden then // wird nur durch Änderung eines einzigen Bytes schnell mal if not istLizenzVorhanden then // aber sowas steht ja auch nochmal in den Anti Cracking FAQ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 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