Ungeklärte Frage



  • Die Frage wahr schon einmal ist aber ungeklärt da ich aber vor dem Problem jetzt steh und inzwischen weis es schon jemand frage ich noch mal:
    http://www.c-plusplus.net/forumstart.htm





  • mit SetCurSel()



  • SetCurSel() ist kein Element von CListCtrl



  • Also ich versuche das in OnInitialUpdate() so zu machen m_Grid.SetItemState(0,LVIS_SELECTED,LVIS_SELECTED);
    mein wissen nach sollte es gehen tut es aber nicht, hat da wirklich niemand eine Lösung



  • Steht denn zu dem Zeitpunkt überhaupt schon was drin?



  • Also es ist so ich habe eine Methode wo ich das List Control deklariere und mit Daten fühle etwa so:

    //Columns in CListCtrl Deklarieren
    m_Grid.InsertColumn(0, "BenutzerID", LVCFMT_LEFT, 120);
    m_Grid.InsertColumn(1, "Loginname", LVCFMT_CENTER, 80);
    m_Grid.InsertColumn(2, "Vorname", LVCFMT_LEFT, 120);
    m_Grid.InsertColumn(3, "Nachname", LVCFMT_LEFT, 100);

    m_Grid.SetExtendedStyle(m_Grid.GetExtendedStyle() | LVS_EX_FULLROWSELECT);

    //CListCtrl mit Daten fühlen
    while(!GetDocument()->m_pRs->EndOfFile){
    int nItem = m_Grid.InsertItem(1000, strBenutzerID);
    m_Grid.SetItemText(nItem, 1, m_strLoginname);
    m_Grid.SetItemText(nItem, 2, m_strFirstName);
    m_Grid.SetItemText(nItem, 3, m_strLastName);
    m_Grid.SetItemText(nItem, 4, m_strStandort);
    m_Grid.SetItemText(nItem, 5, m_strPhone);
    GetDocument()->m_pRs->MoveNext();
    }
    ModifyStyle(NULL, LVS_REPORT, 0);

    m_Grid.SetItemState(0,LVIS_SELECTED,LVIS_SELECTED);

    und dann rufe ich die Methode in OnInitialUpdate wenn ich das ganze durch debug laufen lasse kommt sowas raus
    CListCtrl::SetItemState zurückgegeben 1



  • Wenn SetItemState nicht 0 zurückgibt, dann hat es geklappt.

    Hat das List Control den Style LVS_SHOWSELALWAYS? Wenn nicht, sieht man die Auswahl nicht, wenn das Control nicht den Fokus hat.



  • Eine blöde Frage die muß ich aber stellen sonst komme ich nicht weiter:
    Wie prüfe den Style LVS_SHOWSELALWAYS den Style LVS_SHOWSELALWAYS und wie lege ich es fest ??
    Vielen Dank im Voraus



  • Also wenn ich so schreinbe
    m_Grid.SetExtendedStyle(m_Grid.GetExtendedStyle() | LVS_SHOWSELALWAYS);
    tut er zwar schöne Sachen aber nicht das was ich will ;-((



  • Das ist kein Extended Style, sonst würde er mit LVS_EX_ anfangen.

    Verwendest Du den Ressourceneditor? Dann gibt es auf dem Styles-Tab unten rechts das Kontrollkästchen "Show selection always"



  • Vielen Dank



  • Noch zwei Probleme:
    1 in meinem Programm habe ich auch Möglichkeit das der Benutzer durch ein Toolbar zum ersten letzten usw. Datensatz in Control List geht und der als aktiv markiert wird. Es funk ( fast ) nur die Spalte die ich beim Programmstart oder durch anklicken aktiv mache bleibt auch angezeigt also blau 😢 so mache ich es:
    void lalaView::OnBenutzerFirst()
    {
    GetDocument()->MoveFirst();
    // List Control Spalte aktiviren
    m_Grid.SetItemState(0,LVIS_SELECTED,LVIS_SELECTED);
    UpdateData(FALSE);
    }
    also wenn ich mein progi starte dann welle ich irgend eine spalte dann will durch Toolbar zu erste wider zurück und das Resultat es werden beide Spalten angezeigt also erste und die die ich angeklickt habe
    sollte nur erste ;-((
    2 ich habe auch eine Funktion Löschen die löscht den Datensatz in DB funk auch super plus nur den Datensatz wird weiter in List Control angezeigt also in DB ist gelöscht in List Control sichtbar 😢
    habe es so versucht zu lösen
    m_Grid.UpdateData(FALSE);


Anmelden zum Antworten