Kleine Problem mit nem Eingabefeld ??



  • Hallo Leute,

    Ich habe auf meinem Dialo ein Eingabefeld wo ich je nach stand des Programmes eine meldung ausgeben lasse.
    Wenn nun das ende des Eingabefeldes erreicht ist dann erscheint rechts ein Scrollbalken und ich kann nach unten scrollen und den text weiter vervolgen !

    Gibt es nun eine möglichkeit das das Programm automatisch immer bis zum ende Scrollt ??

    Danke Coolsero



  • Ja das geht du musst das allerdings an deine anwendung anpassen.

    // Zeiger auf Steuerelement hohlen
    CEdit* pEditField = (CEdit*)GetDlgItem(IDC_EDIT1);
    
    // Variable gibt anzahl der Zeilen an die gescrolet werden sollen
    int nLines = 1;
    
    // Edit Steuerelement um N Zeilen scrollen
    pEditField->LineScroll(nLines,0 /* Anzahl der Zeichen die Horizontal gescroolt werden sollen */ );
    

    Jo das wars dann wie du das dann Aufrufst ist deine Sache 🙂



  • man kann auf die Verwendung einer Variablen ganz verzichten wenn es immer an das Ende des Editfeldes gehen soll

    // Zeiger auf Steuerelement hohlen 
    CEdit* pEditField = (CEdit*)GetDlgItem(IDC_EDIT1); 
    
    // Edit Steuerelement ans Ende scrollen 
    pEditField->LineScroll( pEditFeld->GetLineCount() );
    

    gruss



  • Hm die Letzte zeile hatte ich überlesen



  • kann mir jemand sagen was ich falsch mach?

    void CServerDlg::OnButtonSenden() 
    {
    	UpdateData(true);	
    	m_sAusgabe += m_sEingabe + "\r\n";
    	// Zeiger auf Steuerelement hohlen 
    	CEdit* pEditField = (CEdit*)GetDlgItem(IDC_EDIT_AUSGABE); 
    	// Edit Steuerelement ans Ende scrollen 
    	pEditField->LineScroll(pEditField->GetLineCount());
    	UpdateData(false);
    }
    

    irgendwie scrollt der nicht 😃



  • Ist nur geraten, weil ich es gerade nicht ausprobieren kann, aber was passiert, wenn du das UpdateData(FALSE) früher machst?

    void CServerDlg::OnButtonSenden() 
    {
    	UpdateData(true);	
    	m_sAusgabe += m_sEingabe + "\r\n";
    	UpdateData(false); // <-------------- Hier schon!
    	// Zeiger auf Steuerelement hohlen 
    	CEdit* pEditField = (CEdit*)GetDlgItem(IDC_EDIT_AUSGABE); 
    	// Edit Steuerelement ans Ende scrollen 
    	pEditField->LineScroll(pEditField->GetLineCount());
    }
    


  • 🙄 Danke



  • mhhhh...... sobald ich in ein aderes feld etwas eingebe (IDC_EDIT_EINGABE) springt das Ausgabefeld (IDC_EDIT_AUSGABE) wieder nach oben und erst wenn ich wieder senden drücke wird Ausgabe nach untern gescrollt.... wie kommt das bei der eingabe das ausgabefeld beeinflusst wird???

    void CServerDlg::OnButtonSenden() 
    {
    	UpdateData(true);
    	if(m_sEingabe!="")
    	{
    		CTime TimeServer = CTime::GetCurrentTime();
    		CString sTimeServer=TimeServer.Format("(%H:%M:%S) ");
    		m_sAusgabe += sTimeServer + "Server: " + m_sEingabe + "\r\n";
    		m_Socket.Send(m_sEingabe,m_sEingabe.GetLength());
    	}
    	CEdit* pEditFieldEingabe = (CEdit*)GetDlgItem(IDC_EDIT_EINGABE);
    	m_sEingabe ="";
    	pEditFieldEingabe->SetFocus();
    	UpdateData(false);
    	// Autoscroll 
    	CEdit* pEditFieldAusgabe = (CEdit*)GetDlgItem(IDC_EDIT_AUSGABE); 
    	pEditFieldAusgabe->LineScroll(pEditFieldAusgabe->GetLineCount());
    
    }
    


  • 🙄 ich hasse UpdateData()

    problem hat sich erledigt


Anmelden zum Antworten