Проблема с фокусировкой - кнопка не сфокусирована - PullRequest
1 голос
/ 10 августа 2011

Когда я нажимаю кнопку * OK в окне предупреждения, я хочу, чтобы txtOther.textbox был в фокусе. Здесь текстовое поле фокусируется, когда отображается окно предупреждения, и когда я нажимаю кнопку OK текстового поля, txtOther.textbox не в фокусе.

MXML SCRIPT:

<mx:Canvas id ="parentCanvas1" label="General" >
<mx:VBox id="parentBox1">
<mx:Canvas id="cvsGeneral"> 
<mx:TextInput id="txtOther" focusOut="txtOther_Validate();"/>
</mx:Canvas>
</mx:VBox>                              
</mx:Canvas>

<mx:Canvas id="parentCanvas2" >
<mx:HBox id="parentBox2" >
<mx:Button label="Save" id="btnSave" click="txtOther_Validate();" />
</mx:HBox>
</mx:Canvas>

////////////Action script////////////////////
public function txtOther_Validate(): void {     
     // here lets assume that the result variable is stored as "FAILURE"     
    if(result == "FAILURE"){  
        Alert.show("Please enter a valid Format Mask.");        
         txtOther.setFocus(); //   
         } 
}

Здесь, даже когда отображается окно предупреждения, также устанавливается фокус txtother.textbox. Но после нажатия кнопки «ОК» оповещения Фокус поля TxtOther.text не устанавливается. Поэтому здесь я хочу вызвать событие foccus после нажатия кнопки ОК в окне предупреждения, а не до. Как это сделать ...

Ответы [ 2 ]

1 голос
/ 12 августа 2011

Когда вы вызываете Alert.show (), сохраняйте возвращаемый экземпляр Alert в переменной.Для этой переменной настройте прослушиватель событий, который будет прослушивать ваше пользовательское событие.Цель обработчика для этого события - установить фокус на txtOther

Вот некоторые фрагменты кода:

private var alert:Alert = Alert.show(blah);

alert.addEventListener(mx.events.FlexEvent.REMOVE, removeHandler, false, 0, true);

private function removeHandler(event:FlexEvent):void
{
    txtOther.setFocus();
}
0 голосов
/ 19 августа 2011

Instad нормального оповещения. Я поставил оповещение вот так

Alert.show("Please enter a valid Format Mask.", "Validation Error", Alert.OK, this, alrt_close);

, а затем обработал событие оповещения с помощью

private function alrt_close(evt:CloseEvent):void {
    txtOther.setFocus(); 

. Это сработало для меня.

...