Frage an OnClick-Experten



  • Hallo Leute,

    ich habe eine kleine Kompo entwickelt (SpeedButton). Wenn ich den Mauszeiger über diesen Button bewege wird dieser mit Rahmen erhöht dargestellt, ansonsten flach nur ein Bitmap, halt das Übliche.

    Folgendes Problem:
    Wenn ich nun auf einen Bereich neben dem SpeedButton klicke, die Maus gedrückt halte und den Mauszeiger jetzt über die Button-Schaltfläche bewege, bleibt mein Buttonfläche flach.
    Das ist in diesem Fall aber nicht erwünscht. Der Button soll erhöht dargestellt werden.

    Frage: Wie kann ich in meiner Kompo auf das OnClick-Ereignis des übergeordneten
    Fensters (z.B TForm1) zugreifen?

    Ich stelle mir das so vor:
    if (OnClickEreignis->parent->this)
    tu dies und das;



  • Du solltest das lassen. Das ist kein Standardverhalten. Das Problem ist, dass die Maus von dem Fenster gecaptured wird, auf das geklickt wurde, wenn man nicht loslässt.



  • Hallo WebFritzi,

    erst mal Dank für Deine warnenden Worte, ganz zufrieden bin ich mit Deiner Aussage aber noch nicht.

    Vielleicht habe ich meine Frage auch nicht richtig formuliert:

    Ich möchte nicht das OnClick-Ereignis des übergeordneten Fensters (z.B. TForm1) manipulieren oder verändern. Ich möchte nur meiner Kompo (SpeedButton) eine Möglichkeit geben, ihr Aussehen ("erhöhte Schaltfläche")
    zu ändern, wenn die außerhalb der Schaltfläche gedrückte Maus über diese gezogen wird. Sollte der Mausknopf auf der Schaltfläche dann losgelassen werden, muß der SpeedButton keinerlei Aktion durchführen.

    Leider fehlt mir hierzu die nötige Programmiererfahrung um das zu realisieren. Ich denke aber, daß meine Kompo dafür von außen (in diesem Fall vom übergeordneten Fenster z.B TForm1)
    erst eine Nachricht empfangen müßte. Falls eine solche Nachricht auftritt würde meine Kompo schnell ihr eigenes Bild neu malen, und sich danach gleich wieder aus dem Geschehen ausblenden nachdem sie TForm1 (übergeordnetes Fenster) das Kommando zurückzugeben hat.

    Übrigens: Das von mir geschilderte Verhalten läßt sich in Werkzeugleisten bei vielen sogenannten "Profi"programmen (Word, Excel) beobachten.

    Gibt´s denn wirklich keinen Lösungsweg?

    [ Dieser Beitrag wurde am 03.04.2003 um 21:34 Uhr von thunderbol4 editiert. ]

    [ Dieser Beitrag wurde am 03.04.2003 um 21:36 Uhr von thunderbol4 editiert. ]



  • Es gibt da zwei Nachrichten. Einmal beim Eintreten und einmal beim verlassen des Fensters (in deinem Fall der Button). Nur dann kann man glaub ich nicht prüfen, ob die Maustaste gedrückt ist. Also wenn dein Button immer gedrückt aussehen soll, wenn man mit der Maus darauf ist (auch ohne die Maustaste zu drücken) ist das kein Problem.



  • Original erstellt von thunderbol4:
    Übrigens: Das von mir geschilderte Verhalten läßt sich in Werkzeugleisten bei vielen sogenannten "Profi"programmen (Word, Excel) beobachten.

    Das kommt darauf an. Klick mal hier im IE im oberen Frame neben Impressum und fahre dann über die Werkzeugleiste des IE. Bei mir passiert da nix.
    Um dein Verhalten zu erhalten, musst du dem Parent des Knopfes eine neue WindowProc verpassen (siehe FAQ: Windows Messages). Das ist zwar kein Problem - ist aber IMHO unnötig.


Anmelden zum Antworten