tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
885
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Indian Indian ist offline Mitglied Gold
    Registriert seit
    May 2004
    Beiträge
    116
    Hi

    Entwicklungsumgebung: MFC, WinXP Pro, Visual Studion NET

    also ich hab eine List welche in der CListCtrl komplett angezeigt wird. Diese Liste besteht aus 2 verschieden Kategorie z.B. "Lebensmittel" und "Kosmetik".

    So ich möchte wenn ich einen Eintrag in einer selektierbaren ComboBox "Lebensmittel" selektiere, alle Items in der CListCtrl gelöscht werden und nur die Items von der Kategorie "Lebensmittel" wieder eingefügt und angezeigt werden.

    Beschreibung was passiert:
    Die Artikel werden gelöscht aber die Items werden bein ersten mal nicht angezeigt und CListCtrl ist leer. Selektiere ich beim 2.ten Mal "Kosmetik" dann werden die "Lebensmittel" angezeigt. Selektiere ich dann "Lebensmittel" dann werden die "Kosmetik" Items angezeigt.

    Das Problem
    Nur bei der ersten selektion wird beim ersten mal alles gelöscht wird. Im groben und ganzen heisst es das jedesmal wenn ich in der ComboBox einen Eintrag auswähle wird immer die getätigte letzte Auswahl in der CListCtrl aufgelistet bzw. angezeigt wird. Erst wenn ich 2mal "Lebensmittel" selektiere ich erst beim 2ten mal die Liste der "Lebensmittel" angezeigt bekomme. Immer erst beim zweiten versuch.

    Sozusagen ein Refresh problem. Gibts da irgendwas was ich noch aufrufen muss ? Habe die Anweisung in der Handler Funktion von der ComboBox geschrieben welche OnCbnSelchangeCombo1() heisst. Sie wird jedesmal aufgerufen wenn in der ComboBox ein Eintrag geändert bzw. aufgerufen wird.

    Helft mir

    Indian
     

  2. #2
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    Hm, ich würde sagen, dass du da einfach irgendwo ein Problem im Ablauf deiner Logik hast und das dein Refreshproblem da seine Ursache hat. Ich kann dir da nicht weiterhelfen, ohne das Projekt und die Abläufe zu kennen.
    Setzt du irgendwo die Selektionen von Liste oder Combo vom Code aus?
     
    Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."

  3. #3
    Indian Indian ist offline Mitglied Gold
    Registriert seit
    May 2004
    Beiträge
    116
    nein ich selektiere im Steuerelement von einer ComboBox welcher bei jeder Veränderung eine Funktion ausführt. Das komische ist ja das alle Items in der CListCtrl gelöscht werden aber nicht nach dem löschen wieder eingfügt werden sondern erst bei erneuter selektion die vorherige eingefügten Items angezeigt werden. Im Prinzip ist das nicht schwer jedoch ... kommt mir wie ein Bug vor.

    Der Code der Funktion sieht so aus:

    Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    void CListAllDlg::OnCbnSelchangeCombo1()
    {
        CDatabase db;
        CDBVariant value;
        char sql_statement [2048] = "";
        CString m_ArticelNr="",m_ListCategory="";
     
        CProducts m_pData(&db);
        strcpy(sql_statement,_T("SELECT * FROM products ORDER BY articel")); 
        m_pData.Open(CRecordset::forwardOnly,sql_statement);
     
        GetDlgItemText(IDC_LISTCATEGORY,m_ListCategory);
     
        m_list_all.DeleteAllItems(); //delete all items first
        
        while(!m_pData.IsEOF())      //show selected items
        {
            if (strcmp(m_ListCategory,m_pData.m_category) == 0)
            {
                m_ArticelNr="?Later?";
                m_list_all.AddItem(m_ArticelNr,m_pData.m_articel,m_pData.m_content,m_pData.m_price,m_pData.m_stock);
            }//end if
     
            m_pData.MoveNext(); 
        }//end while
        db.Close();
    }

    Ich glaube nicht das hier was falsch. Bei jede Veränderung vom Steuerelement (ComboBox) wird diese Funktion ausgeführt. Nach meiner Meinung müsste ja alles auf einmal ausgeführt und angezeigt werden und nicht erst beim 2maligen auswählen der selektion in der ComboBox. CListCtrl wird ja refresht wenn alle Items in der CListCtrl (siehe oben in der Funktion kurz vor der while schleife) gelöscht werden, jedoch warum wird die CListCtrl nicht refresht nachdem alle Items eingefügt wurden ?
    Geändert von Indian (02.07.04 um 14:37 Uhr)
     

  4. #4
    Indian Indian ist offline Mitglied Gold
    Registriert seit
    May 2004
    Beiträge
    116
    hab es sogar mit

    MyListView.RedrawItems( int nFirst, int nLast );

    versucht. Hat nicht geholfen. Ich versteh das nicht
     

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 28.03.09, 16:23
  2. Antworten: 7
    Letzter Beitrag: 07.12.08, 13:01
  3. Antworten: 4
    Letzter Beitrag: 22.08.05, 12:47
  4. Bild im Tab wird erst nach 5 Sek. angezeigt
    Von gerritka im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 3
    Letzter Beitrag: 12.02.05, 20:53
  5. cocoon: Seiten werden erst nach 'neuladen' aktualisiert
    Von krit85 im Forum XML Technologien
    Antworten: 1
    Letzter Beitrag: 17.12.04, 22:25