PDA

View Full Version : activeX tabs question - update, refresh??


Polimeno
01-20-2009, 06:47 PM
i have two activeX tabs, ONE and TWO

each one has a pickbutton inside a subrollout

when i pick an object, the pickbutton display the name and works properly like i want, but when i move back and forth by clicking the tabs, the names are gone.....and i guess their still maintain the objects....and properties....

and i set the rightclick to clean all the properties....


someone can tell me how i set a function to update the view and leave the button working fine ??

my test :


--test polimeno ACTIVE X

rollout Rol_1 "test 1"
(
---------------
------ Ui ------
---------------
group "1"
(
pickbutton pbt "" offset:[0,0] tooltip:"pick point yellow"
) --end of group

---------------
-- Handlers ---
---------------

on pbt picked obj do
(
p1Obj = obj
if p1Obj != undefined
then
(
PtPick = obj
pbt.text = obj.name
flashNodes #(PtPick)
forceCompleteredraw()
global ptP_ = pbt.object
print (ptPick)
print (theClass)
print (pt_1)
print (theCategory)
print (ptP_)
)
else
(
obj = undefined
ptP_ = undefined
pbt.text = ""
print (obj)
print (ptP_)
)
)

on pbt rightclick do
(
clearListener ()
pbt.object = undefined
ptP_ = undefined
pbt.text = ""
print ("clear...1")
clearselection ()
)
)--end rollout

rollout Rol_2 "test 2"
(
---------------
------ Ui ------
---------------
group "2"
(
pickbutton p2 "" offset:[0,0] tooltip:"pick obj 2"
)--end of group

---------------
-- Handlers ---
---------------

on p2 picked obj do
(
if obj != undefined
then
(
PtPick2 = obj
p2.text = obj.name
flashNodes #(PtPick2)
forceCompleteredraw()
global ptP_2 = p2.object
print (ptPick2)
print (ptP_2)
)
else
(
obj = undefined
ptP_2 = undefined
p2.text = ""
print (obj)
print (ptP_2)
)
)

on p2 rightclick do
(
POBJ = p2.object
print (POBJ)
p2.text = POBJ.name as string
)
)--end rollout

---------------
-- UI activeX --
---------------

rollout taX "Active X test"
(
activeXcontrol acx_tabs "MSComctlLib.TabStrip.2" height:20
subRollout mySubRol "" height: (taX.height - 45)

on acx_tabs Click do
(
IndexTabs_ = acx_tabs.SelectedItem.index
case IndexTabs_ of
(
1:
(
removeSubRollout mySubRol Rol_2
addSubRollout mySubRol Rol_1
acx_tabs.tabs[1].HighLighted = true
acx_tabs.tabs[2].HighLighted = false
)
2:
(
removeSubRollout mySubRol Rol_1
addSubRollout mySubRol Rol_2
acx_tabs.tabs[1].HighLighted = false
acx_tabs.tabs[2].HighLighted = true
)
)
)-- end rollout

---------------
-- Handler X --
---------------

on taX open do

(
acx_tabs.tabs[1].caption = "ONE"
acx_tabs.tabs.add pvCaption:"TWO"
addSubRollout mySubRol Rol_1
)--end rollout

)--end
createDialog taX 360 640


thanks.

ZeBoxx2
01-20-2009, 08:13 PM
add this to the rollout definition (change the rollout and pickbutton name for the 2nd rollout, of course):


on Rol_1 open do (
if (isValidNode pbt.object) then (
pbt.text = pbt.object.name
)
)


That basically causes the pickbutton's label to be re-set to that of the picked object when the rollout (re-)opens. The button's behavior stays the same.

By the way, instead of using 'pbt.text = obj.name' in the 'on pbt picked obj' event, add "autoDisplay:true" to the pickbutton definition's line. That will have the same effect :)

Polimeno
01-21-2009, 09:44 PM
yes !
thanks man,
now its working !!

test code:


rollout Rol_1 "test 1"
(
---------------
------ Ui ------
---------------
group "1"
(
pickbutton pbt "" offset:[0,0] tooltip:"pick obj" autoDisplay:on
) --end of group

---------------
-- Handlers ---
---------------

on pbt picked obj do
(
pObj = obj
if pObj != undefined do
(
PtPick = obj
global ptP_ = pbt.object
print (ptP_)
)
)

on pbt rightclick do
(
clearListener ()
pbt.object = undefined
ptP_ = undefined
pbt.text = ""
print ("clear...")
)

on Rol_1 open do
(
if (isValidNode ptP_) then
(
pbt.text = ptP_.name
)
)

)--end rollout

---------------
-- UI activeX --
---------------


rollout taX "Active X test"
(
activeXcontrol acx_tabs "MSComctlLib.TabStrip.2" height:10
subRollout mySubRol "" height: (taX.height - 100)

on acx_tabs Click do
(
IndexTabs_ = acx_tabs.SelectedItem.index
case IndexTabs_ of
(
1:
(
removeSubRollout mySubRol Rol_2
addSubRollout mySubRol Rol_1
acx_tabs.tabs[1].HighLighted = true
acx_tabs.tabs[2].HighLighted = false
)
2:
(
removeSubRollout mySubRol Rol_1
addSubRollout mySubRol Rol_2
acx_tabs.tabs[1].HighLighted = false
acx_tabs.tabs[2].HighLighted = true
)
)
)-- end rollout

---------------
-- Handler X --
---------------

on taX open do

(
acx_tabs.tabs[1].caption = "ONE"
acx_tabs.tabs.add pvCaption:"TWO"
addSubRollout mySubRol Rol_1
)--end rollout

)--end
createDialog taX 360 640



but now i have another question :

is it possible to use the function "#style resize" on the dialog with some variable to maintain all the stuffs inside with the original offset ?

e.g.
button.pos.x = floater.borderLeft / 2
activeX.size = floater.size

ZeBoxx2
01-21-2009, 10:01 PM
to an extent, yes... you can:
- get/set the size of rollouts
- get/set the positions of controls
- get the size of only several controls (not all)
- set the size of even fewer controls

so, for example, you could use...
[code]
on tax resized sz do (
mySubRol.width = sz.x - 16
mySubRol.height = sz.y - 16
)
[code]
to keep the subrollout somewhat sized to the dialog - but the rollouts within will be stuck in size (have to re-add). Similarly, you can't set the size of acx_tabs.

If you need things to work smoothly in that respect, now would be a good time to ponder moving over to .NET (ActiveX isn't supported much anymore anyway)... or a least checking whether you really need the (sub)rollouts.

Polimeno
01-22-2009, 02:06 AM
got that Richard,
thanks a lot for your explanation.

please,
can you show me a little test code with .NET with something similar on this topic ?

ZeBoxx2
01-22-2009, 02:32 AM
I would, but there's several great threads on the topic of .NET tabs, switching UIs based on them, etc. already - perform a search for "dotnet tab" (sans quotes). Start at the bottom-most results, work your way up to the top (where the threads get into more advanced topics).

Polimeno
01-22-2009, 04:02 PM
I would, but there's several great threads on the topic of .NET tabs, switching UIs based on them, etc. already - perform a search for "dotnet tab" (sans quotes). Start at the bottom-most results, work your way up to the top (where the threads get into more advanced topics).

thanks, im doing it right now.


after a while looking in some threads i got this :


try(destroyDialog theRollout)catch()

rollout myRol "Testing .NET" width:200
(
dotNetControl dnc "system.windows.forms.tabcontrol" height:200

fn DNET theTabs =
(
t1 = dotNetObject "System.Windows.Forms.TabPage" "One"
t2 = dotNetObject "System.Windows.Forms.TabPage" "Two"

dnc.controls.add (t1)
dnc.controls.add (t2)

)

on myRol open do
(
DNET dnc
)

)
createDialog myRol



*EDIT:

DotNet
http://msdn2.microsoft.com/en-us/library/system.windows.forms.aspx

CGTalk Moderation
01-22-2009, 04:02 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.