Ordner in ListBox?



  • Moin,

    ich suche nach einer Möglichkeit die OUnterordner eines Ordners in einer ListBox aufzulisten. Momentan sieht das bei mir noch so aus:

    m_list.Dir ( DDL_DIRECTORY , "c:\\Windows\\*.");
    UpdateData(FALSE);
    

    Blöderweise sind alle Ordner in eckigen Klammern und ".." ist auch in der Liste vorhanden...

    Wäre Nett, wenn mir mal jemand eine bessere Alternative nennen könnte.

    Gruß, Ellek. 😉



  • Jep,

    verwende CFileFind und füge die gefundenen Dateien/Ordner mit CListBox::AddString der Liste hinzu.

    Grüße Rapha



  • Danke, werde ich nachher mal ausprobieren. 🙂



  • Hallo,

    habe Code. 🙂
    CListbox-Membervariable m_liste (Control) und Suchverzeichnis strpath.

    CWnd::UpdateData(TRUE);
        CString strpath = "c:\\huhu";
        CFileFind finder;
        BOOL bWorking = finder.FindFile(strpath + "\\*.*");
    
    	while (bWorking)   {
    	bWorking= finder.FindNextFile();
    	if (finder.MatchesMask(FILE_ATTRIBUTE_DIRECTORY) == TRUE\
    		&&finder.GetFileName()!=".."&&finder.GetFileName()!=".")
    	m_liste.AddString(finder.GetFileName());
    	}
    
        CWnd::UpdateData(FALSE);
    

    salut



  • Danke. 🙂



  • hui

    ich hab ne listcontrol box aber als klasse von CXListCtrl welche eine erweiterung darstellt um farben und und und noch darzustellen.

    jetzt habe ich 2 spalten

    eine mit tests und eine andere mit der anzahl

    jetzt siehts z.b. so aus

    Test1 1
    Test2 1
    Test3 4
    Test4 2

    jetzt will ich es so machen dass ich wenn ich Test3 anklicke in der edit box dann die zahl 4 erscheint und ich per Update Button aktualisiere.

    ich habe folgendes gemacht

    void ClolDlg::OnBnClickedListTestsuite()
    {
    
    	int index;
    	index = m_testsuite.GetCurSel();
    
    	if ( index != -1 )
    	{
    		//SetDlgItemText ( IDC_EDIT_Add_Times, "3");  mal als test ne 3 ausgeben
    
    	}
    
    	// TODO: Add your control notification handler code here
    
    }
    
    // in der messagemap steht dann noch
    
    ON_BN_CLICKED(IDC_LIST_Testsuite, OnBnClickedListTestsuite)
    

    leider geht das nicht. ich klicke ne ROW an und es passiert nichts. wie soll ichs machen???

    PS. natuerlich hab ich bei SetDlg... kein kommentar nur hier



  • Hmmm...

    also wenn ich das so auffase, dass du eine Zeile markierst, dann einen Button drueckst, welcher eine Editbox mit dem Inhalt der Spalte fuellen soll.

    Wenn ich mal der Editbox eine Membervariable gebe und ich ignoriere dass da eine Spalte ausgelesen werden soll, haette ich folgende Anregung parat:

    void CLinkListDlg::OnButton4() 
    {
        int i;
        i=m_liste.GetCurSel();
    	CWnd::UpdateData(FALSE);
        CString text;
        m_liste.GetText(i,text);
        m_edit=text;		
    }
    


  • das geht leider nicht

    denn ich clicke auf eine zeile

    die ist dann markiert

    wenn ich jetzt in die editbox clicke dann erlischt die markierung

    denn normalerweise macht man ja um was zu ändern

    1. man wählt aus was man ändern will
    2. man gibt neuen wert an ( bei mir in einer editbox )
    3. man drüclt update button

    ich nutze die gleiche editbox die ich auch verwende um in die liste zu schreiben

    da ich eine listbox habe mit allen tests und eine die die tests enthält die ich machen will. da habe ich ja auch schon ein ADD button und eine editbox ( fals ich gleich 50x etwas testen will )

    also prob ist

    die markierung verschwindet, deshalb wollte ich eine membervariable haben die beim klicken aktualisiert wird

    hmmm



  • Dysfunktion schrieb:

    Hallo,

    habe Code. 🙂
    CListbox-Membervariable m_liste (Control) und Suchverzeichnis strpath.

    CWnd::UpdateData(TRUE);
        CString strpath = "c:\\huhu";
        CFileFind finder;
        BOOL bWorking = finder.FindFile(strpath + "\\*.*");
    
    	while (bWorking)   {
    	bWorking= finder.FindNextFile();
    	if (finder.MatchesMask(FILE_ATTRIBUTE_DIRECTORY) == TRUE\
    		&&finder.GetFileName()!=".."&&finder.GetFileName()!=".")
    	m_liste.AddString(finder.GetFileName());
    	}
      
        CWnd::UpdateData(FALSE);
    

    salut

    Wie würde das für FTP aussehen? Ich möchte die Dateien eines Ordners meines FTP-Servers auflisten...

    CFtpFileFind finder(m_pFtpConnection);
    
    		BOOL bWorking = finder.FindFile(_T("*"));
    
    		while (bWorking)
    		{
    			bWorking = finder.FindNextFile();
    			//m_ctlDateien.AddString(finder.GetFileTitle());
    			if (finder.MatchesMask(FILE_ATTRIBUTE_NORMAL) == TRUE\
    				&&finder.GetFileName()!=".."&&finder.GetFileName()!=".")
    			m_ctlDateien.AddString(finder.GetFileName());
    		}
    

    EDIT:

    bin schon selbst drauf gekommen. 😉


Anmelden zum Antworten