View previous topic :: View next topic |
Author |
Message |
FreezingFire Admin Team
Joined: 23 Jun 2002 Posts: 3508
|
Posted: Sun Dec 29, 2002 2:04 pm Post subject: |
|
|
Is it just me or is this a bug? The following code doesn't work, with
@dlgtext(). From the help file:
Quote: | This function is used to read the text that appears in dialog window controls (controls are buttons, text and list boxes which may appear in a window). The string <control name> identifies the control that is the target of the function.
Copyright © 1995 - 2002 S.A.D.E. s.a.r.l. / All rights are reserved. |
Code: | title Mouseover Test
DIALOG CREATE,Button Mouseover,-1,0,240,160
DIALOG ADD,BUTTON,BUTTON1,57,51,,,BUTTON1
DIALOG ADD,STATUS,STAT
DIALOG SHOW
:timer
%%dlgtext = @dlgtext(BUTTON1)
info %%dlgtext |
_________________ FreezingFire
VDSWORLD.com
Site Admin Team |
|
Back to top |
|
|
Mac Professional Member
Joined: 08 Jul 2000 Posts: 1585 Location: Oklahoma USA
|
Posted: Sun Dec 29, 2002 2:17 pm Post subject: |
|
|
Doesn't work for me either. But you can use @sendmsg():
Code: |
title Mouseover Test
DIALOG CREATE,Button Mouseover,-1,0,240,160
DIALOG ADD,BUTTON,BUTTON1,5,5,80,20,"BUTTON #1"
DIALOG ADD,STATUS,STAT
DIALOG SHOW
WAIT
%%text = @sendmsg(@winexists(~BUTTON1),$0D,90,@STRBUF())
INFO %%text
|
Cheers, Mac _________________ VDSug.dll does file IO, check/disable menu items,
non-VDS dlls, draw functions and more...
Free download (30k dll size) at:
http://www.vdsworld.com/download.php?id=361
|
|
Back to top |
|
|
Skit3000 Admin Team
Joined: 11 May 2002 Posts: 2166 Location: The Netherlands
|
Posted: Sun Dec 29, 2002 7:41 pm Post subject: Mouseover Elements |
|
|
It's getting better and better...
Code: | REM ONLY TESTED ON VDS 3.51
OPTION DECIMALSEP,.
DIALOG CREATE,MOUSEOVER,-1,0,333,251
DIALOG ADD,BUTTON,BUTTON1,10,8,64,24,BUTTON1
DIALOG ADD,LIST,LIST1,38,8,314,144
DIALOG ADD,EDIT,EDIT1,10,76,246,19,EDIT1
DIALOG ADD,PROGRESS,PROGRESS1,186,8,314,24
DIALOG ADD,CHECK,CHECK1,214,10,64,18,CHECK1
DIALOG ADD,STATUS,STATUS1,STATUS1
DIALOG SHOW
rem TITLEBAR | DIALOG ELEMENTS TO CHECK
%%Mouseover = "TRUE|BUTTON1|LIST1|EDIT1|PROGRESS1|CHECK1|STATUS1"
rem If there is a title bar, use TRUE, otherwise FALSE...
gosub Mouseover Start
:Evloop
wait event,0.1
goto @event()
:Timer
gosub Mouseover Check
goto %%event
:BUTTON1MOUSEOVER
:LIST1MOUSEOVER
:EDIT1MOUSEOVER
:PROGRESS1MOUSEOVER
:CHECK1MOUSEOVER
:STATUS1MOUSEOVER
dialog set,status1,MOUSEOVER: %%Mouseover (%%event)
goto evloop
:MOUSEOUT
dialog set,status1,MOUSEOUT: Last mouseover: %%Lastmouseover
goto evloop
:BUTTON1BUTTON
info You pressed the button!
goto evloop
:Close
exit
rem Include this in all your scripts...
rem -----------------------------------
:Mouseover Start
list create,9
parse "%%Title",%%mouseover
%%Mouseover = @strdel(%%mouseover,1,@pos(|,%%mouseover))
if @equal(%%title,true)
%%title = 20
else
%%title = 0
end
repeat
list add,9,@substr(%%Mouseover,1,@pred(@pos(|,%%Mouseover)))
%%Mouseover = @strdel(%%mouseover,1,@pos(|,%%mouseover))
until @equal(@pos(|,%%Mouseover),0)
list add,9,%%mouseover
%z = 0
repeat
list put,9,@item(9,%z)|@dlgpos(@item(9,%z),L)|@fadd(@dlgpos(@item(9,%z),T),%%title)|@dlgpos(@item(9,%z),W)|@dlgpos(@item(9,%z),H)
%z = @succ(%z)
until @equal(%z,@count(9))
exit
:Mouseover Check
%z = 0
%%mousex = @mousepos(x)
%%mousey = @mousepos(y)
%%mouseover =
repeat
parse "%%elementn;%%elementl;%%elementt;%%elementw;%%elementh",@item(9,%z)
%%elementl = @fadd(%%elementl,@dlgpos(,L))
%%elementt = @fadd(%%elementt,@dlgpos(,T))
%%elementw = @fadd(%%elementw,%%elementl)
%%elementh = @fadd(%%elementh,%%elementt)
if @both(@greater(%%mousey,%%elementt),@greater(%%elementh,%%mousey))
if @both(@greater(%%mousex,%%elementl),@greater(%%elementw,%%mousex))
if @not(@equal(%%mouseover,%%elementn))
%%Mouseover = %%elementn
%%Lastmouseover = %%Mouseover
%%event = %%mouseover"MOUSEOVER"
%%firsttime = true
end
end
end
%z = @succ(%z)
until @equal(%z,@count(9))
if @both(@equal(%%mouseover,),@equal(%%firsttime,true))
%%firsttime = false
%%event = MOUSEOUT
end
if @equal(%%event,)
%%event = EVLOOP
end
exit |
|
|
Back to top |
|
|
cnodnarb Professional Member
Joined: 11 Sep 2002 Posts: 762 Location: Rockeledge, GA
|
Posted: Mon Dec 30, 2002 12:20 am Post subject: |
|
|
You right Skit, it is.
Code: |
OPTION DECIMALSEP,.
DIALOG CREATE,MOUSEOVER,-1,0,333,251
DIALOG ADD,BUTTON,BUTTON1,10,8,64,24,BUTTON1
DIALOG ADD,LIST,LIST1,38,8,314,144
DIALOG ADD,EDIT,EDIT1,10,76,246,19,EDIT1
DIALOG ADD,PROGRESS,PROGRESS1,186,8,314,24
DIALOG ADD,CHECK,CHECK1,214,10,64,18,CHECK1
DIALOG ADD,STATUS,STATUS1,STATUS1
DIALOG SHOW
%%Mouseover = BUTTON1|LIST1|EDIT1|PROGRESS1|CHECK1|STATUS1
gosub mouseover start
:evloop
wait event,0.1
goto @event()
:timer
gosub Mouseover Check
goto %%event
:button1button
info You pressed the button. Way to go.
goto evloop
:close
exit
:BUTTON1MOUSEOVER
:LIST1MOUSEOVER
:EDIT1MOUSEOVER
:PROGRESS1MOUSEOVER
:CHECK1MOUSEOVER
:STATUS1MOUSEOVER
dialog set,status1,MOUSEOVER: %%Mouseover (%%event)
goto evloop
:MOUSEOUT
dialog set,status1,MOUSEOUT: Last mouseover: %%Lastmouseover
goto evloop
rem----------------Include in all code------------------------------------
:mouseover start
list create,9
repeat
parse "%a;%b",%%mouseover
%%remainder = @substr(%%mouseover,@sum(@len(%a),2),@len(%%mouseover))
if @null(%a)
else
list add,9,%a|@winexists(@win(~%a))
%%mouseover = %%remainder
end
until @null(%a)
exit
:mouseover check
list seek,9,0
:mouseloop
parse "%a;%b",@item(9)
%%check = @winatpoint(@mousepos(X),@mousepos(Y))
if @equal(%%check,%b)
%%event = %amouseover
%%mouseover = %a
goto mousedone
end
if @equal(@pred(@count(9)),@index(9))
if @null(%%mouseover)
else
%%lastmouseover = %%mouseover
%%mouseover = ""
end
goto mousedone
else
list seek,9,@succ(@index(9))
goto mouseloop
end
:mousedone
if @null(%%mouseover)
%%event = mouseout
else
end
exit
|
NodNarb |
|
Back to top |
|
|
cnodnarb Professional Member
Joined: 11 Sep 2002 Posts: 762 Location: Rockeledge, GA
|
Posted: Mon Dec 30, 2002 4:08 am Post subject: |
|
|
Ok, so better becomes a matter of opinion. I benchmarked my example against Skits....out of 600 points possible Skits scored a 596 and mine scored a 594. My code is easier to understand (in my opinion) and is a little bit smaller, and does not require a boolean parameter for the title bar.
You'll have to decide for yourself which one is better
NodNarb
PS I also created a non-modular version which only scored a 595 on the benchmark.
PSS If someone could optimize my code to win out...it would be much appreciated LOL |
|
Back to top |
|
|
cnodnarb Professional Member
Joined: 11 Sep 2002 Posts: 762 Location: Rockeledge, GA
|
Posted: Mon Dec 30, 2002 4:22 am Post subject: |
|
|
Winds up those benchmarks where on mouseout only!
When you benchmark while mouseovering list1 results are as follows:
(Out of 600)
NodNarb Modular: 586
Skit Modular: 582
NodNarb Non-Modular: 582
Still a matter of opinion though
NodNarb |
|
Back to top |
|
|
Tommy Admin Team
Joined: 16 Nov 2002 Posts: 746 Location: The Netherlands
|
Posted: Mon Dec 30, 2002 4:28 am Post subject: |
|
|
NodNarb,
Despite of your feelings you expressed about VDS in our previous discussion I'll just say it
again: if you are seriously concerned about these numbers you should use something other
than VDS, probably preferably assembler language.
Just to reassure: you are free to post whatever you like, I'm just posting my opinion about
it.
Tommy |
|
Back to top |
|
|
cnodnarb Professional Member
Joined: 11 Sep 2002 Posts: 762 Location: Rockeledge, GA
|
Posted: Mon Dec 30, 2002 4:51 am Post subject: |
|
|
Yeah I know this is just a very basic (most likely very incorrect) benchmark.
Project Managers spend quite a bit of time and money on actually comparing applications before a big purchase or deciding on which solution is "better".
I agree with you on this Tommy; VDS is powerful, especially for GUI design, but as far as benchmarking is concerned it is completely inappropriate.
However, for fun here's what I did.
Part 1 of NodNarb's Bogus Benchmark
Add this after -> wait event,0.1 <- on each mouseover code
Code: |
%%benchcount = @succ(%%benchcount)
dialog set,edit1,%%benchcount
|
Part 2 of NodNarb's Bugus Benchmark
Here's the exe code I used, must be compiled and the VDS Window countaining the mouseover you want to bechmark must be the last active window before clicking on the exe file.
For mouseover of List1
Code: |
window send,visual dialogscript,@key(f9)
window click,mouseover,100,100
wait 60
window send,visual dialogscript,@ctrl(@key(f2))
|
For mouseout
Code: |
window send,visual dialogscript,@key(f9)
wait 60
window send,visual dialogscript,@ctrl(@key(f2))
|
My fault for adding the post "A Better MouseOver" to begin with, as "Better" is an extremely subjective word.
NodNarb |
|
Back to top |
|
|
Mac Professional Member
Joined: 08 Jul 2000 Posts: 1585 Location: Oklahoma USA
|
Posted: Mon Dec 30, 2002 6:52 am Post subject: |
|
|
LOL, I think someone has too much free time...
Cheers, Mac _________________ VDSug.dll does file IO, check/disable menu items,
non-VDS dlls, draw functions and more...
Free download (30k dll size) at:
http://www.vdsworld.com/download.php?id=361
|
|
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
|
|