TListView aktuellen Datensatz Selectieren



  • Hi

    ich möchte in einem ListView den aktuellen Datensatz selectieren (genauso wie wenn man mit der Maus einfach einen Datensatz anklickt). Hab schon in der Borland Hilfe danach gesucht aber nix gefunden.

    ich hoffe ihr könnt mir helfen, danke schonmal im vorraus für die Mühe

    MFG
    Hardie



  • Hallo

    Da ich nicht weiß was genau bei dir aktueller Datensatz bedeutet : allgemein läßt sich ein TListItem über desen Eigenschaft Selected auswählen.

    bis bald
    akari



  • ok hab mich wahrscheinlich n bissle umständlich ausgedrückt.

    ich möchte mit:

    TListItem *Item = ListView1->Selected;
    Item = ListView1->GetNextItem(Item, sdAll, TItemStates() << isActivating );
    

    Da dies aber nur geht wenn ein Datensatz in dem ListView ausgewählt ist gibt es ne Zugriffsverletztung wenn keiner ausgewählt ist. und um das abzufangen möchte ich den ersten und später den durch Getnextitem ausgewählten Datensatz markieren

    ich hoffe das mein Problem nur verständlicher erklärt ist.

    MFG Hardie



  • Hallo

    Da dies aber nur geht wenn ein Datensatz in dem ListView ausgewählt ist gibt es ne Zugriffsverletztung wenn keiner ausgewählt ist.

    Ja, wenn kein Item ausgewählt ist, bekommst du vonListView eben NULL zurück, und alle folgenden Zugriffe dadrauf sind ungültig.

    Du must also erstmal eine Fallunterscheidung einbauen

    TListItem *Item = ListView1->Selected;
    
    // Wenn ein Item ausgewählt ist, desen Nachfolger bestimmen
    if (Item)
      Item = ListView1->GetNextItem(Item, sdAll, TItemStates() << isActivating);
    
    // Wenn kein Item ausgewält ist, aber Items vorhanden sind, das erste Item auswählen
    else
      if (ListView1->Items->Count > 0) Item = ListView1->Items->Item[0];
    
    // Wenn schlußendlich ein Item da ist, diesen selektieren
    if (Item) Item->Selected = true:
    

    bis bald
    akari



  • danke für die antwort. ich habe es getestet und bin auf einen weiteren fehler gestoßen.

    Wenn ich ein Datensatz in dem ListView selectiere dann funktioniert dein code wunderbar, aber wenn ich vorher keinen Datensatz anklicke dann kommt wieder eine zugriffsverletzung bei:

    Item = ListView1->Items->Item[0];
    

Anmelden zum Antworten