Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Klick auf Button mit enabled=false (https://www.delphipraxis.net/151768-klick-auf-button-mit-enabled%3Dfalse.html)

eike42 1. Jun 2010 07:05


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

mkinzler 1. Jun 2010 07:07

Re: Klick auf Button mit enabled=false
 
Wenn ein Control deaktivuiert ist, ist es nunmal nicht mehr bedienbar. das ist der Sinn des Deaktivieren.

Uwe Raabe 1. Jun 2010 07:23

Re: Klick auf Button mit enabled=false
 
Zitat:

Zitat von mkinzler
Wenn ein Control deaktivuiert ist, ist es nunmal nicht mehr bedienbar. das ist der Sinn des Deaktivieren.

Exakt!

Um es deutlich zu machen, hier ein Auszug aus der Windows-API-Dokumentation:

Zitat:

EnableWindow Function
Enables or disables mouse and keyboard input to the specified window or control. When input is disabled, the window does not receive input such as mouse clicks and key presses. When input is enabled, the window receives all input.

himitsu 1. Jun 2010 07:25

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.

eike42 1. Jun 2010 13:42

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... :(

himitsu 1. Jun 2010 13:52

Re: Klick auf Button mit enabled=false
 
Zitat:

Zitat von eike42
Da es in der Toolbar ist, geht sowas wie transparentes Control drüberlegen oder so natürlich auch nicht... :(

TPaintBox hätte sich gut gemacht, aber bei dem Ort des Buttons isses wirklich blöd.

OnMouseClick des übergeordneten Controls und prüfen ob auf den Button geklickt wurde

Delphi-Quellcode:
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;
@Mithrandir: wie kommst du nur darauf? :roll:

Mithrandir 1. Jun 2010 13:52

Re: Klick auf Button mit enabled=false
 
So einen Schwachsinn kann sich doch nur eine Marketingabteilung ausgedacht haben. :wall:

mkinzler 1. Jun 2010 13:54

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.

H4ndy 1. Jun 2010 14:17

Re: Klick auf Button mit enabled=false
 
Zitat:

Zitat von mkinzler
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.

Also die "Windows User Experience Guidelines" sind mehrere hundert Seiten und beschreiben alles ziemlich gut.
Ich glaub nur eher, dass da noch nie jemand weiter reingeschaut hat. http://msdn.microsoft.com/en-us/library/aa511258.aspx
(merk ich vorallem, wenn ich Crossplatform-Programm wie InkScape nutze und da immer die "Schliessen, Speichern, Abbrechen"-Knoepfe verdreht sind.)

mkinzler 1. Jun 2010 14:18

Re: Klick auf Button mit enabled=false
 
Diese kamen aber erst mit Vista


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:44 Uhr.
Seite 1 von 2  1 2      

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