flex 实现sql语句关键字高亮显示

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
minWidth="955"
minHeight="600" xmlns:local="*">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;

[Bindable]
public var keyArray:ArrayCollection=new ArrayCollection(["AS", "SELECT", "FROM", "WHERE", "AND", "OR"]);
]]>
</mx:Script>
<local:HighlightKeywordTextArea width="500"
height="300"
keyColor="red"
keyArray="{keyArray}"
text="select name as 姓名 from user_info where id='key'">

</local:HighlightKeywordTextArea>
</mx:Application>



<?xml version="1.0" encoding="utf-8"?>
<mx:TextArea xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="textarea_creationCompleteHandler(event)">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.controls.textClasses.TextRange;
import mx.events.FlexEvent;
[Bindable]
public var keyArray:ArrayCollection;

[Bindable]
public var keyColor:String="red";

private var tr:TextRange;

private var crlf:String=String.fromCharCode(13);

private var regEx:RegExp=new RegExp(crlf, "g");

private function setKeyColor(num:int, key:String):void
{
var text:String=this.text.toUpperCase().replace(regEx, " ");
var str:String=text.substr(num, text.length);
var strArray:Array=str.split(" ");
var keyIndex:int=strArray.indexOf(key);

if (keyIndex != -1)
{
if (keyIndex != 0)
{
for (var i:int; i < keyIndex; i++)
{
num+=(strArray[i] as String).length + 1;
}
}

var length:int=key.length;
tr=new TextRange(this, false, num, num + length);
tr.color=keyColor;

num+=(length + 1);

if (num < text.length)
{
setKeyColor(num, key);
}
}
}

private function addTextRange():void
{
try
{
tr=new TextRange(this);
tr.color="black";
tr.textDecoration="normal";
tr.fontSize=20;
for each (var key:String in keyArray)
{
setKeyColor(0, key);
}

}
catch (err:RangeError)
{

}
}

private function textArea_change(evt:Event):void
{

addTextRange();
}

protected function textarea_creationCompleteHandler(event:FlexEvent):void
{
addTextRange();
}
]]>
</mx:Script>
</mx:TextArea>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值