Am Ende eines Editcontrols bleiben



  • Hi zusammen ich hab ein Edit control in das immer mehr Text rein kommt nach und nach. Jetzt ist es aber so, dass bei jedem UpdateData mein Cursor des Editcontrols wieder an den Anfang des Editcontrols springt, ich will aber immer das Ende sehen. Ich les also von nem Control ein und auf Button-click fügt das Prog den Text einem großen Editcontrol hinzu. Der Text soll also quasi dann nach oben aus dem Edit raus laufen. Ich hoffe es ist verständlich, was ich hier sagen möchte

    vielen Dank schon im Voraus für eure Hilfen.



  • Versuchs mal mit CEdit::SetSel. 🙂



  • öhm und wie sag ich der Selection, dass ich nichts selecten will aber der Cursor ganz am schluß stehen bleiben soll? 😕

    Ich will ja eigentlich nur den Cursor ganz ans ende markiert soll eigentlich nichts sein.



  • SetSel(strTextImEdit.GetLength(), strTextImEdit.GetLength());
    

    😕



  • Hm leider geht es nicht, er springt nicht ans Ende.
    Ich hab es jetzt so:

    m_EdtResult.SetSel(m_sResult.GetLength(), m_sResult.GetLength());
    


  • 😮 hab grad mal was versucht was ich eigentlich gar nicht will, aber:

    MSDN schrieb:

    if nStartChar is 0 and nEndChar is –1, all the text in the edit control is selected

    wenn ich aber mache

    m_EdtResult.SetSel(0, -1, true);
    

    dann passiert dennoch nichts! 😮



  • Zeig den Code mal im Zusammenhang bitte. 🙂



  • Wieso hast du ein Edit.
    Nimm doch eine ListBox.



  • m_sResult = m_pSet->m_strFilter;
    	m_pSet->Requery();
    	GetDlgItem(IDC_RDO_SEARCH_ADD)->ShowWindow(true);
    	GetDlgItem(IDC_RDO_SEARCH_NEW)->ShowWindow(true);
    	m_nRdoSearchNew = 1;
    	m_EdtResult.SetSel(0, -1, true);
    	UpdateData(false);
    


  • Ich glaube nur, das löst das Problem mit dem "Ans Ende setzen" nicht, da er weiterhin UpdateData machen muss.

    Ah, da ist das Problem:

    m_sResult = m_pSet->m_strFilter;
        m_pSet->Requery();
        GetDlgItem(IDC_RDO_SEARCH_ADD)->ShowWindow(true);
        GetDlgItem(IDC_RDO_SEARCH_NEW)->ShowWindow(true);
        m_nRdoSearchNew = 1;
        m_EdtResult.SetSel(0, -1, true); // Selection wird gesetzt
        UpdateData(false); // Text wird geupdatet, Selection wird gekillt
    

    Tausch dir beiden letzten Zeilen mal. 🙂



  • aber auch wenn ich

    m_sResult = m_pSet->m_strFilter;
    	m_pSet->Requery();
    	GetDlgItem(IDC_RDO_SEARCH_ADD)->ShowWindow(true);
    	GetDlgItem(IDC_RDO_SEARCH_NEW)->ShowWindow(true);
    	m_nRdoSearchNew = 1;
    	UpdateData(false);
    	m_EdtResult.SetSel(0, -1, true);
    

    mache geht es nicht da sollte von dir angesprochenes Problem ja eigentlich nicht sein oder???



  • Nein, das sollte dann nicht sein, aber schau dir bitte an, was der dritte Parameter macht. 🙄

    void SetSel( int nStartChar, int nEndChar, BOOL bNoScroll = FALSE );

    Parameters

    bNoScroll
    Indicates whether the caret should be scrolled into view. If FALSE, the caret is scrolled into view. If TRUE, the caret is not scrolled into view.

    nStartChar
    Specifies the starting position. If nStartChar is 0 and nEndChar is –1, all the text in the edit control is selected. If nStartChar is –1, any current selection is removed.

    nEndChar
    Specifies the ending position.



  • ja, OK so konnte es nicht gehen, da ich zu viel gedacht und zu wenig gelesen hab. Aber es geht auch auf false nicht und ganz egal was der dritte Parameter macht wenn ich nur [ID] = '5832' drin stehen hab, dann sollte es egal sein ob Scroll oder nciht, dann hat es auf jeden Fall Platz! Sprich er sollte es so oder so markieren wenn ich (0,-1,egal) mache.

    Oder net? 😕



  • Das Control muss auch noch den Focus haben.

    UpdateData(FALSE);
    	m_edtPwd.SetSel(5, 5);
    	m_edtPwd.SetFocus();
    

    So hab ich das bei mir eben hinbekommen. 🙂
    Es stehen 5 Zeichen drin und der Cursor blinkt hinter dem letzten. 😃



  • könnt dich wiedermal knutschen!

    So geht es!

    m_EdtResult.SetSel(m_sResult.GetLength(), m_sResult.GetLength());
    	m_EdtResult.SetFocus();
    

    Ich hab schon gedacht ich muss aufgeben und mit der Unschönheit leben aber du hast es wiedermal geschafft *dickerKnutschaufBacke*



  • Wäre schon wen du mir noch sagst warum ein Edit-Control und nicht eine ListBox



  • Hm weil ich immer Edit Controls nehme 😃
    kA! Macht der Gewohnheit.
    Weil ich noch nichts mit Listboxes gemacht hab. 😉


Log in to reply