_GUICtrlListBox_ClickItem klickt falsche Dinge an...

  • Guten Abend zusammen.
    Ich habe hier eine ListBox, ca 100x300 Pixel. Vermutlich ist die Größe das Problem.
    Wenn ich mit oben genanntem Befehl ein Item anklicken will, passiert das soweit auch. Dummerweise geht das nur gut, solange das Item innerhalb des Fensters "liegt".
    Sobald man theoretisch scrollen muss, klickt der Befehl sonstwo hin.
    Beispiel:
    Item 15 Doppelklick -> kein Problem
    Item 147 Doppelklick -> Problem!!
    Es wird ein Doppelklick an der Pixel-Stelle ausgeführt, wo das Item sein müsste. Doch die ListBox ist zu klein, der Klick wird in meiner Schnellstartleiste ausgeführt. Anstatt dem gewüschten Ergebnis öffnet sich ein Programm(im Test waren es Firefox oder VMWare).

    Habt ihr eine Idee, wie ich die Items "unterhalb" der ListBox trotzdem öffnen kann? Wie gesagt, die ersten 20 gehen ohne Probleme, da diese ohne Scrollen erreichbar sind.

    2 Mal editiert, zuletzt von penta.phoenix (3. März 2009 um 20:59)

  • Äh, klar kein Problem.

    [autoit]


    _GUICtrlListBox_ClickItem($listbox_handle, $i, "left", False, 2)

    [/autoit]

    Ich weiß, dass bringt dich jetzt weiter. Solange $i < 21 ist, klapp alles wunderbar. Die ListBox ist übrigens nicht von mir, die gehört zhu einem Fremdprogramm.
    Wenn ich nun $i > 20 mache, versucht die Funktion, das Item anzuklicken. Dummerweise klickt es dabei unter die ListBox und trifft halt was anderes.
    Bei Werten für $i um 30 bis 50 klickt er mir in mein Programm, was hinter der ListBox liegt, das wäre momentan der FireFox.
    Wenn ich Werte > 50 nehme, klickt das Ding in meine Schnellstartleiste und öffnet mir, was es da halt erwischt.

    Wenn ich die ListBox vorher weiter nach oben verschiebe, brauche ich für die jeweiligen Effekte logischweise auch höhere Werte.

    Gelöst habe ich es mit ControlSend, also Scrollen, damit das Item sichtbar in der ListBox liegt, dann gibt's auch keine Probleme beim anklicken.

    Allerdings währe mir eine saubere Lösung ohne Scrollen lieber.

  • Das Item zum anklicken muss sichtbar sein, also füge einfach vor ClickItem die Zeile ein, um den Eintrag auf jeden Fall anzuzeigen.
    _GUICtrlListBox_SetTopIndex($listox_handle, $ItemIndex)