Saludos.
//------------------------------------------------------------------------------
FUNCTION KeyBoardVirtual( cStringTexto, cTitle )
LOCAL oDlgVirtual, oFontDlg, oFontGet, oGetTexto, cTexto, aBtnsKeys, lSalida
DEFAULT cTitle := " Teclado Virtual..."
aBtnsKeys:= ARRAY(49)
lSalida := .f.
cTexto := Space(78)
IF cStringTexto != NIL
cTexto:= PADR( ALLTRIM( cStringTexto ), 78 )
ENDIF
DEFINE FONT oFontDlg NAME "Arial" SIZE 0, -13 BOLD
DEFINE FONT oFontGet NAME "Arial" SIZE 0, -16 BOLD
DEFINE DIALOG oDlgVirtual RESOURCE "DLG_TECLADO";
TITLE cTitle
REDEFINE GROUP ID 300 COLOR GetSysColor( COLOR_ACTIVECAPTION ) TRANSPARENT OF oDlgVirtual
REDEFINE GROUP ID 350 COLOR GetSysColor( COLOR_ACTIVECAPTION ) TRANSPARENT OF oDlgVirtual
REDEFINE GET oGetTexto VAR cTexto ID 550 FONT oFontGet OF oDlgVirtual
REDEFINE BUTTON aBtnsKeys[ 1] ID 500 OF oDlgVirtual PROMPT "Q" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("Q")) )
REDEFINE BUTTON aBtnsKeys[ 2] ID 501 OF oDlgVirtual PROMPT "W" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("W")) )
REDEFINE BUTTON aBtnsKeys[ 3] ID 502 OF oDlgVirtual PROMPT "E" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("E")) )
REDEFINE BUTTON aBtnsKeys[ 4] ID 503 OF oDlgVirtual PROMPT "R" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("R")) )
REDEFINE BUTTON aBtnsKeys[ 5] ID 504 OF oDlgVirtual PROMPT "T" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("T")) )
REDEFINE BUTTON aBtnsKeys[ 6] ID 505 OF oDlgVirtual PROMPT "Y" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("Y")) )
REDEFINE BUTTON aBtnsKeys[ 7] ID 506 OF oDlgVirtual PROMPT "U" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("U")) )
REDEFINE BUTTON aBtnsKeys[ 8] ID 507 OF oDlgVirtual PROMPT "I" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("I")) )
REDEFINE BUTTON aBtnsKeys[ 9] ID 508 OF oDlgVirtual PROMPT "O" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("O")) )
REDEFINE BUTTON aBtnsKeys[10] ID 509 OF oDlgVirtual PROMPT "P" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("P")) )
REDEFINE BUTTON aBtnsKeys[11] ID 510 OF oDlgVirtual PROMPT "A" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("A")) )
REDEFINE BUTTON aBtnsKeys[12] ID 511 OF oDlgVirtual PROMPT "S" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("S")) )
REDEFINE BUTTON aBtnsKeys[13] ID 512 OF oDlgVirtual PROMPT "D" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("D")) )
REDEFINE BUTTON aBtnsKeys[14] ID 513 OF oDlgVirtual PROMPT "F" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("F")) )
REDEFINE BUTTON aBtnsKeys[15] ID 514 OF oDlgVirtual PROMPT "G" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("G")) )
REDEFINE BUTTON aBtnsKeys[16] ID 515 OF oDlgVirtual PROMPT "H" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("H")) )
REDEFINE BUTTON aBtnsKeys[17] ID 516 OF oDlgVirtual PROMPT "J" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("J")) )
REDEFINE BUTTON aBtnsKeys[18] ID 517 OF oDlgVirtual PROMPT "K" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("K")) )
REDEFINE BUTTON aBtnsKeys[19] ID 518 OF oDlgVirtual PROMPT "L" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("L")) )
REDEFINE BUTTON aBtnsKeys[20] ID 519 OF oDlgVirtual PROMPT "Ñ" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("Ñ")) )
REDEFINE BUTTON aBtnsKeys[21] ID 520 OF oDlgVirtual PROMPT "Z" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("Z")) )
REDEFINE BUTTON aBtnsKeys[22] ID 521 OF oDlgVirtual PROMPT "X" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("X")) )
REDEFINE BUTTON aBtnsKeys[23] ID 522 OF oDlgVirtual PROMPT "C" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("C")) )
REDEFINE BUTTON aBtnsKeys[24] ID 523 OF oDlgVirtual PROMPT "V" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("V")) )
REDEFINE BUTTON aBtnsKeys[25] ID 524 OF oDlgVirtual PROMPT "B" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("B")) )
REDEFINE BUTTON aBtnsKeys[26] ID 525 OF oDlgVirtual PROMPT "N" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("N")) )
REDEFINE BUTTON aBtnsKeys[27] ID 526 OF oDlgVirtual PROMPT "M" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("M")) )
REDEFINE BUTTON aBtnsKeys[28] ID 527 OF oDlgVirtual PROMPT "(,)" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC(",")) )
REDEFINE BUTTON aBtnsKeys[29] ID 528 OF oDlgVirtual PROMPT "(.)" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC(".")) )
REDEFINE BUTTON aBtnsKeys[30] ID 529 OF oDlgVirtual PROMPT "(-)" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("-")) )
REDEFINE BUTTON aBtnsKeys[31] ID 551 OF oDlgVirtual PROMPT "7" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("7")) )
REDEFINE BUTTON aBtnsKeys[32] ID 552 OF oDlgVirtual PROMPT "8" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("8")) )
REDEFINE BUTTON aBtnsKeys[33] ID 553 OF oDlgVirtual PROMPT "9" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("9")) )
REDEFINE BUTTON aBtnsKeys[34] ID 554 OF oDlgVirtual PROMPT "4" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("4")) )
REDEFINE BUTTON aBtnsKeys[35] ID 555 OF oDlgVirtual PROMPT "5" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("5")) )
REDEFINE BUTTON aBtnsKeys[36] ID 556 OF oDlgVirtual PROMPT "6" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("6")) )
REDEFINE BUTTON aBtnsKeys[37] ID 557 OF oDlgVirtual PROMPT "1" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("1")) )
REDEFINE BUTTON aBtnsKeys[38] ID 558 OF oDlgVirtual PROMPT "2" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("2")) )
REDEFINE BUTTON aBtnsKeys[39] ID 559 OF oDlgVirtual PROMPT "3" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("3")) )
REDEFINE BUTTON aBtnsKeys[40] ID 560 OF oDlgVirtual PROMPT "0" ;
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("0")) )
REDEFINE BUTTON aBtnsKeys[41] ID 561 OF oDlgVirtual PROMPT "Supr";
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyDown(VK_DELETE) )
REDEFINE BUTTON aBtnsKeys[42] ID 531 OF oDlgVirtual PROMPT "Barra espaciadora";
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC(" ")) )
REDEFINE BUTTON aBtnsKeys[43] ID 530 OF oDlgVirtual PROMPT "(";
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC("(")) )
REDEFINE BUTTON aBtnsKeys[44] ID 532 OF oDlgVirtual PROMPT ")";
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyChar(ASC(")")) )
REDEFINE BUTTON aBtnsKeys[45] ID 563 OF oDlgVirtual PROMPT "<- Retroceso";
ACTION ( oGetTexto:SetFocus(), oGetTexto:KeyDown(VK_BACK) )
REDEFINE BUTTON aBtnsKeys[46] ID 533 OF oDlgVirtual PROMPT "<-";
ACTION ( , oGetTexto:SetFocus(), oGetTexto:KeyDown(VK_LEFT))
REDEFINE BUTTON aBtnsKeys[47] ID 535 OF oDlgVirtual PROMPT "->";
ACTION ( , oGetTexto:SetFocus() ,oGetTexto:KeyDown(VK_RIGHT) )
REDEFINE BUTTON aBtnsKeys[48] ID 534 OF oDlgVirtual;
PROMPT "Enter"
REDEFINE BUTTON aBtnsKeys[49] ID 562 OF oDlgVirtual;
PROMPT "E" + CRLF + "n" + CRLF + "t" + CRLF + "e" + CRLF + "r";
ACTION ( lSalida:= .t., oDlgVirtual:End() )
AEVAL( aBtnsKeys, {| oBtn | oBtn:oFont:= oFontDlg } )
oDlgVirtual:lHelpIcon:= .F.
ACTIVATE DIALOG oDlgVirtual ;
ON PAINT oGetTexto:SetFocus();
VALID lSalida
IF lSalida
AEVAL( aBtnsKeys, {| oBtn | oBtn:End() } )
aBtnsKeys:= NIL
ENDIF
RETURN cTexto
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
DLG_TECLADO DIALOG 35, 30, 596, 207
STYLE DS_MODALFRAME | DS_SETFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_THICKFRAME | WS_SYSMENU
CAPTION "Dialog"
FONT 8, "MS Sans Serif"
{
PUSHBUTTON "Q", 500, 9, 43, 42, 34
EDITTEXT 550, 10, 14, 427, 24, ES_AUTOHSCROLL
GROUPBOX "", 300, 4, 3, 440, 187
PUSHBUTTON "W", 501, 52, 43, 42, 34
PUSHBUTTON "E", 502, 95, 43, 42, 34
PUSHBUTTON "R", 503, 138, 43, 42, 34
PUSHBUTTON "7", 551, 454, 12, 42, 34
PUSHBUTTON "8", 552, 497, 12, 42, 34
PUSHBUTTON "9", 553, 540, 12, 42, 34
PUSHBUTTON "4", 554, 454, 47, 42, 34
PUSHBUTTON "5", 555, 497, 47, 42, 34
PUSHBUTTON "6", 556, 540, 47, 42, 34
PUSHBUTTON "1", 557, 454, 82, 42, 34
PUSHBUTTON "2", 558, 497, 82, 42, 34
PUSHBUTTON "3", 559, 540, 82, 42, 34
PUSHBUTTON "0", 560, 454, 117, 42, 34
PUSHBUTTON "Supr", 561, 497, 117, 42, 34
PUSHBUTTON "Y", 505, 224, 43, 42, 34
PUSHBUTTON "T", 504, 181, 43, 42, 34
PUSHBUTTON "U", 506, 267, 43, 42, 34
PUSHBUTTON "I", 507, 310, 43, 42, 34
PUSHBUTTON "O", 508, 353, 43, 42, 34
PUSHBUTTON "A", 510, 9, 78, 42, 34
PUSHBUTTON "S", 511, 52, 78, 42, 34
PUSHBUTTON "D", 512, 95, 78, 42, 34
PUSHBUTTON "F", 513, 138, 78, 42, 34
PUSHBUTTON "H", 515, 224, 78, 42, 34
PUSHBUTTON "G", 514, 181, 78, 42, 34
PUSHBUTTON "J", 516, 267, 78, 42, 34
PUSHBUTTON "K", 517, 310, 78, 42, 34
PUSHBUTTON "L", 518, 353, 78, 42, 34
PUSHBUTTON "Z", 520, 9, 113, 42, 34
PUSHBUTTON "X", 521, 52, 113, 42, 34
PUSHBUTTON "C", 522, 95, 113, 42, 34
PUSHBUTTON "V", 523, 138, 113, 42, 34
PUSHBUTTON "N", 525, 224, 113, 42, 34
PUSHBUTTON "B", 524, 181, 113, 42, 34
PUSHBUTTON "M", 526, 267, 113, 42, 34
PUSHBUTTON "coma (,)", 527, 310, 113, 42, 34
PUSHBUTTON "punto (.)", 528, 353, 113, 42, 34
PUSHBUTTON "P", 509, 396, 43, 42, 34
PUSHBUTTON "Ñ", 519, 397, 78, 42, 34
PUSHBUTTON "guion (-)", 529, 397, 113, 42, 34
PUSHBUTTON "<-", 533, 267, 148, 42, 34
PUSHBUTTON "ENTER", 534, 353, 148, 85, 34
PUSHBUTTON "(", 530, 9, 148, 41, 34
PUSHBUTTON ")", 532, 52, 148, 42, 34
PUSHBUTTON "Enter", 562, 540, 117, 42, 69
PUSHBUTTON "<- Retroceso", 563, 454, 152, 85, 34
GROUPBOX "", 350, 449, 3, 140, 187
PUSHBUTTON "Barra espaciadora", 531, 95, 148, 170, 34
PUSHBUTTON "->", 535, 310, 148, 42, 34
}