Вопрос

I am currently trying to disable the selectable / editable / or change the textInput to dynamic to get my desired result.

I've got a custom datagrid with dropdowns and text input areas. However, if there is no data in my Model # column, I do not want to allow for any entry in the corresponding PurchasePrice cell.

col1 = new DataGridColumn("Model");
    col1.headerText = "Model #";
    c2.consumables_dg.addColumn(col1);
    col1.width = 60;
    col1.editable = false;
    col1.sortable = false;
    col1.cellRenderer = AlternatingRowColors_editNum_PurchasePrice;
col1 = new DataGridColumn("PurchasePrice");
    col1.headerText = "Purchase Price";
    c2.consumables_dg.addColumn(col1);
    col1.width = 60;
    col1.editable = false;
    col1.sortable = false;
    col1.cellRenderer = AlternatingRowColors_editNum_PurchasePrice;

I've tried various items in the AlternatingRowColors_editNum_PurchasePrice, but nothing seems to work as of yet. Please Look at what I've tried in my else statement of the if(__enbaled)

package{
    import flash.text.TextFormat;
    import flash.text.TextFormatAlign;
    import fl.controls.TextInput;
    import flash.text.TextFieldType;
    import flash.events.Event;
    import fl.controls.listClasses.ListData;
    import fl.controls.listClasses.ICellRenderer;

public class AlternatingRowColors_editNum_PurchasePrice extends TextInput implements ICellRenderer
{
    protected var _data:Object;
    protected var _listData:ListData;
    protected var _selected:Boolean;
    private var __enabled:Boolean = false;
    public static var _stage;
    public static var _alignment;
    private var tf:TextFormat;

    public function AlternatingRowColors_editNum_PurchasePrice()
    {
        tf = new TextFormat();
        if(__enabled){
                if(_alignment == 2){
                    tf.align = TextFormatAlign.RIGHT;
                }else if(_alignment == 1){
                    tf.align = TextFormatAlign.CENTER;
                }else{
                    tf.align = TextFormatAlign.LEFT;
                }
            restrict = "0-9.";
            addEventListener(Event.CHANGE, textChange);

        }else{
            //this.selectable = false; // did not work
            //textField.selectable = false; // did not work
            //textField.type = dynamic; // did not work
            //textField.type = TextFieldType.DYNAMIC; // did not work
            //this.mouseEnabled = false; // did not work
            //this.tabEnabled = false; // did not work
            //textField.mouseEnabled = false; // did not work
            //textField.tabEnabled = false; // did not work
            //selectable = false; // did not work
            //this.selectable = false; // did not work
            //_enabled = false; // did not work
            //-----------------------------------------------------------
            //   *** Corresponding Entry to enable was placed above ***
            //-----------------------------------------------------------
        }
        super();
    }

    public function textChange(Event):void{
        //trace(_data.Discount);
        _data.PurchasePrice = text;
    }

    public function get data():Object
    {
        return _data;
    }

    public function set data(value:Object):void
    {
        _data = value;
        text = value.PurchasePrice;

        if(value.Model != "") __enabled = true;

        if (value.id % 2 == 0) {
            setStyle("upSkin", AlternateColor1 );
        } else {
            setStyle("upSkin", AlternateColor2 );
        }
    }

    public function get listData():ListData
    {
        return _listData;
    }

    public function set listData(value:ListData):void
    {
        _listData = value;
    }

    public function get selected():Boolean
    {
        return _selected;
    }

    public function set selected(value:Boolean):void
    {
        _selected = value;
    }

    public function setMouseState(state:String):void
    {
    }
    override protected function drawLayout():void
    {
        textField.setTextFormat(tf);
        super.drawLayout();
    }

}
}

Am I just approaching this the wrong way? Instead of trying to stop the mouse, tab, or convert the text field to dynamic, should I be attempting something else in order to get the desired result?

Thanks, jc

Это было полезно?

Решение

The easiest approach is to change the TextField type itself and then change it's selectable property:

//disable input
tf.selectable = false;
tf.type = TextFieldType.DYNAMIC;

//enable input
tf.selectable = true;
tf.type = TextFieldType.INPUT;

Also don't forget to set the mouseEnabled & tabEnabled properties as appropriate/needed for your fields.

Другие советы

Be sure to import the TextFieldType at the top of your class / page / frame as:

import flash.text.TextFieldType;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top