RE: Scrolling Edit Controls
- Posted by Brian Broker <bkb at cnw.com> Jan 17, 2002
- 431 views
Hi Chris, I don't know if there's an easier way to do this but I just whipped up a demo for you. Hope it helps. --------------------------------------- include win32lib.ew constant Win = create( Window,"Edit Demo",0,Default,Default,200,220,0 ), Mle1 = create( MleText, "", Win, 10, 10, 170, 120, 0 ), Button1 = create( PushButton,"Insert Text",Win,10,150,70,32,0 ), Button2 = create( PushButton,"Append Text",Win,100,150,70,32,0 ), MyTxt = "When in the Course of human Events " & "it becomes necessary for one People " & "to dissolve the Political Bands which " & "have connected them with another, and " & "to assume among the Powers of the " & "Earth, the separate and equal Station " & "to which the Laws of Nature and of " & "Nature's God entitle them, a decent " & "Respect to the Opinions of Mankind " & "requires that they should declare the " & "causes which impel them to the " & "Separation. " -- Insert text at current caret position -- global procedure insertText( integer id, sequence text ) atom txt_ptr, result -- convert to lpsz txt_ptr = acquire_mem(0, text ) -- replace selection; True means allow undo result = sendMessage( id, EM_REPLACESEL, True, txt_ptr ) -- Free the string release_mem( txt_ptr ) end procedure -- Insert text at end of edit control's existing text -- global procedure appendText( integer id, sequence text ) atom editlength, result editlength = length( getText( id ) ) result = sendMessage( id, EM_SETSEL, editlength, editlength ) insertText( id, text ) end procedure ----------------------------- procedure onOpen_Win() setText( Mle1, MyTxt ) end procedure onOpen[Win] = routine_id( "onOpen_Win" ) ----------------------------- procedure onClick_Button1() insertText( Mle1, "Inserted Text. " ) end procedure onClick[Button1] = routine_id( "onClick_Button1" ) ----------------------------- procedure onClick_Button2() appendText( Mle1, "Appended Text. " ) end procedure onClick[Button2] = routine_id( "onClick_Button2" ) ----------------------------- WinMain( Win, Normal ) -- Brian Chris wrote: > How do I make an MLE autoscroll, and update the caret position to the > end of the text? > > Right now I'm using setText to update the MLE, but that replaces all of > the text, setting the scoll tab, and caret position to 0. > > Is there a routine for appending text to an edit control? > How can I manually scroll the MLE, and update the caret position? > > I'm using win32lib. > > Chris > >