option decimalsep,.
  DIALOG CREATE,Fake EDIT-boxes test,-1,0,223,243
  DIALOG ADD,STYLE,STYLE1,Courier New,12,,WHITE,BLACK
  DIALOG ADD,MENU,-,A|A,B|B,C|C,D|D,E|E,F|F,G|G,H|H,I|I,J|J,K|K,L|L,M|M,N|N,O|O,P|P,Q|Q,R|R,S|S,T|T,U|U,V|V,W|W,X|X,Y|Y,Z|Z,A-|SHIFT+A,B-|SHIFT+B,C-|SHIFT+C,D-|SHIFT+D,E-|SHIFT+E,F-|SHIFT+F,G-|SHIFT+G,H-|SHIFT+H,I-|SHIFT+I,J-|SHIFT+J,K-|SHIFT+K,L-|SHIFT+L,M-|SHIFT+M,N-|SHIFT+N,O-|SHIFT+O,P-|SHIFT+P,Q-|SHIFT+Q,R-|SHIFT+R,S-|SHIFT+S,T-|SHIFT+T,U-|SHIFT+U,V-|SHIFT+V,W-|SHIFT+W,X-|SHIFT+X,Y-|SHIFT+Y,Z-|SHIFT+Z,0|0,1|1,2|2,3|3,4|4,5|5,6|6,7|7,8|8,9|9,SPACE|SPACE,ENTER|ENTER,TAB|TAB,DEL|DEL,UP|UP,DOWN|DOWN
  DIALOG ADD,GROUP,GROUP1,10,10,200,19,,,STYLE1
  DIALOG ADD,TEXT,TEXT1,11,12,200,19,,,STYLE1,CLICK
  DIALOG ADD,GROUP,GROUP2,35,10,200,19,,,STYLE1
  DIALOG ADD,TEXT,TEXT2,36,12,200,19,,,STYLE1,CLICK
  DIALOG ADD,GROUP,GROUP3,60,10,200,19,,,STYLE1
  DIALOG ADD,TEXT,TEXT3,61,12,200,19,,,STYLE1,CLICK
  DIALOG ADD,LIST,TEXTLIST1,84,10,200,144,,CLICK,STYLE1
  DIALOG ADD,EDIT,BACKSPACECHECKER,-100,-100,,,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  DIALOG SHOW
  list add,TEXTLIST1,
%%backspacechecker = @len(@dlgtext(BACKSPACECHECKER))
rem You must know the windwo name to send the @key(right) commands (for Backspace)
%%windowname = Fake EDIT-boxes test
%%textnumber = 1

:Evloop
wait event,0.1
%%event = @event()
rem This is here in case the user presses a button or something
if @not(@equal(@substr(%%event,@diff(@len(%%event),3),@len(%%event)),MENU))
  goto %%event
  end

if @equal(%%event,UPMENU)@equal(%%event,DOWNMENU)
  goto evloop
  end
rem This removes the blink, so an other character can be added to the TEXT-element
if @equal(%%blink,on)
  dialog set,TEXT%%textnumber,@strdel(@dlgtext(TEXT%%textnumber),@len(@dlgtext(TEXT%%textnumber)),@len(@dlgtext(TEXT%%textnumber)))
  %%blink = off
  end

rem This lets the user swith between the different 'EDIT's'
if @equal(%%event,TABMENU)
  if @equal(%%textnumber,LIST1)	
    %%textnumber = 1
	else
    %%textnumber = @succ(%%textnumber)
    end
  if @equal(%%textnumber,4)
rem With this you can use a List as a sort of Combo...
    %%textnumber = LIST1
	goto Listloop
	end
  goto evloop
  end
  
rem This puts a space in the TEXT-element  
if @equal(%%event,SPACEMENU)  
  dialog set,TEXT%%textnumber,@dlgtext(TEXT%%textnumber)@chr(32)  
  goto evloop
  end

if @equal(%%event,ENTERMENU)  
  rem Disabled, you can use it with this command:
  rem dialog set,TEXT%%textnumber,@dlgtext(TEXT%%textnumber)@cr()  
  goto evloop
  end  
  
rem This removes the last character. I have chosen for the DELETE key, because
rem the Backspace key doesn't work in the MENU-element..  
if @equal(%%event,DELMENU)  
  dialog set,TEXT%%textnumber,@strdel(@dlgtext(TEXT%%textnumber),@len(@dlgtext(TEXT%%textnumber)),@len(@dlgtext(TEXT%%textnumber)))
  goto evloop
  end    

rem This sets the entered button in the TEXT-element (upper case text)
if @equal(@len(%%event),6)  
  dialog set,TEXT%%textnumber,@dlgtext(TEXT%%textnumber)@upper(@substr(%%event,1,1))
  else
  rem This sets the entered button in the TEXT-element (lower case text)
  dialog set,TEXT%%textnumber,@dlgtext(TEXT%%textnumber)@lower(@substr(%%event,1,1))
  end
goto evloop

:TIMER
if @not(@equal(%%timercounter,7))
  %%timercounter = @succ(%%timercounter)
  gosub BACKSPACECHECKER
  goto evloop
  else
  %%timercounter = 0
  gosub BACKSPACECHECKER
  end
rem This lets the TEXT have a fake blink...
if @equal(%%blink,on)
  rem This deletes the | character
  dialog set,TEXT%%textnumber,@strdel(@dlgtext(TEXT%%textnumber),@len(@dlgtext(TEXT%%textnumber)),@len(@dlgtext(TEXT%%textnumber)))
  %%blink = off
  else
  rem This adds the | character
  dialog set,TEXT%%textnumber,@dlgtext(TEXT%%textnumber)|
  %%blink = on
  end

goto evloop

:BACKSPACECHECKER
dialog focus,BACKSPACECHECKER
window send,%%windowname,@key(right)
rem This will check for a backspace (2 bad that you need a EDIT-box for it... :-(
if @greater(%%backspacechecker,@len(@dlgtext(BACKSPACECHECKER)))
  dialog set,BACKSPACECHECKER,@dlgtext(BACKSPACECHECKER)x
  dialog set,TEXT%%textnumber,@strdel(@dlgtext(TEXT%%textnumber),@len(@dlgtext(TEXT%%textnumber)),@len(@dlgtext(TEXT%%textnumber)))
  end
  %%backspacechecker = @len(@dlgtext(BACKSPACECHECKER))  
exit

:Listloop
repeat
wait 0.1
gosub BACKSPACECHECKERFORLIST
%%event = @event()
until @not(@null(%%event))

rem I put the Index number in a Variable, cause that is easier to remember
%%selecteditem = @index(TEXT%%textnumber)

rem If there isn't a selection (because you hit Tab) it will set the index to 0
if @equal(%%selecteditem,-1)
  list seek,TEXT%%textnumber,0
  end
  


rem This is here in case the user presses a button or something
if @not(@equal(@substr(%%event,@diff(@len(%%event),3),@len(%%event)),MENU))
  goto %%event
  end

if @equal(%%event,UPMENU)
rem Press up and the Index pointer will move up
  if @not(@equal(%%selecteditem,0))
    %%selecteditem = @pred(%%selecteditem)
    list seek,TEXT%%textnumber,%%selecteditem
	end
	goto Listloop
  end
if @equal(%%event,DOWNMENU)
rem If you press down on the lowest line, you'll get an error...
rem I don't know how to solve this... Anybody else??
  if @not(@equal(@pred(@count(TEXT%%textnumber)),%%selecteditem))
   %%asdasd = @count(TEXT%%textnumber)
    %%selecteditem = @succ(%%selecteditem)
    list seek,TEXT%%textnumber,%%selecteditem
	end
	goto Listloop	
  end  
  
rem This is to change to an EDIT-box
if @equal(%%event,TABMENU)
  %%textnumber = 1
  goto evloop
  end
  
rem This will add a space   
if @equal(%%event,SPACEMENU)
  list put,TEXT%%textnumber,@item(TEXT%%textnumber)@chr(32)
  list seek,TEXT%%textnumber,%%selecteditem
  goto Listloop
  end

rem This will add a new line. Note that the new line will be above the old one.
rem I couldn't get it unbeneath it...
if @equal(%%event,ENTERMENU)
  list insert,TEXT%%textnumber
  list seek,TEXT%%textnumber,%%selecteditem
  list seek,TEXT%%textnumber,%%selecteditem
  goto Listloop
  end  

rem This removes the last character.
if @equal(%%event,DELMENU)  
  list put,TEXT%%textnumber,@strdel(@item(TEXT%%textnumber),@len(@item(TEXT%%textnumber)),@len(@item(TEXT%%textnumber)))
  list seek,TEXT%%textnumber,%%selecteditem
  goto Listloop
  end   

rem This puts the other characters into the list (uppercase)
if @equal(@len(%%event),6)  
  list put,TEXT%%textnumber,@item(TEXT%%textnumber)@upper(@substr(%%event,1,1))
  else
  rem This puts the other characters into the list (lowercase)
  list put,TEXT%%textnumber,@item(TEXT%%textnumber)@lower(@substr(%%event,1,1))
  end

rem This will set the index to the one you clicked, because that one will be deleted
rem if you press a key...
if @equal(%%selecteditem,-1)
  if @not(@equal(@count(TEXT%%textnumber),0))
    list seek,TEXT%%textnumber,0
	end
  else
  list seek,TEXT%%textnumber,%%selecteditem
  end
  
goto Listloop

:BACKSPACECHECKERFORLIST
%%selecteditem = @index(TEXT%%textnumber)
dialog focus,BACKSPACECHECKER
rem You must send a @key(right), otherwise the whole EDIT-box will be selected and delete at once...
window send,%%windowname,@key(right)
rem This will check for a backspace (2 bad that you need a EDIT-box for it... :-(
if @greater(%%backspacechecker,@len(@dlgtext(BACKSPACECHECKER)))
  dialog set,BACKSPACECHECKER,@dlgtext(BACKSPACECHECKER)x
  list put,TEXT%%textnumber,@strdel(@item(TEXT%%textnumber),@len(@item(TEXT%%textnumber)),@len(@item(TEXT%%textnumber)))
  end
  %%backspacechecker = @len(@dlgtext(BACKSPACECHECKER))  
  list seek,TEXT%%textnumber,%%selecteditem
exit

:Text1CLICK
rem This will select the first 'EDIT'-box
if @equal(%%blink,on)
  dialog set,TEXT%%textnumber,@strdel(@dlgtext(TEXT%%textnumber),@len(@dlgtext(TEXT%%textnumber)),@len(@dlgtext(TEXT%%textnumber)))
  %%blink = off
  end
%%textnumber = 1
goto evloop

:Text2CLICK
if @equal(%%blink,on)
  dialog set,TEXT%%textnumber,@strdel(@dlgtext(TEXT%%textnumber),@len(@dlgtext(TEXT%%textnumber)),@len(@dlgtext(TEXT%%textnumber)))
  %%blink = off
  end
%%textnumber = 2
goto evloop

:Text3CLICK
if @equal(%%blink,on)
  dialog set,TEXT%%textnumber,@strdel(@dlgtext(TEXT%%textnumber),@len(@dlgtext(TEXT%%textnumber)),@len(@dlgtext(TEXT%%textnumber)))
  %%blink = off
  end
%%textnumber = 3
goto evloop

:TEXTLIST1CLICK
if @equal(%%blink,on)
  dialog set,TEXT%%textnumber,@strdel(@dlgtext(TEXT%%textnumber),@len(@dlgtext(TEXT%%textnumber)),@len(@dlgtext(TEXT%%textnumber)))
  %%blink = off
  end
%%textnumber = LIST1  
goto Listloop

:Close
exit