Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

listview erkennt datensatz nicht

Empfohlene Antworten

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?

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

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

  • 2 Wochen später...

was anderes als

ListView1.SelectedItem.ListSubItems(1).Text

gibt es doch nicht, um einen markierten datensatz auszulesen, oder?

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... :(

hab doch meinen code oben gepostet
Und 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.

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Konto

Navigation

Suchen

Suchen

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.