PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Doppelklick auf Listen-Eintrag simulieren?


x-dragon
2003-09-16, 14:59:08
Meine Frage ist allgemein gemeint, aber einer Lösung speziell für Delphi wäre ich nicht abgeneigt :).

Also ich suche eine Möglichkeit, um einen Doppelklick auf einen bestimmten Eintrag in einem ListView auszuführen (oder auch ListBox)?

Per WinAPI könnte ich das schon machen, aber da hab ich bisher nur eine Möglichkeit gefunden bei der man immer die Koordinaten mitgegeben muss, deshalb suche ich erstmal eine andere Lösung (falls es eine gibt).

[edit]
Ich bastel mir mal wieder selbst was. Der Doppelklick ist ja gar nicht notwendig bzw kann ich ja die schon vorhandene OnDblClick-Prozedur aufrufen und muss ihm dabei nur die richtige ListView-Tabelle mitgeben, aber zuvor in der richtigen Tabelle den richtigen Eintrag selektieren.

tb
2003-10-03, 02:02:30
Also wenn Du eine Fremdapplikation steuern willst, dann solltest Du so vorgehen:

- alle Prozesse / Fenster durchsuchen, nach Deinem gewünschtem Programm (EnumWindows und EnumChildWindows)
- SendMessage o.ä. verwenden, um Nachrichten an die jeweiligen Fenster oder Controls(Buttons, etc.) zu senden
- bei MS Visual C++ ist eine App names Spy++ dabei, die zeigt zu allen Prozessen die Fenster und dazugehörige Controls an
- leider hab ich keine Ahnung, ob es diese Funktionen unter Delphi gibt, denk aber schon


Links:
http://www.innotts.co.uk/zephyr/enum.html

Thomas

x-dragon
2003-10-03, 11:02:02
Solche Tools zum suchen der passeden Prozess-ID gibts auch für Delphi, aber das war in meinem Fall nicht notwendig.

Mit den Infos die ich aus einem Fenster erhalten habe, konnte ich direkt die richtige ListView auswählen lassen, und dann automatisch den passenden Eintrag in der Liste markieren. Der Rest wurde dann durch das ausführen der OnDblClick und der entsprechenden ListView als Sender richtig abgearbeitet, trotzdem danke :).

Achja wenn ich die ID des Fensters hätte, wüsstes du dann wie ich gezielt DblClick an eine bestimmte Zeile senden könnte? Die einzige Möglichkeit ich die da gefunden hatte erforderte dann immmer die genauen Koordinaten ...