hello group.
using flex 1.5, i want to make a 3 state checkbox so i have extended a
button to do this.
on this button i have added a new property named : checkState.
please see the code below for my 2 files.
i know there is a better way (much more elegant) with the use of
get/set to make a custom property.
i just dont know how to use them getter-setter.
could you, PLEASE, take a look at my code and tell me how is this done
with get/set?

mxml file:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml";
xmlns:myComponents="myComponents.*" backgroundColor="#0066CC">

<mx:Panel width="50%" height="90%" verticalAlign="middle"
horizontalAlign="center">
        <mx:Button label="check state" click="textA.text+=' ..state:
'+myBtn.checkState;" />
        <mx:RadioButton label="semi" click="myBtn.checkState = 'semi';
myBtn.dispatchEvent({type:'stateUpdate'})" />
        <mx:RadioButton label="true" click="myBtn.checkState = 'true';
myBtn.dispatchEvent({type:'stateUpdate'})" />
        <mx:RadioButton label="false" click="myBtn.checkState = 'false';
myBtn.dispatchEvent({type:'stateUpdate'})" />
        <mx:Spacer height="30" />
        <myComponents:tri_state id="myBtn" checkState="true"
useHandCursor="true"/>
        <myComponents:tri_state id="myBtn1" useHandCursor="true"/>
        <myComponents:tri_state id="myBtn2" checkState="false"
useHandCursor="true"/>
        <mx:TextArea width="80%" height="100%" backgroundColor="#CCCCCC"
id="textA" />
</mx:Panel>
</mx:Application>


The tri_state.as :
class myComponents.tri_state extends mx.controls.Button {
        
        public var checkState:String;
        
        [Embed(source="images/3state_true.png")]
        public var state_true:String;
        [Embed(source="images/3state_semi.png")]
        public var state_semi:String;
        [Embed(source="images/3state_false.png")]
        public var state_false:String;
        
        public function tri_state(checkState:String){
                setStyle("horizontalGap",0);
                setStyle("borderStyle","solid");
                width = 12;
                height = 12;
                addEventListener("click", this);
                addEventListener("initialize", this);
                addEventListener("stateUpdate", this);
        }
        
        private function stateUpdate(event:Object):Void{
                if (checkState == "true")icon = state_true;
else if (checkState == "semi")icon = state_semi;
else icon = state_false;
        }
        
        private function initialize(event: Object) : Void {
                //mx.core.Application.alert(""+semi);
                stateUpdate();          
        }
        
        private function click(event: Object) : Void {
                if(checkState == "false"){
                        icon = state_semi;
                        checkState = "semi";
                }else if(checkState == "true"){
                        icon = state_false;
                        checkState = "false";
                }else if(checkState=="semi"){
                        icon = state_true;
                        checkState = "true";
                }
        }







--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/flexcoders/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Reply via email to