PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RightClick in ListView


gencha
03.12.2001, 06:40
Ich will das ein rechter Mausklick das Element wo ich grad mim Mauscursor drüber bin anwählt. In ner ListView versteht sich.

Kann doch eigentlich nich son Drama sein :P


cYrus
03.12.2001, 20:38
Kann doch eigentlich nich son Drama sein

Doch kann´s :D

Es gibt zwei Ansätze, aber keine die ich als saubere Lösung betrachten möchte:

1. Du nimmst das MouseDown-Event und simulierst danach noch schnell einen Links-Klick

2. Mit dem MouseDown-Event kannst du die Postition des Mauszeigers auslesen - so könntest du berechnen wo/welches Element angeklickt wurde..

so long
Dj-Cyrus

sami
03.12.2001, 20:47
vielleicht lieg ich in deinem fall ja falsch, aber mit der rechten taste was auswählen zu wollen in ner list ist softwareergonomischen blödsinn

btw, was ist ein ListView? *fg*

Mac Fly
03.12.2001, 22:41
er meint, du klickst mit rechts nen Button und dann poppt ne liste nach unten auf, in der man dann befehle auswählen kann.
Denk ich mal ;)

cYrus
04.12.2001, 07:45
Ich dachte er meint ein normales List-Feld. Aber genauer köntnte er sich vielleicht schon noch ausdrücken..

so long
Dj-Cyrus

gencha
04.12.2001, 16:37
Ok dann werden wir mal etwas genauer :)

Microsoft Common Controls (MSCOMCTL.OCX)

Element: ListView

Ich hab n PopupMenu und das hat beispielsweise nen Eintrag "Edit".
Und da das MouseDown Event nur X und Y übergibt und nich die Zeile kann ich nur SelectedItem nutzen.
Und da würd ich halt ganz gern das er die Zeile über der grad die Maus is anwählt.

Und nurmal als kleines Beispiel wo ich sowas verdammt nützlich finde:

Nicklist in mIRC

Options -> General -> [X] Right-click in listbox selects line

MeltDown
04.12.2001, 18:36
Hi GenderChanger,

ist wirklich kein Drama :D :D :D

Also,

----------------------------------------------------------------------
Private Sub ListView1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = vbRightButton Then
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
DoEvents
d = ListView1.SelectedItem.Index
ListView1.SelectedItem = ListView1.ListItems(d - 1)
PopupMenu xxxxxxxx
DoEvents
End If


End Sub
------------------------------------------------------------------------
Und dass in dein Modul:

Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, _
ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, _
ByVal dwExtraInfo As Long)

Public Const MOUSEEVENTF_LEFTDOWN = &H2 ´ left button down
Public Const MOUSEEVENTF_LEFTUP = &H4 ´ left button up

----------------------------------------------------------------------

Aber wieso willst du eigentlich dass Item, über dem dass gewählt ist ??

Erklärung:
Sobald du über dem Listview1-Steuerelement die rechte maustaste drückst, simuliert der Code einen linken-maus-tasten druck und frägt per selecteditem den index ab. Mit listview.selecteditem wählt dass Programm Item genau eins über dem gewählten.

mit Popupmenu xxxxx wählst du dann dein Popupmenu. Mit Selecteditem.index kannst du dann eintrag bearbeiten.

cya

gencha
05.12.2001, 14:15
vielleicht sollte ich an meiner grammatik arbeiten

Und da würd ich halt ganz gern das er die Zeile,
über der grad die Maus is,
anwählt.

so is das gemeint :)

MeltDown
05.12.2001, 22:24
Lade dir den neuesten Servicepack runter, und sieh dann mal bei den eigenschaften listview rein.


cya

gencha
06.12.2001, 09:11
is ja ganz nett aber ich denke eigentlich das ich das neueste sp hab (SP4) und unter den eigenschaften hab ich schon ewig gegukct. ein wenig genauer dürfte es dann bitte schon sein.

MeltDown
07.12.2001, 00:22
du hast den Sevice Pack4 drauf, jedoch hat M$ schon Service Pack 5 released -> saugen :D

Aber in unserem fall reicht SP4 schon völlig aus, da es keine erneuerungen im Listview.ocx gibt.

Wegen Eigenschaften, früher hatten die Hottracking und Hover... genau dass bewirkt, was du willst, jedoch hat M$ wohl diese Eigenschaften "entschärft".

Ich werde mich auf jedenfall noch weiter umsehen, ob wir dein Problem vllt. nicht anders lösen können :D :D

PS: Funktioniert der "RechteMaustaste > Popup" code welches ich gepostet habe ???

cya
melt

gencha
07.12.2001, 08:28
jo mit der api hats geklappt hover und hattracking warn nich ganz das was ich wollte die hatte ich auchschon probiert.
aber dange jetzt funzts ja :D