Page 1 of 1
oGet:setSel() not working?
Posted: Fri Feb 03, 2006 4:07 pm
by James Bott
I can't seem to get the setSel() method of the TGet class to work. The following code doesn't show any highlighted text.
Code: Select all
#include "fivewin.ch"
function main()
local oDlg, oGet, cString:= "1234567"
define dialog oDlg title "Test Get Select"
@ 2,2 get oGet var cString of oDlg update
activate dialog oDlg;
on init (oGet:setSel(2,5), oGet:refresh())
return nil
It doesn't work with FWH 2.6, May 2005 build/Harbour 43, nor with Clipper. Am I doing something wrong, or maybe setSel() does something else?
James
Re: oGet:setSel() not working?
Posted: Fri Feb 03, 2006 5:54 pm
by Enrico Maria Giordano
This is a working sample:
Code: Select all
#include "fivewin.ch"
function main()
local oDlg, oGet, cString:= "1234567"
define dialog oDlg title "Test Get Select"
@ 2,2 get oGet var cString of oDlg update
oDlg:bStart = { || oGet:SetSel(2,5) }
activate dialog oDlg;
// on init (oGet:setSel(2,5), oGet:refresh())
return nil
EMG
Posted: Fri Feb 03, 2006 8:11 pm
by James Bott
Enrico,
How odd. When I use the ON INIT it actually preprocesses to this:
{ |self| oGet:SetSel(2,5) }
If I do:
oDlg:bInit:= { |self| oGet:SetSel(2,5) }
It works just like you said also. But the same code doesn't work when assigned via the ON INIT clause. Strange.
I also tried doing it from a button action, but that wouldn't work either. I really need to do it via the GET's ON CHANGE clause. I have tried this:
@ 2,2 get oGet var cString of oDlg update on change oGet:setSel(2,5)
But that doesn't work either. The GET must be getting refreshed after bChange is called. I guess that is expected.
I am trying to build an autoComplete system, so I need to set the selected text after each keystroke. Any ideas?
James
Posted: Fri Feb 03, 2006 8:40 pm
by James Bott
Enrico,
Whoops. I didn't realize you were using oDlg:bStart NOT oDlg:bInit. bInit does not work, but bStart does. Now I get it.
I still need to figure out how to highlight text after each keystroke. I tried bKeydown also and that doesn't work either.
James
Posted: Fri Feb 03, 2006 9:58 pm
by Enrico Maria Giordano
Try this:
Code: Select all
#include "fivewin.ch"
#define EM_SETSEL 177
function main()
local oDlg, oGet, cString:= "1234567"
define dialog oDlg title "Test Get Select"
@ 2,2 get oGet var cString of oDlg update on change oGet:PostMsg( EM_SETSEL, 2, 5 )
activate dialog oDlg
return nil
EMG
Posted: Fri Feb 03, 2006 10:05 pm
by James Bott
Enrico,
Wow, that seems to work!
I had already tried:
SendMessage( oGet:hWnd, EM_SETSEL, 2, 5 )
but that didn't work.
Thanks a lot.
James
Posted: Fri Feb 03, 2006 10:12 pm
by Enrico Maria Giordano
You're welcome, James! By the way, can we have the honour to see your face?
EMG
Posted: Sat Feb 04, 2006 12:31 am
by tnhoe
James,
Sandeep's TDD class does it : Auto-complete from dbf
I use it since fw 1.95
U can download it from Patrick Mast's
www.fivewin.info
Posted: Sat Feb 04, 2006 4:11 am
by James Bott
Hoe,
Thanks. I'll take a look. I do have mine working also, so it will be interesting to see how he did it too.
James