Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Selectionen in CListCtrl selbst setzen...

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.01.2006, 16:20 Uhr
~Lister
Gast


Hallo,

ich benutze eine CListCtrl...


...ich muß nun vom Programm aus, bestimmte Item in der ListCtrl selektieren (...z.b. der User klickt auf einen Button und dann werden bestimmte oder Alle Items in der ListCtrl selektiert)....

Nur leider finde ich irgendwie keine derartige Methode...Wie geht denn das??...Ich hab nur SetSelectionMark() gefunden, aber das tut bei mir irgendwie nix und ich weiß auch nicht, was das tun soll...
Vielen Dank für jede Hilfe...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.01.2006, 18:06 Uhr
xXx
Devil


hmm SetSelectionMark(Zeile); ist aber durchaus richtig... musst dann nur EnsureVisible(Zeile, FALSE); aufrufen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.01.2006, 22:43 Uhr
~Lister
Gast


hallo,

danke für deine Antwort...aber es klappt einfach nicht...ich weiß auch nicht....es tut sich gar nix....Also ich hab ne ganz einfache HelloWorld Anwendung gemacht (Dialogbasiert)

Wenn man den OK-Button klickt, werden ein paar Items zu CListCtrl hinzugefügt:

void CListExampleDlg::OnOK()
{
CString strText;
//int nColumnCount = pmyListCtrl.GetHeaderCtrl()->GetItemCount();

// Insert 10 items in the list view control.
for (int i=0;i < 10;i++)
{
strText.Format(TEXT("item %d"), i);

// Insert the item, select every other item.
pmyListCtrl.InsertItem(
LVIF_TEXT|LVIF_STATE, i, strText,
(i%2)==0 ? LVIS_SELECTED : 0, LVIS_SELECTED,
0, 0);

/* // Initialize the text of the subitems.
for (int j=1;j < nColumnCount;j++)
{
strText.Format(TEXT("sub-item %d %d"), i, j);
pmyListCtrl.SetItemText(i, j, strText);
}
*/
}
}
**************************************
Wenn man einen anderen Button klickt, so das 3.Item selektiert werden....

****************************************

void CListExampleDlg::OnButton1()
{
this->pmyListCtrl.EnsureVisible(3, FALSE);
this->pmyListCtrl.SetSelectionMark(3);
}


==> ich hab das EnsureVisible in alles Varianten ausprobiert..mal davor, mal dahinter, mal mit FALSE, mal mit TRUE...keine Änderung.... Ich hab auch im Internet Beispiele für die Methode
SetItemState( ) gefunden und ausprobiert....keine chance....

....ich weiß einfach nicht, woran das liegt...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.01.2006, 15:24 Uhr
xXx
Devil



C++:
void CListExampleDlg::OnOK()
{
    CString strText;
    // int nColumnCount = pmyListCtrl->GetItemCount();

    // Insert 10 items in the list view control.
    for (int i=0;i < 10;i++)
    {
        strText.Format(TEXT("item %d"), i);

        // Insert the item, select every other item.
       pmyListCtrl.InsertItem(LVIF_TEXT|LVIF_STATE, i, strText, (i%2)==0 ? LVIS_SELECTED : 0, LVIS_SELECTED, 0, 0);

        // Initialize the text of the subitems.
        for (int j=1;j < nColumnCount;j++)
        {
            strText.Format(TEXT("sub-item %d %d"), i, j);
            pmyListCtrl.SetItemText(i, j, strText);
        }

    }
}

void CListExampleDlg::OnButton1()
{
    pmyListCtrl.SetItemState(3, LVIS_SELECTED, LVIS_SELECTED);
    pmyListCtrl.SetFocus(); //da Selektierung sonst nicht sichtbar ist
    pmyListCtrl.EnsureVisible(3, TRUE);
}



Soo... hab das InsertItem usw mal net verändert... aber so sollte es gehen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.01.2006, 21:53 Uhr
~Lister
Gast


hi,

danke für die mühe....jetzt tut sich was....eines ist aber noch irgendwie komisch:

Wenn nichts (durch den user) selektiert wird und man betätigt diesen Button zum selektieren, dann werden mehrere Items auf einmal selektiert....das hängt irgendwie mit der initialisierung zusammen....

wenn man z.b. bei Erstellung der Items die Zeile

pmyListCtrl.InsertItem(LVIF_TEXT|LVIF_STATE, i, strText, (i%2)==0 ? LVIS_SELECTED : 0, LVIS_SELECTED, 0, 0);


durch

pmyListCtrl.InsertItem(LVIF_TEXT|LVIF_STATE, i, strText, LVIS_SELECTED , LVIS_SELECTED, 0, 0);


dann werden beim Druck auf den Button ALLE Items selektiert.....das ganze klappt nur, wenn der User vorher ein anderes item bereits selektiert hat......weißt du, warum??....p.s.: wenn man die ListBox für EinzelSelektion einstellt, hat man das Problem nicht...aber komisch finde ich es trotzdem....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
25.01.2006, 11:13 Uhr
mmc20
puss in boots


hi,
schau dir die zeile wo du die item einfügst doch mal genau an... was soll der code da machen ?

pmyListCtrl.InsertItem(LVIF_TEXT|LVIF_STATE, i, strText, (i%2)==0 ? LVIS_SELECTED : 0, LVIS_SELECTED, 0, 0);

wichtig ist diese stelle : "(i%2)==0 ? LVIS_SELECTED : 0"
was bedeutet: ist i gerade -> eintrag selektieren -> andernfalls nicht
wenn i jetzt die position des eintrags in der liste ist dann wäre jedes zweite selektiert (wozu das gut sein soll verschliesst sich mir hier)
wenn du nur ein paar einträge ohne selektion machen willst, nimm einfach "InsertItem( i, strText);" oder
"InsertItem(LVIF_TEXT|LVIF_STATE, i, strText, 0, LVIS_SELECTED, 0, 0);" dann ist keines selektiert.

Dieser Post wurde am 25.01.2006 um 11:14 Uhr von mmc20 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: