Optionsfelder wollen nciht so...



  • Hiho,

    ich habe mächtige Probleme mit vier Optionsfeldern die ich auf einem Dlg habe.

    Ich habe ein Gruppenfeld drumherum und nur beim ersten ist in den Eigenscháften das Gruppenfeld aktiviert. und die int membervariable hab ich auf dem Ersten.

    Jetzt hab ich zu jedem eine Fkt erstellt, da beim Aufruf ein anderer Eintrag in ein Listfeld gemacht wird und der alte aber zuerst gespeichert wird.

    void CHinzuDlg::OnOp1() 
    {
    	speicherntxt();
    	pfad.Empty();
    	pfad= "..\\txt1.txt"; 
    	oeffnen(); // weiter zu funktion oeffnen()
    	UpdateData(false);
    }
    
    // die anderen fkt zu den optionsfeldern sehen ähnlich aus 
    // nur ein anderer pfad
    

    Dazu habe ich noch je einen Button hinzufügen und einen zum entfernen aus dem Listenfeld.
    hinzugefügt wird aus einem Editfeld. Der inhalt des Editfeldes wird per 'durchsuchen' eingefügt ( CFileDialog-> öffnen).

    // hinzufügen
    void CHinzuDlg::Onplus() 
    {
    	CString cTemp;
    	CListBox* pBox = (CListBox*) GetDlgItem(IDC_List); 
    
    	for (int i = 0; i < m_strpfad.GetLength(); i ++) 
    	{ 
             if (m_strpfad.GetAt(i) != ' ') 
            cTemp += m_strpfad.GetAt(i); 
    	}
    
    	DWORD l = m_strpfad.GetLength();
    	if(l>0)
    	{
    	pBox->InsertString(-1, m_strpfad);
    	}
    	speicherntxt();
    
    	m_strpfad = ""; 
    
    	UpdateData(false);
    }
    
    // entfernen
    
    void CHinzuDlg::OnMinus() 
    {
    	CListBox* pBox = (CListBox*) GetDlgItem(IDC_List); 
    
    	// markierten string aus listbox entfernen 
    	for (int i=0;i < m_strlisten.GetCount();i++) 
        { 
            if (m_strlisten.GetSel( i ) > 0) 
            { 
                m_strlisten.DeleteString(i); 
            } 
        } 
    
    }
    

    und zum schluss noch einen beenden button, wo das Dlg geschlossen wird und der inhalt zuvor erst noch gespeichert wird.

    void CHinzuDlg::OnEnde() 
    {
    	speicherntxt();
    	// beenden des Dialogfensters
    	OnOK();
    }
    

    Und in der OnitDialog soll bereits ein Eintrag in das Listenfeld eingetragen werden.

    pfad= "txt1.txt";
    	oeffnen();
    	UpdateData(true);
    	return TRUE;
    

    öffnen und speichern, sind beides funktionen die wie der name schon sagt, zum öffnen und schreiben in das Listfeld und zum lesen und speichern des Listfeldes
    genutzt werden.

    WEnn gewünscht kann ich die dann auch noch posten.

    Mein Problem ist das keiner der Optionsfelder richtig funktioniert.
    Es wird immer nur der erste eintrag gespeichert. es sollte aber alles gespeichert werden. Zu beginn das schreiben in das Listfeld führt er auch nciht aus.
    und aktiviert wir dauch keiner der felder beim drücken.

    Ich hoffe ihr könnt mir helfen, weil das echt ein blödes prob ist , bei dem ich selber keien lösung finde.

    kann der Code dann ( wenn er nciht mehr gebraucht wird) vielleicht einer löschen??

    Danke



  • schnecke schrieb:

    Es wird immer nur der erste eintrag gespeichert. es sollte aber alles gespeichert werden. Zu beginn das schreiben in das Listfeld führt er auch nciht aus.

    Das liegt aber nicht an deinen Radio-Buttons, das liegt dann an deinem Code wie du den Inhalt speicherst und wie du es öffnest um dann alles in die Listbox einzutragen.

    Poste mal den Code dieser beiden Funktionen...

    Gruß
    :: NoName ::



  • // öffnen
    
    void CHinzuDlg::oeffnen()
    {
    	// Klasse der ListBox
    	CListBox* pBox = (CListBox*) GetDlgItem(IDC_List); 
    
    	// Listenfeld vor neuem eintrag löschen
    	m_strlisten.ResetContent();
    
    	// öffnen file und füllen der Listbox
    	CString in = _T("");
    ;
    	CStdioFile pfade;
    
    	if (pfade.Open(pfad, CFile::modeRead))
    	{
    		while(pfade.ReadString(in))
            { 
    			in.TrimRight(); 
    
    			 if (in != _T("")) 
    
    			//	 {pBox->InsertString(-1, in +_T("\r\n"));}
    
    			 { m_strlisten.InsertString(0, in);}
    
    		}
    
    	}
    	pfade.Close();
    }
    
    // speichern
    
    void CHinzuDlg::speicherntxt()
    {
    
    	CListBox* pBox = (CListBox*) GetDlgItem(IDC_List); 
    
        CString in; 
        CStdioFile pfade; 
    
        if (pfade.Open(pfad, CFile::modeNoTruncate|CFile::modeReadWrite)) 
        { 
             for(int i = 0; i < pBox->GetCount(); i++) 
             { 
                   CString strZeilen; 
                   pBox->GetText(i, strZeilen);     
    
    			   while(strZeilen.Right(1) == _T(' '))
    			   {
    			   strZeilen.TrimRight();
    			   }
    			   UpdateData(true); 
                   pfade.WriteString(strZeilen); 
    
             } 
    
        } 
    }
    


  • Hmm, also an deinen beiden Funktionen scheint es doch nicht zu liegen.
    So viel ist sicher.
    Du sagst das keiner deiner Radio-Buttons aktiviert wird, hast du vielleicht bei den Styles der Radio-Buttons des Haken bei 'Auto' weggenommen ?

    Gruß
    :: NoName ::



  • nein hab ich nicht, bei allen vier ist bei Auto ein haken
    (du meinst doch in den Eigenschaften des feldes)



  • hallo,

    jetzt hab ich wieder ein Problem und zwar mit dem obrigen bereits geposteten code.
    und zwar wird so wie es sein soll in das Listenfeld bei onplus geschrieben. WEnn ich jetzt aber eines auswähle und onmiuns betätige wird es, auch so wie es sein soll, herausgenommen.

    Wenn ich jetzt ein anderes optionsfeld betätige, wird ein anderer inhalt in die Listbox geschrieben.

    Jetzt kommt es:
    wenn ich jetzt wieder zurück wechsele auf das Optionsfeld 1 steht der komplette inhalt drin, und ebenfalls die Strings die ich vorhin herausgelöscht habe.

    Ich dachte es würde vielleicht am speichern liegen, aber ihr sagt ja das alles ok ist im code. Aber irgendwo muss es ja nicht den richtigen inhalt speichern speichern.
    Aber komisch ist ja, das es beim hinzufügen funktioniert und beim entfernen nicht.

    Kann mal einer bitte drüber schauen und mir einen tipp geben an was es liegen könnte.


Anmelden zum Antworten