TListView - Ermitteln, welche Zeile angeklickt wurde



  • Wie kann man ermitteln, welche Zeile eines TListView gerade angeklickt wurde.
    Ich will feststellen, welchen Zustand die Checkbox der Zeile hat.

    MfG JB



  • Schau doch mal in die Hilfe vom Builder 😃

    in OnClick hol' mit Selected das ausgewaehte TListItem
    dessen Eigenschaft Index isses! 🙂



  • // index des markierten eintrages ermitteln
    int index = ListView->Selected->Index;
    
    // prüfen ob im gewählten eintrag (markiert) die checkbox aktiviert wurde
    if (ListView->Selected->Checked)
    {
    }
    
    // alle elemente durchgehen
    for (int i = 0; i < ListView->Items->Count; i++)
    {
      // nur gewählte elemente bearbeiten
      if (ListView->Items->Item[i]->Checked)
      { 
        // irgendwas tun
      }
    }
    


  • Vielen Dank, für die Antwort. So hatte ich mir das eigentlich auch vorgestellt.

    Meine Tabelle hat mehrere Zeilen.

    Diese Funktion löst aber eine Exeption aus:
    void __fastcall TFormX::ListView1Click(TObject *Sender)
    {
    int i = ListView1->Selected->Index;
    }

    MfG JB



  • Beim Clicken in die Checkbox hat ListView1->Selected immer noch den Wert NULL.

    Wie fragt man dann die Checkboxen ab?
    Muß man da etwa alle Zeilen der Liste einzeln abfragen?
    Das kann doch nicht whr sein?!

    MfG JB



  • Selected ist natürlich nur gesetzt, wenn die Zeile markiert ist!

    // abbruch wenn nichts markiert wurde
    if (!ListView1->SelCount) return;
    


  • ... ja, ja.

    Und so wird's wirklich gemacht:

    void __fastcall TFormX::ListView1MouseUp(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
      TListItem *Item = ListView1->GetItemAt(X, Y);
      THitTests HitTests = ListView1->GetHitTestInfoAt(X, Y);
      if (HitTests.Contains(htOnStateIcon) || HitTests.Contains(htOnStateIcon))
      { bMyChecked = ListView1->Items->Item[Item->Index]->Checked;
      }
    }
    

    MfG JB 😉

    Edit:
    Bei mehr als drei Zeilen bitte die Code-Tags benutzen. Danke!

    [ Dieser Beitrag wurde am 24.02.2003 um 18:51 Uhr von Jansen editiert. ]


Anmelden zum Antworten