Multi-Selection button problem
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 27/05/2011 at 11:41, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 12
Platform: Windows ;
Language(s) : C++ ;---------
Hi guys,I'm having trouble with Multi-Selection buttons returning the correct results.
I'm trying to get a print result only when the multi-button is changed to a specific option.Here is my code:
EXECUTIONRESULT MyTag::Execute(BaseTag *tag, BaseDocument *doc, BaseObject *op, BaseThread *bt, LONG priority, EXECUTIONFLAGS flags) { if (tag->GetData().GetBool(MYBOX)) // if the MYBOX checkbox attribute is enabled { GePrint("CheckBox is enabled"); // This Works fine } if (tag->GetData().GetLong(MULTIBUTTON, TWO)) // if the multi-button is set to this mode { GePrint("Option Two Selected"); //<--- This Does not work!! It always prints.. no matter what option is selected!! } return EXECUTIONRESULT_OK; }
Here is what's in my .res file:
CONTAINER Tmytag { NAME Tmytag; INCLUDE Texpression; INCLUDE Obase; GROUP ID_TAGPROPERTIES { COLUMNS 1; BOOL MYBOX { } GROUP { COLUMNS 1; LINK MY_LINK { ACCEPT { Obase; } REFUSE { Osky; Oforeground; } } SEPARATOR { LINE; } BUTTON BUTTON1 {} BUTTON BUTTON2 {} //BUTTON BUTTON2 {HIDDEN;} //Use this to hide the button if desired SEPARATOR { LINE; } REAL MYSLIDER { UNIT PERCENT; MIN 0.0; MAX 100.0; MINSLIDER 0.0; MAXSLIDER 10000.0; CUSTOMGUI REALSLIDER; } REAL MYNUMERIC {MIN 0.0; MAX 100.0; STEP 1;} //STEP controls the amount the values increase using the arrows STRING MYTEXTBOX {ANIM OFF; } //ANIM OFF hides the set key option from the user LONG MULTIBUTTON { CYCLE { ONE; TWO; } } } } }
Can anyone tell me what I'm doing wrong?
-ScottA
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 27/05/2011 at 12:36, xxxxxxxx wrote:
That's not how the BaseContainer works.
if (tag->GetData().GetLong(MULTIBUTTON) == TWO) ....
The second argument in the BaseContainer GetXXX() methods is a default value if the container ID has not been set.
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 27/05/2011 at 13:18, xxxxxxxx wrote:
Thanks .
-ScottA
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 23/09/2011 at 13:32, xxxxxxxx wrote:
Hey Guys,
I'm trying to do this with a Combo Button and a dialog now. But I can't figure out what it needs.
Bool myDialog::Command(LONG id,const BaseContainer &msg) { switch (id) { case MY_BUTTON: GePrint("Button Was Pressed"); //Works break; case MY_CHECKBOX: GePrint("CHKBox was Toggled"); //Works break; case MY_COMBOBUTTON == SECOND_CHILD: GePrint("Second Option Selected");//Does Not Work! break; } return TRUE; }
If I use: case MY_COMBOBUTTON it works. But of course it always returns the print method. No matter which child option I select. Which is bad.
How do I get the child options of a ComboButton to return my print method if I only select a specific child?-ScottA
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 24/09/2011 at 09:57, xxxxxxxx wrote:
Never mind.
I think I've managed to figure it out... At least one way anyway.Bool myDialog::Command(LONG id,const BaseContainer &msg) { LONG second = msg.GetLong(BFM_ACTION_VALUE); //Assigns an action to a variable switch (id) { case MY_BUTTON: GePrint("Button Was Pressed"); break; case MY_CHECKBOX: GePrint("CHKBox was Toggled"); break; case MY_COMBOBUTTON: if(second == SECOND_CHILD) GePrint("Second Option Selected"); break; } return TRUE; }
This was NOT obvious at all.
Luckily the AsyncTest dialog plugin example in the SDK uses a Combo Button in it. And I was able to track down how it was working.
I never would have been able to figure this out from the docs.-ScottA