| View previous topic :: View next topic |
| Author |
Message |
Skit3000 Admin Team

Joined: 11 May 2002 Posts: 2166 Location: The Netherlands
|
Posted: Sat Aug 31, 2002 1:52 pm Post subject: Fake EDIT-box & COMBOLIST |
|
|
Hello,
I've made a simple program so you can use fake EDIT-boxes with, for example, a bitmap on the background.
Also, I've made something to typ directly into a LIST, like in a COMBO, without the need to press a button or something.
| Code: |
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,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
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 SHOW
list add,TEXTLIST1,
%%textnumber = 1
:Evloop
wait event,0.7
%%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
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
dialog set,TEXT%%textnumber,@dlgtext(TEXT%%textnumber)@substr(%%event,1,1)
goto evloop
:TIMER
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
:Listloop
wait 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
%%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
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
list put,TEXT%%textnumber,@item(TEXTLIST1)@substr(%%event,1,1)
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
: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
rem Wonder what this one does???
exit
|
|
|
| Back to top |
|
 |
Federico VDS Pirate


Joined: 03 Aug 2002 Posts: 8
|
Posted: Sat Aug 31, 2002 2:41 pm Post subject: |
|
|
little problem
we can't delete any char |
|
| Back to top |
|
 |
Skit3000 Admin Team

Joined: 11 May 2002 Posts: 2166 Location: The Netherlands
|
Posted: Sat Aug 31, 2002 2:57 pm Post subject: |
|
|
I know. It is because you can't have a Backspace 'Hotkey' with the MENU-element. (But if you use Delete it will work)
But, I have added a new function that will let the Backspace key work.
Also added something to use UPPER and lower-case letters:
| Code: |
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 |
EDIT1: Solved a little bug. (If you pressed down in the list) |
|
| Back to top |
|
 |
Garrett Moderator Team
Joined: 04 Oct 2001 Posts: 2149 Location: A House
|
Posted: Mon Sep 02, 2002 8:19 pm Post subject: |
|
|
Just another way to fake an edit box, but by using a real edit box
that is hidden.
| Code: | Option Sleeptime,50
DIALOG CREATE,GT No Edit Example,-1,0,408,30
DIALOG ADD,STYLE,STYLE0,Courier New,14,b,BLACK,CYAN
DIALOG ADD,TEXT,TEXT0,0,0,408,30,,STYLE0
DIALOG ADD,TEXT,TEXT1,4,4,400,22,,STYLE0
DIALOG ADD,EDIT,EDIT1,0,0,0,0,,,EXIT,TABS
DIALOG ADD,BUTTON,BUTTON1,0,0,0,0,BUTTON1,,DEFAULT
DIALOG SHOW
DIALOG FOCUS,EDIT1
:Evloop
wait event,0
Goto @event()
:TIMER
If @not(@equal(@dlgtext(EDIT1),@dlgtext(TEXT1)))
Dialog Set,TEXT1,@dlgtext(EDIT1)_
End
DIALOG FOCUS,EDIT1
Goto Evloop
:Close
Exit
:BUTTON1BUTTON
If @equal(@dlgtext(EDIT1),exit)
Goto Close
End
Goto Evloop |
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You can attach files in this forum You can download files in this forum
|
|