TImage::OnDblClick abfangen



  • Hallo zusammen,

    hab mir ein Programm geschrieben, mit welchem man einige grafische Elemente in einem Panel per Drag' Drop hin und her ziehen kann. Bei Doppelklick auf ein Element geht ein Form auf. Das Problem: Wenn 2 TImage's sich überlagern, fängt das oberste den DblClick ab. Ich möchte aber, dass das Image nur dann sich dem DblClick annimmt, wenn auch auf die gezeichnete Fläche(mit TCanvas) des Images geklickt wurde. Ansonsten, soll dann das darunter liegende Image den Click erhalten. Gibt es da irgendwelche Eigenschaften (Transparent für Clickereignisse) oder so? Wenn nicht, wie lässt sich sowas von Hand realisieren?

    Gruss und danke im Voraus

    Sebastian



  • Glaube nicht dass es da was fertiges gibt.

    Eine Möglichkeit:
    Im DblClick-Ereignis setzt du einen bool-Wert auf true. Diesen frägst du im OnMouseDown-Ereignis des Images ab und bestimmst mit dem x- und y-Wert der aktuellen Mausposition das entsprechende Pixel mit Hilfe von Image->Canvas->Pixels.
    Wenn das transparent ist löst du das OnDblClick-Ereignis des darunter liegenden Images aus.
    An das untergeordnete Image kommst du über Image->ComponentIndex des ersten Images und Image->Parent->Components.
    Nicht vergessen am Ende den bool-Wert wieder zurückzusetzen.


Anmelden zum Antworten