2009-05-12 8 views
0

Ich habe folgende MXML:Wie lege ich eine Fokuseigenschaft auf ein TextInput fest, das mit AddChild erstellt wird?

<mx:State name="myState"> 
    <mx:AddChild relativeTo="{myhbox}" position="after"> 
     <mx:Box verticalAlign="middle" horizontalAlign="center" width="100%" height="100%"> 
      <mx:Form id="myForm" width="479" verticalScrollPolicy="off" horizontalScrollPolicy="off"> 
       <mx:FormItem label="My Label:" fontWeight="bold" id="myLabel" direction="vertical"> 
        <mx:TextInput id="myTextInput" width="282" /> 
         <mx:HBox> 
          <mx:Button label="Go" click="go();" id="goButton" /> 
         </mx:HBox> 
       </mx:FormItem> 
      </mx:Form> 
     </mx:Box> 
    </mx:AddChild> 
</mx:State> 

Wie kann ich auf dem < mx mit TextInput- Feld konzentrieren: SetProperty/>? Ich habe folgendes versucht, aber es ergibt sich nur im Bereich hervorgehoben wird - der Cursor nicht in der TextInput- erscheint:

<mx:SetProperty target="{stage}" name="focus" value="{myTextInput}"/> 

Lange Rede kurzer Sinn, ich der Cursor auf dem Feld erscheinen soll.

UPDATE: Ich habe es herausgefunden. Siehe Kommentare zur Lösung.

+0

ich es herausgefunden. Ich fügte ein "creationComplete" zum TextInput hinzu und ließ es eine Methode aufrufen, die SetFocus auf dem TextInput. – Huuuze

Antwort

1

eine „creation“ an dem TextInput- und hatte nennt es eine Methode, die setFocus auf dem TextInput-

1

Ich versuche, die Verwendung des AddChild state-Tags zu vermeiden. Es ist normalerweise besser, all das in eine Komponente zu stellen und SetProperty zu verwenden, um visible und includeInLayout festzulegen, wenn es angezeigt werden soll.

Sie können in Ihrer benutzerdefinierten Komponente immer überschreiben, um den Fokus auf das Feld zu setzen. Oder erstellen Sie einen benutzerdefinierten Setter als machte das Gleiche

public function set show(value:Boolean):void 
{ 
    visible = true; 
    includeInLayout = true; 
    if (value) 
    myFunctionThatSetsTheFocus(); 
}