Xojo Conferences
XDCMay2019MiamiUSA

Auswahl folgt Maus (Real Studio network user group Deutschland Mailinglist archive)

Back to the thread list
Previous thread: Drucken direkt in Vorschau
Next thread: Transparenz unter Windows


Probleme mit String Bearbeitung   -   Markus Schnell
  Auswahl folgt Maus   -   Stefan Sicurella
   Re: Auswahl folgt Maus   -   Michael Köhler <
    Re: Auswahl folgt Maus   -   Stefan Sicurella
     Re: Auswahl folgt Maus   -   Michael Köhler <
      Re: Auswahl folgt Maus   -   Maximilian Tyrtania
    Re: Auswahl folgt Maus   -   Christian Dorn

Auswahl folgt Maus
Date: 17.08.10 10:52 (Tue, 17 Aug 2010 11:52:36 +0200)
From: Stefan Sicurella
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

Re: Auswahl folgt Maus
Date: 17.08.10 13:35 (Tue, 17 Aug 2010 14:35:07 +0200)
From: 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 address removed>>:

> 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
>
>

Re: Auswahl folgt Maus
Date: 18.08.10 12:20 (Wed, 18 Aug 2010 13:20:15 +0200)
From: Stefan Sicurella
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 address removed>>:
>>
>>> 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
>
>
>
>

Re: Auswahl folgt Maus
Date: 19.08.10 07:44 (Thu, 19 Aug 2010 08:44:28 +0200)
From: Michael Köhler <
Nicht nur du ;)^^

Am 18.08.2010 13:20 Uhr schrieb "Stefan Sicurella" unter
<<email address removed>>:

> 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 address removed>>:
>>>
>>>> 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
>>
>>
>>
>>
>
>

Re: Auswahl folgt Maus
Date: 19.08.10 14:25 (Thu, 19 Aug 2010 15:25:25 +0200)
From: Maximilian Tyrtania
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 address removed>>:

> Nicht nur du ;)^^
>
>
> Am 18.08.2010 13:20 Uhr schrieb "Stefan Sicurella" unter
> <<email address removed>>:
>
>> 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 address removed>>:
>>>>
>>>>> 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
>>>
>>>
>>>
>>>
>>
>>
>
>
>

Re: Auswahl folgt Maus
Date: 17.08.10 15:57 (Tue, 17 Aug 2010 16:57:34 +0200)
From: Christian Dorn
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 address removed>>:
>
>> 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