Zu dem Thema evtl. auch hilfreich: http://support.realsoftware.com/listarchives/realbasic-nug/2010-02/msg01186. html
Max Am 19.08.2010 8:44 Uhr schrieb "Michael Köhler" unter <[email protected]>: > Nicht nur du ;)^^ > > > Am 18.08.2010 13:20 Uhr schrieb "Stefan Sicurella" unter > <[email protected]>: > >> Super, danke.. >> >> RowFormXY hab ich wohl zuvor übersehen >> >> Gruß >> >> >> Stefan >> >>> Oh, das geht aber viel einfacher. Und außerdem hast Du (Michael) außer Acht >>> gelassen, dass die ListBox evtl. noch einen Header besitzt... >>> >>> Die ListBox-Klasse hat eine Funktion "RowFromXY ( X As Integer, Y As Integer >>> ) As Integer". D. h. im MouseMove-Event brauchst Du (Stefan) nur folgendes >>> einzutragen: >>> >>> me.ListIndex = me.RowFromXY(x,y) >>> >>> Die ListIndex-Eigenschaft setzt auch gleich die Markierung aller anderen >>> Zeilen zurück und löst den Change-Event aus. Nur wenn Du definitiv keinen >>> Change-Event haben willst, kannst Du die Methode von Michael verwenden mit >>> dem Unterschied, dass Du die "RowFromXY" Methode verwendest, anstatt die >>> aktuelle Zeile mit Hilfe der "RowHeight" zu errechnen. Dazu müsstest Du dann >>> die letzten drei Zeilen in Michaels Beispiel ersetzen durch: >>> >>> dim i as Integer = me.RowFromXY(x,y) >>> me.selected( i ) = true >>> >>> "selected" stört es nämlich nicht, wenn Du ihm einen Wert < 0 oder >= >>> ListCount übergibst. Also ist die if-Abfrage hier überflüssig. >>> >>> >>> Am 17.08.2010 um 14:35 schrieb Michael Köhler: >>> >>>> Mit Hilfe der Mathematik. Einen anderen Weg kenne ich leider nicht. Du >>>> kennst ja die Höhe deiner Zeilen (RowHeigh) und über MouseMove der Listbox >>>> weist du wo die Maus in der Listbox ist. Dann kannst du dir ausrechnen über >>>> welcher Zeile die Mouse steht. >>>> Ich würde etwa folgendes ins MouseMove-Event schreiben >>>> >>>> Dim i As Integer >>>> >>>> For i=0 To me.ListCount-1 >>>> me.Selected(i)=false 'alle Zeile deselektieren >>>> Next >>>> >>>> i=y/me.RowHeight 'Zeile ermitteln über der die Mouse grade ist >>>> >>>> If i > 0 AND i < me.ListCount Then >>>> me.selected(i)=True 'Zeile selektieren über der die Mouse grade ist >>>> End >>>> >>>> Grüße Michael >>>> >>>> Am 17.08.2010 11:52 Uhr schrieb "Stefan Sicurella" unter >>>> <[email protected]>: >>>> >>>>> Hi, >>>>> >>>>> ich möchte, dass die Zeile einer Listbox als selektiert markiert ist wenn >>>>> die >>>>> Maus darüber ist und die selektierte Zeile dann auch quasi der Maus folgt. >>>>> >>>>> wie bekomme ich heraus über welcher row die Maus gerade steht? >>>>> >>>>> >>>>> Gruß >>>>> >>>>> >>>>> Stefan >>>>> >>>>> >>>> >>>> >>>> >>> >>> Gruß >>> Christian >>> >>> >>> >>> >> >> > > >
