forum.vdsworld.com Forum Index forum.vdsworld.com
Visit VDSWORLD.com
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


Fake EDIT-box & COMBOLIST

 
Post new topic   Reply to topic    forum.vdsworld.com Forum Index -> Visual DialogScript 3 Source Code
View previous topic :: View next topic  
Author Message
Skit3000
Admin Team


Joined: 11 May 2002
Posts: 2166
Location: The Netherlands

PostPosted: Sat Aug 31, 2002 1:52 pm    Post subject: Fake EDIT-box & COMBOLIST Reply with quote

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
View user's profile Send private message
Federico
VDS Pirate
VDS Pirate


Joined: 03 Aug 2002
Posts: 8

PostPosted: Sat Aug 31, 2002 2:41 pm    Post subject: Reply with quote

little problem
we can't delete any char
Back to top
View user's profile Send private message
Skit3000
Admin Team


Joined: 11 May 2002
Posts: 2166
Location: The Netherlands

PostPosted: Sat Aug 31, 2002 2:57 pm    Post subject: Reply with quote

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
View user's profile Send private message
Garrett
Moderator Team


Joined: 04 Oct 2001
Posts: 2149
Location: A House

PostPosted: Mon Sep 02, 2002 8:19 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    forum.vdsworld.com Forum Index -> Visual DialogScript 3 Source Code All times are GMT
Page 1 of 1

 
Jump to:  
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

Twitter@vdsworld       RSS

Powered by phpBB © 2001, 2005 phpBB Group