Touchscreen keypad with DCPUSHBUTTONS

This forum is for ideas and or code to be contributed for general use.
Post Reply
Message
Author
Leon Berger
Posts: 36
Joined: Thu Jan 28, 2010 2:30 pm

Touchscreen keypad with DCPUSHBUTTONS

#1 Post by Leon Berger »

Here is a touchscreen keypad with DCPUSHBUTTONS and 2 native resolutions.

If the screen has a resolution width <= 1024, the button size is 50x50 pixel. 80x80 pixel are given, if the resolution width is >= 1400 pixel. For resolutions between > 1024 and < 1400 the program uses 50x50 pixel with a scaling factor. This program is written for german language, but it is not very complicated to change to another language.

Screenshot with 50x50 pixel buttons:

Image

Screenshot with 80x80 pixel buttons:

Image

Have fun :-)

Code: Select all

//////////////////////////////////////////////////////////////////////
//
//  KBGUI.PRG
//
//  Made by:
//      Leon Berger, 2016
//
//  Inhalt:
//      Touchscreen Keypad
//
//////////////////////////////////////////////////////////////////////

#include 'inkey.ch'
#include 'dccolor.ch'
#include 'appevent.ch'
#include 'gra.ch'
#include 'xbp.ch'
#include 'dcmsg.ch'
#include 'dcdialog.ch'
#INCLUDE "nls.CH"

#define COLOR_RED        GraMakeRGBColor( { 255,   0,   0 } )
#define COLOR_GREEN      GraMakeRGBColor( {   0, 255,   0 } )
#define COLOR_BLUE       GraMakeRGBColor( {   0,   0, 255 } )
#define COLOR_DARKBLUE   GraMakeRGBColor( {   0,   0, 127 } )
#define COLOR_YELLOW     GraMakeRGBColor( { 255, 255,   0 } )
#define COLOR_WHITE      GraMakeRGBColor( { 255, 255, 255 } )
#define COLOR_BLACK      GraMakeRGBColor( {   0,   0,   0 } )
#define COLOR_PALEGRAY   GraMakeRGBColor( { 192, 192, 192 } )
#define COLOR_ORANGE     GraMakeRGBColor( { 253, 120,  41 } )
#define COLOR_LTORANGE   GraMakeRGBColor( { 250, 205,   0 } )
#define COLOR_LTBLUE     GraMakeRGBColor( {  30, 187, 255 } )
#define COLOR_SILVER     GraMakeRGBColor( { 192, 192, 192 } )

MEMVAR lCaps, lAltGr, lFirstTime

FUNCTION MAIN( cValue )
    cValue := KeyPadGui( cValue, {"Header Line 1", "Header Line 2"} )
    DCMSGBOX cValue BUTTONS {"Ok"} FONT "14.Arial"
RETURN cValue


FUNCTION KeyPadGui(cValue, aText)
   LOCAL GetList := {}, GetOptions, cSaveValue, oCancelButton, ;
         cFont, lStatus, nZeile := 0, nLine := 0
   LOCAL nWidth := AppDeskTop():currentSize()[1]
   LOCAL nButtonWidth  := if(nWidth >= 1400, 80, 50)
   LOCAL nButtonHeight := if(nWidth >= 1400, 80, 50)
   LOCAL nSpaceW       := 10
   LOCAL nSpaceH       := 10
   LOCAL nSpaceFront   := if(nWidth >= 1400, 30, 15)
   LOCAL aScale[6]

   PRIVATE lFirstTime := .t.
   PRIVATE lCaps
   PRIVATE lAltGr

   DEFAULT cValue := space(30)
   DEFAULT aText := {}
   DEFAULT lCaps := .f.
   DEFAULT lAltGr := .f.

   SetLocale(NLS_ICURRENCYEURO,"1")
   SetLocale(NLS_SCURRENCY,chr(213))
   DC_LangSet(DCLANG_GERMAN)

   cFont := '12.Arial Bold'

   cSaveValue := cValue

   for nZeile := 1 to len(aText)
      nLine += 1
   next

   DO CASE
   CASE nWidth <= 1024
      aScale[1] := 1
      aScale[2] := 1
      aScale[3] := 1
      aScale[4] := 1
      aScale[5] := .f.
      aScale[6] := .f.
   CASE nWidth <= 1100
      aScale[1] := 1.05
      aScale[2] := 1.05
      aScale[3] := 1.05
      aScale[4] := 1.05
      aScale[5] := .t.
      aScale[6] := .f.
   CASE nWidth <= 1200
      aScale[1] := 1.1
      aScale[2] := 1.1
      aScale[3] := 1.1
      aScale[4] := 1.1
      aScale[5] := .t.
      aScale[6] := .f.
   CASE nWidth <= 1300
      aScale[1] := 1.15
      aScale[2] := 1.15
      aScale[3] := 1.15
      aScale[4] := 1.15
      aScale[5] := .t.
      aScale[6] := .f.
   OTHERWISE
      aScale[1] := 1
      aScale[2] := 1
      aScale[3] := 1
      aScale[4] := 1
      aScale[5] := .f.
      aScale[6] := .f.
   ENDCASE

   do case
   case nLine = 1
      @  -2, 0 DCSAY padr(atext[1],60);
         SAYFONT "15.Verdana";
         SAYSIZE 0;
         SAYCOLOR {||{COLOR_DARKBLUE,GRA_CLR_BACKGROUND}}
   case nLine = 2
      @  -3.5, 0 DCSAY padr(atext[1],60);
         SAYFONT "15.Verdana";
         SAYSIZE 0;
         SAYCOLOR {||{COLOR_DARKBLUE,GRA_CLR_BACKGROUND}}
      @  -2, 0 DCSAY padr(atext[2],60);
         SAYFONT "15.Verdana";
         SAYSIZE 0;
         SAYCOLOR {||{COLOR_DARKBLUE,GRA_CLR_BACKGROUND}}
   endcase

   @  -10, 0 DCGET cValue;
      GETFONT "20.Verdana";
      PIXEL ;
      GETSIZE nButtonWidth*10,36 ;
      GETCOLOR {||{GRA_CLR_BLUE,GRA_CLR_WHITE}};
      EDITPROTECT {||.t.};
      ID 'ACCUM'

   @  50,  0 ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"!","1") } FONT cFont SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('1',"!",@cValue,GetList)} ;
      ACCELKEY Asc('1')

   @  50, 0+(nButtonWidth+nSpaceH)*1 ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"@","2") } ;
      FONT cFont SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('2',"@",@cValue,GetList)} ;
      ACCELKEY Asc('2')

   // Euro sign
   @  50, 0+(nButtonWidth+nSpaceH)*2 ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,chr(213),"3") } ;
      FONT cFont SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('3',chr(213),@cValue,GetList)} ;
      ACCELKEY Asc('3')

   @  50,0+(nButtonWidth+nSpaceH)*3 ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"$","4") } ;
      FONT cFont SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('4',"$",@cValue,GetList)} ;
      ACCELKEY Asc('4')

   @  50,0+(nButtonWidth+nSpaceH)*4 ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"%","5") } ;
      FONT cFont SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('5',"%",@cValue,GetList)} ;
      ACCELKEY Asc('5')

   @  50,0+(nButtonWidth+nSpaceH)*5 ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"&&","6") } ;
      FONT cFont SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('6',"&",@cValue,GetList)} ;
      ACCELKEY Asc('6')

   @  50,0+(nButtonWidth+nSpaceH)*6 ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"/","7") } ;
      FONT cFont SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('7',"/",@cValue,GetList)} ;
      ACCELKEY Asc('7');
      HIDE {|| lAltGr}

   @  50,0+(nButtonWidth+nSpaceH)*6 ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"{","{") } ;
      FONT cFont SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('{',"{",@cValue,GetList)} ;
      ACCELKEY Asc('7');
      HIDE {|| !lAltGr}

   @  50,0+(nButtonWidth+nSpaceH)*7 ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"(","8") } ;
      FONT cFont SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('8',"(",@cValue,GetList)} ;
      ACCELKEY Asc('8');
      HIDE {|| lAltGr}

   @  50,0+(nButtonWidth+nSpaceH)*7 ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"[","[") } ;
      FONT cFont SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('[',"[",@cValue,GetList)} ;
      ACCELKEY Asc('8');
      HIDE {|| !lAltGr}

   @  50,0+(nButtonWidth+nSpaceH)*8 ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,")","9") } ;
      FONT cFont SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('9',")",@cValue,GetList)} ;
      ACCELKEY Asc('9');
      HIDE {|| lAltGr}

   @  50,0+(nButtonWidth+nSpaceH)*8 ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"]","]") } ;
      FONT cFont SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum(']',"]",@cValue,GetList)} ;
      ACCELKEY Asc('9');
      HIDE {|| !lAltGr}

   @  50,0+(nButtonWidth+nSpaceH)*9 ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"=","0") } ;
      FONT cFont SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('0',"=",@cValue,GetList)} ;
      ACCELKEY Asc('0');
      HIDE {|| lAltGr}

   @  50,0+(nButtonWidth+nSpaceH)*9 ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"}","}") } ;
      FONT cFont SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('}',"}",@cValue,GetList)} ;
      ACCELKEY Asc('0');
      HIDE {|| !lAltGr}

   @  50,0+(nButtonWidth+nSpaceH)*10 ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"?","á") } ;
      FONT cFont SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('á',"?",@cValue,GetList)} ;
      ACCELKEY Asc('á');
      HIDE {|| lAltGr}

   @  50,0+(nButtonWidth+nSpaceH)*10 ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"\","\") } ;
      FONT cFont SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('\',"\",@cValue,GetList)} ;
      ACCELKEY Asc('á');
      HIDE {|| !lAltGr}

   @  50,0+(nButtonWidth+nSpaceH)*11 ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"`","'") } ;
      FONT cFont SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum("'","`",@cValue,GetList)} ;
      ACCELKEY Asc('/')

   @  50,0+(nButtonWidth+nSpaceH)*12 ;
      DCPUSHBUTTON CAPTION '<- Back' FONT cFont ;
      SIZE nButtonWidth*2,nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||cValue := Substr(cValue,1,Len(cValue)-1),Accum('','',@cValue,GetList)} ;
      ACCELKEY 8;
      ID "BACK";
      WHEN {|| (len(trim(cValue)) # 0 )} ;

   @ 50+(nButtonHeight+nSpaceW),0+nSpaceFront ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"Q","q") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('q',"Q",@cValue,GetList)} ;
      ACCELKEY Asc("q")

   @ 50+(nButtonHeight+nSpaceW),0+nSpaceFront+((nButtonWidth+nSpaceW)*1) ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"W","w") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('w','W',@cValue,GetList)} ;
      ACCELKEY Asc('w')

   @ 50+(nButtonHeight+nSpaceW),0+nSpaceFront+((nButtonWidth+nSpaceW)*2) ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"E","e") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('e','E',@cValue,GetList)} ;
      ACCELKEY Asc('e')

   @ 50+(nButtonHeight+nSpaceW),0+nSpaceFront+((nButtonWidth+nSpaceW)*3) ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"R","r") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('r','R',@cValue,GetList)} ;
      ACCELKEY Asc('r')

   @ 50+(nButtonHeight+nSpaceW),0+nSpaceFront+((nButtonWidth+nSpaceW)*4) ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"T","t") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('t','T',@cValue,GetList)} ;
      ACCELKEY Asc('t')

   @ 50+(nButtonHeight+nSpaceW),0+nSpaceFront+((nButtonWidth+nSpaceW)*5) ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"Z","z") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('z','Z',@cValue,GetList)} ;
      ACCELKEY Asc('z')

   @ 50+(nButtonHeight+nSpaceW),0+nSpaceFront+((nButtonWidth+nSpaceW)*6) ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"U","u") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('u','U',@cValue,GetList)} ;
      ACCELKEY Asc('u')

   @ 50+(nButtonHeight+nSpaceW),0+nSpaceFront+((nButtonWidth+nSpaceW)*7) ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"I","i") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('i','I',@cValue,GetList)} ;
      ACCELKEY Asc('i')

   @ 50+(nButtonHeight+nSpaceW),0+nSpaceFront+((nButtonWidth+nSpaceW)*8) ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"O","o") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('o','O',@cValue,GetList)} ;
      ACCELKEY Asc('o')

   @ 50+(nButtonHeight+nSpaceW),0+nSpaceFront+((nButtonWidth+nSpaceW)*9)  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"P","p") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('p','P',@cValue,GetList)} ;
      ACCELKEY Asc('p')

   @ 50+(nButtonHeight+nSpaceW),0+nSpaceFront+((nButtonWidth+nSpaceW)*10) ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"š","") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('','š',@cValue,GetList)} ;
      ACCELKEY Asc('')

   @ 50+(nButtonHeight+nSpaceW),0+nSpaceFront+((nButtonWidth+nSpaceW)*11) ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"*","+") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('+','*',@cValue,GetList)} ;
      ACCELKEY Asc('+')

   @ 50+((nButtonHeight+nSpaceW)*2),0+(nSpaceFront*2) ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"A","a") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('a','A',@cValue,GetList)} ;
      ACCELKEY Asc('a')

   @ 50+((nButtonHeight+nSpaceW)*2),0+(nSpaceFront*2)+((nButtonWidth+nSpaceW)*1)  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"S","s") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('s','S',@cValue,GetList)} ;
      ACCELKEY Asc('s')

   @ 50+((nButtonHeight+nSpaceW)*2),0+(nSpaceFront*2)+((nButtonWidth+nSpaceW)*2)  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"D","d") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('d','D',@cValue,GetList)} ;
      ACCELKEY Asc('d')

   @ 50+((nButtonHeight+nSpaceW)*2),0+(nSpaceFront*2)+((nButtonWidth+nSpaceW)*3)  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"F","f") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('f','F',@cValue,GetList)} ;
      ACCELKEY Asc('f')

   @ 50+((nButtonHeight+nSpaceW)*2),0+(nSpaceFront*2)+((nButtonWidth+nSpaceW)*4)  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"G","g") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('g','G',@cValue,GetList)} ;
      ACCELKEY Asc('g')

   @ 50+((nButtonHeight+nSpaceW)*2),0+(nSpaceFront*2)+((nButtonWidth+nSpaceW)*5)  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"H","h") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('h','H',@cValue,GetList)} ;
      ACCELKEY Asc('h')

   @ 50+((nButtonHeight+nSpaceW)*2),0+(nSpaceFront*2)+((nButtonWidth+nSpaceW)*6)  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"J","j") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('j','J',@cValue,GetList)} ;
      ACCELKEY Asc('j')

   @ 50+((nButtonHeight+nSpaceW)*2),0+(nSpaceFront*2)+((nButtonWidth+nSpaceW)*7)  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"K","k") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('k','K',@cValue,GetList)} ;
      ACCELKEY Asc('k')

   @ 50+((nButtonHeight+nSpaceW)*2),0+(nSpaceFront*2)+((nButtonWidth+nSpaceW)*8)  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"L","l") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('l','L',@cValue,GetList)} ;
      ACCELKEY Asc('l')

   @ 50+((nButtonHeight+nSpaceW)*2),0+(nSpaceFront*2)+((nButtonWidth+nSpaceW)*9)  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"™","”") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('”','™',@cValue,GetList)} ;
      ACCELKEY Asc('”')

   @ 50+((nButtonHeight+nSpaceW)*2),0+(nSpaceFront*2)+((nButtonWidth+nSpaceW)*10)  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"Ž","„") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum('„','Ž',@cValue,GetList)} ;
      ACCELKEY Asc('„')

   @ 50+((nButtonHeight+nSpaceW)*2),0+(nSpaceFront*2)+((nButtonWidth+nSpaceW)*11)  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"`","#") } FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum("`","#",@cValue,GetList)} ;
      ACCELKEY Asc('#')

   @ 50+((nButtonHeight+nSpaceW)*3),0 ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,">","<") } ;
      FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum("<",'>',@cValue,GetList)} ;
      ACCELKEY Asc('<')

   @ 50+((nButtonHeight+nSpaceW)*3),0+(nButtonWidth+nSpaceW)*1  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"Y","y") } ;
      FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum("y",'Y',@cValue,GetList)} ;
      ACCELKEY Asc('y')

   @ 50+((nButtonHeight+nSpaceW)*3),0+(nButtonWidth+nSpaceW)*2  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"X","x") } ;
      FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum("x",'X',@cValue,GetList)} ;
      ACCELKEY Asc('x')

   @ 50+((nButtonHeight+nSpaceW)*3),0+(nButtonWidth+nSpaceW)*3  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"C","c") } ;
      FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum("c",'C',@cValue,GetList)} ;
      ACCELKEY Asc('c')

   @ 50+((nButtonHeight+nSpaceW)*3),0+(nButtonWidth+nSpaceW)*4  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"V","v") } ;
      FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum("v",'V',@cValue,GetList)} ;
      ACCELKEY Asc('v')

   @ 50+((nButtonHeight+nSpaceW)*3),0+(nButtonWidth+nSpaceW)*5  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"B","b") } ;
      FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum("b",'B',@cValue,GetList)} ;
      ACCELKEY Asc('b')

   @ 50+((nButtonHeight+nSpaceW)*3),0+(nButtonWidth+nSpaceW)*6  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"N","n") } ;
      FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum("n",'N',@cValue,GetList)} ;
      ACCELKEY Asc('n')

   @ 50+((nButtonHeight+nSpaceW)*3),0+(nButtonWidth+nSpaceW)*7   ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"M","m") } ;
      FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum("m",'M',@cValue,GetList)} ;
      ACCELKEY Asc('m')

   @ 50+((nButtonHeight+nSpaceW)*3),0+(nButtonWidth+nSpaceW)*8 ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,",",",") } ;
      FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum(",",";",@cValue,GetList)} ;
      ACCELKEY Asc(',')

   @ 50+((nButtonHeight+nSpaceW)*3),0+(nButtonWidth+nSpaceW)*9  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,":",".") } ;
      FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "14.Verdana";
      ACTION {||Accum(".",":",@cValue,GetList)} ;
      ACCELKEY Asc('.')

   @ 50+((nButtonHeight+nSpaceW)*3),0+(nButtonWidth+nSpaceW)*10 ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"_","-") };
       FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum("-","_",@cValue,GetList)} ;
      ACCELKEY Asc('-')

   @ 50+((nButtonHeight+nSpaceW)*4),0+(nButtonWidth+nSpaceW)*3 ;
      DCPUSHBUTTON CAPTION "Space" ;
      FONT cFont ;
      SIZE (nButtonWidth*6)+(nSpaceW*5),nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_LTBLUE;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||Accum(" "," ",@cValue,GetList) } ;
      ACCELKEY Asc(' ')

   @ 50+((nButtonHeight+nSpaceW)*4),0+(nButtonWidth+nSpaceW)*2  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"CAPS;ON", "caps;off") } ;
      FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_YELLOW;
      MOUSECOLOR COLOR_BLACK, COLOR_YELLOW;
      CLICKCOLOR COLOR_BLUE, COLOR_YELLOW;
      SELECTCOLOR COLOR_BLUE, COLOR_YELLOW;
      BORDERCOLOR {255,153, 51};
      FONT "14.Verdana";
      ACTION {||Caps(@lCaps),DC_GetRefresh(GetList)} ;
      ACCELKEY xbeK_CAPS_LOCK;
      HIDE {|| lCaps }

   @ 50+((nButtonHeight+nSpaceW)*4),0+(nButtonWidth+nSpaceW)*2  ;
      DCPUSHBUTTON CAPTION {||iif( lCaps,"CAPS;ON", "caps;off") } ;
      FONT cFont ;
      SIZE nButtonWidth, nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_GREEN ;
      MOUSECOLOR COLOR_BLACK, COLOR_GREEN ;
      CLICKCOLOR COLOR_BLACK, COLOR_GREEN ;
      SELECTCOLOR COLOR_BLACK, COLOR_GREEN ;
      BORDERCOLOR {255,153, 51};
      FONT "14.Verdana";
      ACTION {||Caps(@lCaps),DC_GetRefresh(GetList)} ;
      ACCELKEY xbeK_CAPS_LOCK;
      HIDE {|| !lCaps }

   @ 50+((nButtonHeight+nSpaceW)*4),0+(nButtonWidth+nSpaceW)*9  ;
      DCPUSHBUTTON CAPTION {||iif( lAltGr,"ALT-GR;ON", "alt-gr;off") } ;
      FONT cFont ;
      SIZE nButtonWidth+(nSpaceW*3), nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_YELLOW;
      MOUSECOLOR COLOR_BLACK, COLOR_YELLOW;
      CLICKCOLOR COLOR_BLUE, COLOR_YELLOW;
      SELECTCOLOR COLOR_BLUE, COLOR_YELLOW;
      BORDERCOLOR {255,153, 51};
      FONT "14.Verdana";
      ACTION {||AltGr(@lAltGr),DC_GetRefresh(GetList)} ;
      ACCELKEY xbeK_ALT_UP;
      HIDE {|| lAltGr }

   @ 50+((nButtonHeight+nSpaceW)*4),0+(nButtonWidth+nSpaceW)*9  ;
      DCPUSHBUTTON CAPTION {||iif( lAltGr,"ALT-GR;ON", "alt-gr;off") } ;
      FONT cFont ;
      SIZE nButtonWidth+(nSpaceW*3), nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_GREEN;
      MOUSECOLOR COLOR_BLACK, COLOR_GREEN;
      CLICKCOLOR COLOR_BLUE, COLOR_GREEN;
      SELECTCOLOR COLOR_BLUE, COLOR_GREEN;
      BORDERCOLOR {255,153, 51};
      FONT "14.Verdana";
      ACTION {||AltGr(@lAltGr),DC_GetRefresh(GetList)} ;
      ACCELKEY xbeK_ALT_UP;
      HIDE {|| !lAltGr }

   @ 50+((nButtonHeight+nSpaceW)*1),0+(nSpaceFront*2)+((nButtonWidth+nSpaceW)*12)  ;
      DCPUSHBUTTON CAPTION 'CL';
      FONT cFont ;
      SIZE nButtonWidth+(nSpaceW*2),nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_PALEGRAY;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {||cValue := "",Accum('','',@cValue,GetList)} ;
      ACCELKEY { 67, 99 }

   @ 50+((nButtonHeight+nSpaceW)*2),0+(nSpaceFront*2)+((nButtonWidth+nSpaceW)*12)  ;
      DCPUSHBUTTON CAPTION 'Esc';
      FONT cFont ;
      SIZE nButtonWidth+(nSpaceW*2),nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_RED;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACTION {|| DC_ReadGuiEvent(DCGUI_EXIT_ABORT,GetList)} ;
      ACCELKEY 27 ;
      OBJECT oCancelButton

   @ 50+((nButtonHeight+nSpaceW)*3),0+(nButtonWidth+nSpaceW)*11 ;
      DCPUSHBUTTON CAPTION 'ENTER' ;
      FONT cFont ;
      SIZE (nButtonWidth*3)+nSpaceW,nButtonHeight PIXEL ;
      GRADIENT 5;
      RADIUS 10;
      COLOR COLOR_BLACK, COLOR_GREEN;
      MOUSECOLOR COLOR_BLACK, COLOR_LTORANGE;
      CLICKCOLOR COLOR_BLUE, COLOR_ORANGE;
      SELECTCOLOR COLOR_BLUE, COLOR_ORANGE;
      BORDERCOLOR {255,153, 51};
      FONT "18.Verdana";
      ACCELKEY 13 ;
      WHEN {|| (len(trim(cValue)) # 0 )} ;
      ACTION {||DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList)};
      ID 'ENTER'

    DCGETOPTIONS ;
       TITLE "KeyPadGui";
       NOMINBUTTON;
       NOMAXBUTTON;
       SCALEFACTOR aScale;
       HIDE
       // NOTITLE ;
       //AUTORESIZE;

    DCREAD GUI FIT MODAL ;
           SETFOCUS @oCancelButton ;
           TO lStatus ;
           OPTIONS GetOptions ;
           EVAL {|o|DC_CenterObject(o,SetAppWindow()), ;
                    o:show()}

   IF !lStatus
      cValue := cSaveValue
   ELSE
      cValue := cValue
   ENDIF

RETURN cValue

* --------------

STATIC FUNCTION CAPS(lCaps)
  lCaps := !lCaps
RETURN lCaps

* ----------------
STATIC FUNCTION AltGr(lAltGr)
   lAltGr := !lAltGr
RETURN lAltGr

* ----------------

STATIC FUNCTION Accum ( cKey, cCapsKey, cValue, GetList )

   IF lFirstTime
      cValue := ''
   ENDIF

   lFirstTime := .f.

   cValue += iif(lCaps, cCapsKey, cKey)

   DC_GetRefresh(GetList,'ACCUM')
   DC_GetRefresh(GetList,'ENTER')
   DC_GetRefresh(GetList,'BACK')

RETURN nil




PROCEDURE AppSys
RETURN

Code: Select all

[PROJECT]
    DEBUG         = No
    VERSION       = 1.0;0.00
    GUI           = yes
    COMPILE       = xpp
    COMPILE_FLAGS = -q -w -wu
    DEBUG_SAVE    = no
    GUI           = yes
    LINKER        = alink
    LINK_FLAGS    =
    RC_COMPILE    = arc
    RC_FLAGS      = -v
    KBGUI.XPJ

[KBGUI.XPJ]
    KBGUI.EXE

[KBGUI.EXE]
    KBGUI.obj
    DCLIP1.LIB
    DCLIPX.LIB
    KBGUI.prg
Best regards
Leon

Post Reply