2


0

私はFlexでシンプルな「スマート」テキストボックスコンポーネントを作成しようとしています。その中にあるすべてのテキストを選択するように強制するためにコンポーネントの外側で使用できる関数が必要です。

私の `SmartTextbox.mxml`の中に:

パブリック関数selectAll():void {th​​is.setSelection(0、this.length); }

私はこのように、テキストボックスがフォーカスを得たときにもこの関数を使います。

プライベート関数onTextInput_focusIn(event:Event):void {selectAll();}; }

後のもの、focusInイベントで、働いています。 しかし、私が外部から関数を呼び出そうとすると、

texInputQuickSearchがSmartTextBoxコンポーネントである他のコンポーネント内。

if(searchModule.currentState == SearchModule.STATE_SEARCH){doSearch(); searchModule.textInputQuickSearch.selectAll(); }

テキストは再選択されません。

どうしてこんな風に動くの?

2 Answer


1


あなたはこれと同じような何かをする必要があります…​

AS3:

import mx.core.UITextField;

プライベート関数initializeHandler(event:Event):void {

var ti:TextInput = event.currentTarget as TextInput; var tf:UITextField = ti.mx_internal :: getTextField();

tf.alwaysShowSelection = true;

ti.setFocus(); }

プライベート関数setSelection(start:int、end:int):void {

txtName.selectionBeginIndex = start; txtName.selectionEndIndex = end;

}

MXML:



0


私の最初の推測は、あなたがそれを期待するときあなたの条件文がTRUEに評価されていないということでしょう。 多分それはあなたの質問のタイプミスですがあなたは持っています:

大文字の「S」のSearchModuleと比較した、小文字の「s」のsearchModule

もしあなたがFlex Builderや他のデバッグ環境を使用していないのであれば、私はそれをトレースまたはこのような本当のコードブロックの中の何かでテストするでしょう(これはFLASH IDEの中から実行できます)

if(searchModule.currentState == SearchModule.STATE_SEARCH){trace( "ここにしました...私はいます"; doSearch(); searchModule.textInputQuickSearch.selectAll(); trace( "あなたはそれが選択されているのを見たはずです!"); }

両方の出力が印刷されていることを確認してください。 もしそうなら、あなたは少なくともdoSearch()が動かなくなっていないことを知っています。