الان ساعت 4:18 صبحه ،این اخرین کدی هست که درست کردم.خیلی کارم به این فایل گیره.
الان 3 تا مشکل دارم.
1.وقتی که جهت بالا و پایین رو می زنی ،می تونی از لیست انتخاب کنی ، اما چکار کنم که اینتر زده میشه آیتم مورد نظر انتخاب بشه.
2. وقتی که آیتم رو انتخاب می کنی ،فوکس از روی تکس برداشته می شه که باید با موس کلبک کنیم رو تکس تا دوباره بتونیم بنویسیم .
3 . چرا وقتی لیست رو visible رو false می کنیم با یه لیست خالی هست؟
[PHPS]import fl.data.DataProvider;import fl.controls.TextInput;
import fl.controls.dataGridClasses.HeaderRenderer;
import fl.controls.DataGrid;
import fl.controls.dataGridClasses.DataGridColumn;
import fl.text.TLFTextField;
import flash.text.TextFieldType;
import fl.controls.List;
import flash.geom.Rectangle;
import flashx.textLayout.formats.Direction;
import fl.events.ListEvent;
flashx.textLayout.formats.Direction;
var dp
ataProvider = new DataProvider();
dp.addItem({label:"لللل", price:"للل"});
dp.addItem({label:"مهدي", price:"مهدي"});
dp.addItem({label:"حسين", price:"حسين"});
dp.addItem({label:"لللل", price:"للل"});
dp.addItem({label:"مهدي", price:"مهدي"});
dp.addItem({label:"حسين", price:"حسين"});
var fmt2:TextFormat = new TextFormat();
fmt2.size = "11";
fmt2.color = "0x000000";
fmt2.align = TextFormatAlign.RIGHT;
var _search:TLFTextField = new TLFTextField();
_search.width = 400;
_search.type = TextFieldType.INPUT;
_search.border = true;
_search.direction = Direction.RTL;
_search.setTextFormat(fmt2);
addChild(_search);
_search.addEventListener(Event.CHANGE, changeHandler);
_search.addEventListener(KeyboardEvent.KEY_DOWN, onKeyBoardDown);
var rect:Rectangle;
var codeHint:List = new List();
var str:String;
//-------------------------------
addd();
function addd(){
codeHint.dataProvider = dp;
codeHint.sortItemsOn("label");
codeHint.addEventListener(ListEvent.ITEM_CLICK , PlaceText);
codeHint.addEventListener(Event.CHANGE, showData);
function showData(event:Event) {
lll.text = event.target.selectedItem.label;
}
codeHint.setRendererStyle("textFormat", fmt2);
addChild(codeHint);
codeHint.visible = false;
}
function ReturnRect():Rectangle
{
return _search.getCharBoundaries(_search.caretIndex);
}
//-------------------------------
function rex(){
rect = ReturnRect();
trace(rect)
codeHint.move(rect.bottomRight.x-codeHint.width , rect.bottomRight.y);
}
//-------------------------------
function changeHandler(e:Event)
{
var ar:Array = dp.toArray();
str = _search.text;
if (str.lastIndexOf(" ") != -1)
{
str = str.slice(str.lastIndexOf(" ") + 1,str.length);
}
trace(str);
var ar2 = ar.filter(filter);
codeHint.dataProvider = new DataProvider(ar2);
}
//-------------------------------
function filter(obj:Object, idx:int, arr:Array):Boolean
{
var searchTerm:String = str;
var Str:String = obj.label;
if (Str.search(searchTerm) >= 0)
{
trace("---------------")
codeHint.visible = true;
rex();
return true;
}
return false;
}
//-------------------------------
function PlaceText(e:ListEvent)
{
var word:String = e.target.getItemAt(e.rowIndex ).label;
word = word.split(str).join(""); // جدا سازی
_search.replaceSelectedText(word);
_search.setTextFormat(fmt2);
codeHint.visible = false;
}
//-------------------------------
function onKeyBoardDown(e:KeyboardEvent):void
{
switch (e.keyCode)
{
case Keyboard.DOWN :
codeHint.selectedIndex++;
codeHint.scrollToSelected();
break;
case Keyboard.UP :
codeHint.selectedIndex--;
codeHint.scrollToSelected();
break;
case Keyboard.ENTER :
break;
}
}
[/PHPS]