How to activate the Windows Virtual Keyboard from eXpress
Re: How to activate the Windows Virtual Keyboard from eXpres
Thanks Roger
Look at the changes that I made to the Touch Keyboard
Gracais for your help.
What you can do is put in blue the position that the Cursor has in the Get
The rest works for me. Great.
Look at the changes that I made to the Touch Keyboard
Gracais for your help.
What you can do is put in blue the position that the Cursor has in the Get
The rest works for me. Great.
- Attachments
-
- Touch Keyboard.jpg (348.18 KiB) Viewed 13537 times
Nolberto Paulino
Regards
Regards
Re: How to activate the Windows Virtual Keyboard from eXpres
I will have to figure out how to do this.What you can do is put in blue the position that the Cursor has in the Get
The eXpress train is coming - and it has more cars.
Re: How to activate the Windows Virtual Keyboard from eXpres
Yes, and use the cursors up and down
I could not do
I could not do
rdonnay wrote:I will have to figure out how to do this.What you can do is put in blue the position that the Cursor has in the Get
Nolberto Paulino
Regards
Regards
Re: How to activate the Windows Virtual Keyboard from eXpres
digitsoft wrote:Yes, and use the cursors up and down
I could not do
rdonnay wrote:I will have to figure out how to do this.What you can do is put in blue the position that the Cursor has in the Get
- Attachments
-
- Sin título.jpg (34.45 KiB) Viewed 13534 times
Nolberto Paulino
Regards
Regards
Re: How to activate the Windows Virtual Keyboard from eXpres
Here is a better way to create the keyboard, using an array table to define all the buttons.
Code: Select all
nRow := 0
// Row 1
AAdd( aButtons, { nRow, 0, '!', '1',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '@','2',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '#','3',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '$','4',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '%','5',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '^','6',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '&&','7',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '*','8',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '(','9',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, ')','0',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '_','-',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '+','=',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'Del','Del',xbeK_BS, nKeySize*2, nKeySize } )
// Row 2
nRow += nKeySize + nSpace
AAdd( aButtons, { nRow, nKeySize/2, 'Q','q',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'W','w',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'E','e',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'R','r',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'T','t',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'Y','y',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'U','u',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'I','i',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'O','o',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'P','p',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '{','[',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '}',']',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '|','\',, nKeySize, nKeySize } )
// Row 3
nRow += nKeySize + nSpace
AAdd( aButtons, { nRow, nKeySize, 'A','a',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'S','s',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'D','d',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'F','f',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'G','g',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'H','h',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'J','j',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'K','k',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'L','l',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, ':',';;',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '"',"'",, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '@',"@",, nKeySize, nKeySize } )
// Row 4
nRow += nKeySize + nSpace
AAdd( aButtons, { nRow, nKeySize*1.5, 'Z','z',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'X','x',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'C','c',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'V','v',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'B','b',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'N','n',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'M','m',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '<',',',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '>','.',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '?','/',, nKeySize, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'Enter','Enter',xbeK_ENTER, nKeySize*2, nKeySize } )
// Row 5
nRow += nKeySize + nSpace
AAdd( aButtons, { nRow, 0, 'Caps','Caps',{||::isCapsLock:=!::isCapsLock,DC_GetRefresh(GetList)}, nKeySize*2, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, ' ',' ',, nKeySize*10.6, nKeySize } )
AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '.COM','.com',, nKeySize*2, nKeySize } )
FOR i := 1 TO Len(aButtons)
@ aButtons[i,1], aButtons[i,2] DCPUSHBUTTONXP ;
CAPTION _CaptionBlock(aButtons[i],self) ;
SIZE aButtons[i,6], aButtons[i,7] ;
ACTION _ActionBlock(aButtons[i],self,GetList) ;
CONFIG ::buttonConfig
NEXT
Code: Select all
STATIC FUNCTION _CaptionBlock( aButton, self )
RETURN {||iif( ::isCapsLock,aButton[3],aButton[4])}
* ----------
STATIC FUNCTION _ActionBlock( aButton, self, GetList )
IF Empty(aButton[5])
RETURN {||::accum(aButton[4],aButton[3],GetList)}
ELSEIF Valtype(aButton[5]) == 'B'
RETURN aButton[5]
ENDIF
RETURN {||::accum(Chr(aButton[5]),Chr(aButton[5]),GetList)}
The eXpress train is coming - and it has more cars.
Re: How to activate the Windows Virtual Keyboard from eXpres
hello Roger
I can use it with CAPTIONARRAY
I can use it with CAPTIONARRAY
rdonnay wrote:Here is a better way to create the keyboard, using an array table to define all the buttons.Code: Select all
nRow := 0 // Row 1 AAdd( aButtons, { nRow, 0, '!', '1',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '@','2',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '#','3',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '$','4',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '%','5',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '^','6',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '&&','7',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '*','8',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '(','9',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, ')','0',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '_','-',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '+','=',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'Del','Del',xbeK_BS, nKeySize*2, nKeySize } ) // Row 2 nRow += nKeySize + nSpace AAdd( aButtons, { nRow, nKeySize/2, 'Q','q',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'W','w',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'E','e',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'R','r',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'T','t',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'Y','y',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'U','u',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'I','i',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'O','o',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'P','p',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '{','[',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '}',']',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '|','\',, nKeySize, nKeySize } ) // Row 3 nRow += nKeySize + nSpace AAdd( aButtons, { nRow, nKeySize, 'A','a',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'S','s',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'D','d',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'F','f',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'G','g',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'H','h',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'J','j',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'K','k',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'L','l',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, ':',';;',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '"',"'",, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '@',"@",, nKeySize, nKeySize } ) // Row 4 nRow += nKeySize + nSpace AAdd( aButtons, { nRow, nKeySize*1.5, 'Z','z',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'X','x',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'C','c',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'V','v',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'B','b',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'N','n',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'M','m',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '<',',',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '>','.',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '?','/',, nKeySize, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, 'Enter','Enter',xbeK_ENTER, nKeySize*2, nKeySize } ) // Row 5 nRow += nKeySize + nSpace AAdd( aButtons, { nRow, 0, 'Caps','Caps',{||::isCapsLock:=!::isCapsLock,DC_GetRefresh(GetList)}, nKeySize*2, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, ' ',' ',, nKeySize*10.6, nKeySize } ) AAdd( aButtons, { DCGUI_ROW, DCGUI_COL+nSpace, '.COM','.com',, nKeySize*2, nKeySize } ) FOR i := 1 TO Len(aButtons) @ aButtons[i,1], aButtons[i,2] DCPUSHBUTTONXP ; CAPTION _CaptionBlock(aButtons[i],self) ; SIZE aButtons[i,6], aButtons[i,7] ; ACTION _ActionBlock(aButtons[i],self,GetList) ; CONFIG ::buttonConfig NEXT
Code: Select all
STATIC FUNCTION _CaptionBlock( aButton, self ) RETURN {||iif( ::isCapsLock,aButton[3],aButton[4])} * ---------- STATIC FUNCTION _ActionBlock( aButton, self, GetList ) IF Empty(aButton[5]) RETURN {||::accum(aButton[4],aButton[3],GetList)} ELSEIF Valtype(aButton[5]) == 'B' RETURN aButton[5] ENDIF RETURN {||::accum(Chr(aButton[5]),Chr(aButton[5]),GetList)}
Nolberto Paulino
Regards
Regards
Re: How to activate the Windows Virtual Keyboard from eXpres
YesI can use it with CAPTIONARRAY
The eXpress train is coming - and it has more cars.
Re: How to activate the Windows Virtual Keyboard from eXpres
Thanks Roger
I already solved the problem with CaptionArray
I already solved the problem with CaptionArray
rdonnay wrote:YesI can use it with CAPTIONARRAY
Nolberto Paulino
Regards
Regards
Re: How to activate the Windows Virtual Keyboard from eXpres
Here is how I solved the problem with showing the cursor in BLUE.
First, I create a DCSAY object in the target screen:
Then I make the OSK:getCursor point to the target screen ::getCursor:
Then I added 3 lines of code to the Accum method of TouchKeyboard:
You will need to calculate the positioning of ::getCursor in your DCGET object based on the font used for your gets.
First, I create a DCSAY object in the target screen:
Code: Select all
@ 1,0 DCSAY '|' SAYSIZE 0 OBJECT ::getCursor ;
FONT '14.Lucida Console Bold' COLOR BD_BLUE, BD_BLUE
Code: Select all
DCREAD GUI FIT TITLE 'New Driver Application' ;
MODAL TO lStatus OPTIONS GetOptions SETAPPWINDOW ;
HANDLER ::TouchHandler REFERENCE oOsk ;
EVAL {|o|DC_CenterObject(o,AppDeskTop()),;
o:setPos({o:currentPos()[1],o:currentPos()[2]-30}), ;
o:show(), ;
oOsk:targetXbp := oGet1, ;
oOsk:getCursor := ::getCursor, ; <<<<<<<<<<<<<<
SetAppFocus(oGet1)}
Code: Select all
METHOD TouchKeyboard:Accum( cKey, cCapsKey )
LOCAL cBuffer, i, nPos
IF ::isCapsLock .AND. !Empty(cCapsKey)
cKey := cCapsKey
ENDIF
::targetXbp:updated := .T.
FOR i := 1 TO Len(cKey)
::targetXbp:keyboard(Asc(cKey[i]))
NEXT
IF ::targetXbp:isDerivedFrom('DC_XbpGet')
cBuffer := Transform ( ::targetXbp:Get:Buffer, IIf(::targetXbp:Picture==NIL, "", ::targetXbp:picture) )
::targetXbp:Get:_assign( )
::targetXbp:SetEditBuffer( cBuffer )
ENDIF
<<<<<<<<<<<<<
::getCursor:show()
::getCursor:setParent(::targetXbp)
::getCursor:setPos({((::targetXbp:get:pos-1)*16)+2,0})
>>>>>>>>>>>>>
IF Asc(cKey) == xbeK_ENTER
SetAppFocus(::targetXbp)
PostAppEvent(xbeP_Keyboard,xbeK_ENTER,,::targetXbp)
ENDIF
Sleep(1)
RETURN nil
The eXpress train is coming - and it has more cars.
Re: How to activate the Windows Virtual Keyboard from eXpres
Thanks Roger
I finished making the changes to the attached Touch Keyboard, I sent him an image, already integrated into my software for tablet
I finished making the changes to the attached Touch Keyboard, I sent him an image, already integrated into my software for tablet
- Attachments
-
- Captura.JPG (117.86 KiB) Viewed 13513 times
Nolberto Paulino
Regards
Regards