k4fu Geschrieben 12. Februar 2007 Geschrieben 12. Februar 2007 hi, ich fülle ein lv mit daten; jedoch komm es manchmal vor, das ein datensatz nicht erkannt wird (ich markiere z.b. eine zeile und will mit der id (aus der spalte id) weitere infos zum datensatz anzeigen; jedoch erkennt er den ds nicht, bzw ich hab den eindruck, dass immer der nächste verwendet wird; --> bei einem 1 wird keiner erkannt --> bei 2 ds der obere nach nochmaligen klicken, wird dieser erkannt; was kann das sein? Zitieren
Amstelchen Geschrieben 12. Februar 2007 Geschrieben 12. Februar 2007 kann ich so nicht nachvollziehen. bitte poste mal die relevanten codezeilen und/oder setze debugausgaben auf mausereignisse im LV. welche mauseregnisse fragst du denn überhaupt ab? und nur interessehalber: welche version der common controls verwendest du? s'Amstel Zitieren
xk4fu Geschrieben 12. Februar 2007 Geschrieben 12. Februar 2007 hoi version 6.0 sp6 Private Sub ListView1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) Dim i As Long Dim lID As Long Dim sStatus As String Dim lvhti As LVHITTESTINFO Dim dwState As LVItemStates Dim iIndent As Long If (Button = vbRightButton) Then lvhti.pt.x = x / Screen.TwipsPerPixelX lvhti.pt.y = y / Screen.TwipsPerPixelY If (ListView_HitTest(m_hwndLV, lvhti) <> LVI_NOITEM) Then If Button = vbRightButton Then If ListView1.ListItems.count > 0 Then If Not ListView1.SelectedItem Is Nothing Then lID = ListView1.SelectedItem.ListSubItems(1).Text sStatus = Mid(ListView1.SelectedItem.SubItems(4), 5) If sStatus = "Erledigt" Then If Not ListView1.SelectedItem Is Nothing Then MbMausClick = False ListView_SetItemState m_hwndLV, ListView1.SelectedItem.Index - 1, 0, -1 End If Exit Sub End If If lID <> 0 Then frmHauptmaske.lAuftrID = lID PopupMenu frmHauptmaske.mnuAuftrag If Not ListView1.SelectedItem Is Nothing Then MbMausClick = False ListView_SetItemState m_hwndLV, ListView1.SelectedItem.Index - 1, 0, -1 End If End If End If End If End If Else If Not ListView1.SelectedItem Is Nothing Then MbMausClick = False ListView_SetItemState m_hwndLV, ListView1.SelectedItem.Index - 1, 0, -1 End If End If End If End Sub ich muss dazusagen, dass die daten nur sporadisch "verloren gehen" also das ist nicht immer so Zitieren
xk4fu Geschrieben 27. Februar 2007 Geschrieben 27. Februar 2007 was anderes als ListView1.SelectedItem.ListSubItems(1).Text gibt es doch nicht, um einen markierten datensatz auszulesen, oder? Zitieren
Klotzkopp Geschrieben 27. Februar 2007 Geschrieben 27. Februar 2007 Ich bin mir nicht sicher, ob ein Rechtsklick überhaupt bewirkt, dass der Eintrag selektiert wird, zumindest nicht, bevor die Mausnachricht eintrifft. Benutzt doch mal das Ergebnis des HitTest (lvhti.iItem) als Index. Zitieren
xk4fu Geschrieben 27. Februar 2007 Geschrieben 27. Februar 2007 hab doch meinen code oben gepostet und sonst funktioniert es ja! nur manchmal nicht (leider habe ich noch nicht herausgefunden, wann dies ist) es tritt nur sporadisch auf! das ist es ja... Zitieren
Klotzkopp Geschrieben 27. Februar 2007 Geschrieben 27. Februar 2007 hab doch meinen code oben gepostetUnd ich habe dir einen Tipp gegeben, was du anders machen könntest. Wo ist das Problem? Du versuchst, über den Index des selektierten Eintrags zu gehen. Und ich habe angemerkt, dass ich nicht sicher bin, ob ein Rechtsklick überhaupt die Selektion beeinflusst. Es könnte also sein, dass dir SelectedItem überhaupt nichts bringt, weil die Selektion nichts mit der Position des Rechtsklicks zu tun hat. Darum sollst du nicht SelectedItem, sondern das Ergebnis des HitTest-Aufrufs als Index benutzen. Es bleibt natürlich dir überlassen, ob du das ausprobierst. Zitieren
xk4fu Geschrieben 27. Februar 2007 Geschrieben 27. Februar 2007 ah jetzt habe ich es verstanden, wobei es auch nicht geht, wenn ich in einem anderen dialog links klicke und dann über einen button (in der toolbar) die entsprechende zeile auswerten will was ich außerdem festgestellt habe: wenn es im ersten dialog nicht geht (aufs erste mal) und ich in den anderen dialog wechsle, funktioniert es hier auch nicht beim ersten mal; selektiere ich nochmals eine zeile und führe die funktion aus, dann gehts... ich probiers mal, überall den hittest zu verwenden Zitieren
xk4fu Geschrieben 27. Februar 2007 Geschrieben 27. Februar 2007 habs rausgefunden: schuld ist NICHT das listview^^ und zwar: ich habe mehrere modale dialoge; da ja nur ein modaler dialog immer offen sein kann, prüfe ich mit dialog.visible = true, ob ein gewisser dialog offen ist oder nicht; in diesem fall wird ja der dialog schon geladen; jetzt habe ich im form load jedes dialoges mehrere abfragen; über ein property gebe ich dem dialog die im listview selektierte id; wenn ich den dialog nun aufrufe, wird logischerweise nichts mehr geladen, da ja form_load schon aufgerufen wurde; also schließe ich den dialog wieder (form_umload wird aufgerufen) und nun gehts wieder (beim zweiten mal), weil form_load wieder aufgerufen wird :upps Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.