Archive for the ‘Codes’ Category.
Below you can find examples of SQL statements(SELECT, INSERT, UPDATE, DELETE).
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
creationComplete="init()" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
private var sqlConn:SQLConnection;
private var sqlFile:File;
private var categories:ArrayCollection;
private function init():void
{
sqlFile = File.applicationStorageDirectory.resolvePath("DBSample.db");
sqlConn = new SQLConnection();
sqlConn.open(sqlFile, SQLMode.CREATE);
}
private function createCategories():void
{
var stmt:SQLStatement = new SQLStatement();
stmt.sqlConnection = sqlConn;
stmt.text = "CREATE TABLE IF NOT EXISTS categories(" +
"categoryid INTEGER PRIMARY KEY AUTOINCREMENT," +
"name TEXT)";
stmt.execute();
var result:SQLResult = stmt.getResult();
categories = new ArrayCollection(result.data);
}
private function getCategories():void
{
var stmt:SQLStatement = new SQLStatement();
stmt.sqlConnection = sqlConn;
stmt.text = "SELECT * FROM categories ORDER BY categoryid DESC";
stmt.execute();
var result:SQLResult = stmt.getResult();
}
private function addCategory(value:String):void
{
var stmt:SQLStatement = new SQLStatement();
stmt.sqlConnection = sqlConn;
stmt.text = "INSERT INTO categories " +
"(name) VALUES (:name)";
stmt.parameters[":name"] = value;
stmt.text = "INSERT INTO categories " +
"(name) VALUES ('"+value+"')";
stmt.execute();
var result:SQLResult = stmt.getResult();
}
private function updateCategory(name:String, categoryid:int):void
{
var stmt:SQLStatement = new SQLStatement();
stmt.sqlConnection = sqlConn;
stmt.text = "UPDATE categories " +
"SET name='"+name+"'" +
"WHERE " +
"categoryid='"+categoryid+"'";
stmt.execute();
var result:SQLResult = stmt.getResult();
getCategories();
}
private function removeCategory(categoryid:int):void
{
var stmt:SQLStatement = new SQLStatement();
stmt.sqlConnection = sqlConn;
stmt.text = "DELETE FROM categories WHERE categoryid=:categoryid";
stmt.parameters[":categoryid"] = categoryid;
stmt.text = "DELETE FROM categories WHERE categoryid='"+categoryid+"'";
stmt.execute();
var result:SQLResult = stmt.getResult();
getCategories();
}
]]>
</mx:Script>
</mx:WindowedApplication>
This example shows you how to customize selection boxes in a Flex TileList. Marc’s original post Customizing TileList selection explains which methods you need to override, Thanks Marc.

main.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
xmlns:comps="comps.*" viewSourceURL="srcview/index.html">
<comps:CardTileList itemRenderer="ir.Card" width="479" height="371">
<comps:dataProvider>
<mx:ArrayCollection>
<mx:source>
<mx:Object label="2A" data="2a"/>
<mx:Object label="2B" data="2b"/>
<mx:Object label="2C" data="2c"/>
</mx:source>
</mx:ArrayCollection>
</comps:dataProvider>
</comps:CardTileList>
</mx:Application>
comps/CardTileList.as
package comps
{
import flash.display.Graphics;
import flash.display.Sprite;
import mx.controls.TileList;
import mx.controls.listClasses.IListItemRenderer;
public class CardTileList extends TileList
{
public function CardTileList()
{
super();
}
override protected function drawSelectionIndicator(indicator:Sprite,
x:Number,
y:Number,
width:Number,
height:Number,
color:uint,
itemRenderer:IListItemRenderer):void
{
var g:Graphics = indicator.graphics;
g.clear();
g.beginFill(0x009dff);
g.lineStyle(2, 0x6e7c9d);
g.drawRoundRect(x+(itemRenderer.width-150)/2, y, 150, height, 34, 34);
g.endFill();
}
override protected function drawHighlightIndicator(indicator:Sprite,
x:Number,
y:Number,
width:Number,
height:Number,
color:uint,
itemRenderer:IListItemRenderer):void
{
var g:Graphics = indicator.graphics;
g.clear();
g.beginFill(0x009dff);
g.lineStyle(2, 0x6e7c9d);
g.drawRoundRect(x+(itemRenderer.width-150)/2, y, 150, height, 34, 34);
g.endFill();
}
}
}

The Application:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
creationComplete="init()"
xmlns:controls="com.mariosh.controls.*" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
private var ac:ArrayCollection;
private function init():void
{
ac = new ArrayCollection();
for(var i:int=0; i<30; i++)
{
var item:Object = new Object();
item.label = "item " + i;
ac.addItem(item);
}
}
]]>
</mx:Script>
<controls:BasicList
x="10"
y="10"
width="100"
height="200"
dataProvider="{ac}"
verticalScrollPolicy="off"/>
</mx:Application>
BasicList.as
package com.mariosh.controls
{
import flash.events.Event;
import mx.controls.List;
public class BasicList extends List
{
private var scrollbar:ScrollBar;
public function BasicList()
{
super();
}
override protected function createChildren():void
{
super.createChildren();
if(!scrollbar)
{
scrollbar = new ScrollBar();
scrollbar.addEventListener(Event.CHANGE, thumbChange);
addChild(scrollbar);
}
}
private function thumbChange(event:Event):void
{
var listIndex:int = scrollbar.scrollPercentage *(this.dataProvider.length - 9);
this.verticalScrollPosition = listIndex;
}
override protected function commitProperties():void
{
super.commitProperties();
scrollbar.width = 10;
scrollbar.height = this.height;
this.verticalScrollPosition = 10;
}
override protected function updateDisplayList(uW:Number, uH:Number):void
{
super.updateDisplayList(uW, uH);
scrollbar.move(uW-scrollbar.width, 0);
}
}
}
ScrollBar.as
package com.mariosh.controls
{
import flash.events.Event;
import flash.events.MouseEvent;
import mx.core.UIComponent;
[Event(name="change", type="flash.events.Event")]
public class ScrollBar extends UIComponent
{
private var track:Track;
private var thumb:Thumb;
private var _yOffset:Number;
private var _yMin:Number = 0;
private var _yMax:Number;
public function ScrollBar()
{
super();
}
private function thumbDown(event:MouseEvent):void
{
stage.addEventListener(MouseEvent.MOUSE_MOVE, thumbMove);
stage.addEventListener(MouseEvent.MOUSE_UP, thumbUp);
_yOffset = this.mouseY - thumb.y;
}
private function thumbUp(event:MouseEvent):void
{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, thumbMove);
stage.removeEventListener(MouseEvent.MOUSE_UP, thumbUp);
}
private function thumbMove(event:MouseEvent):void
{
thumb.y = this.mouseY - _yOffset;
if(thumb.y <= _yMin)
thumb.y = 0;
if(thumb.y >= _yMax)
thumb.y = _yMax;
_sp = thumb.y / _yMax;
dispatchEvent(new Event(Event.CHANGE));
event.updateAfterEvent();
}
private var _sp:Number;
public function get scrollPercentage():Number
{
return _sp;
}
override protected function createChildren():void
{
super.createChildren();
if(!track)
{
track = new Track();
track.width = 10;
addChild(track);
}
if(!thumb)
{
thumb = new Thumb();
thumb.width = 10;
thumb.height = 40;
thumb.addEventListener(MouseEvent.MOUSE_DOWN, thumbDown);
addChild(thumb);
}
}
override protected function commitProperties():void
{
super.commitProperties();
track.height = this.height;
_yMax = track.height - thumb.height;
}
}
}
Track.as
package com.mariosh.controls
{
import mx.core.UIComponent;
public class Track extends UIComponent
{
public function Track()
{
super();
}
override protected function updateDisplayList(uW:Number, uH:Number):void
{
super.updateDisplayList(uW, uH);
graphics.clear();
graphics.beginFill(0x333333);
graphics.drawRect(0, 0, uW, uH);
graphics.endFill();
}
}
}
Thumb.as
package com.mariosh.controls
{
import mx.core.UIComponent;
public class Thumb extends UIComponent
{
public function Thumb()
{
super();
}
override protected function updateDisplayList(uW:Number, uH:Number):void
{
super.updateDisplayList(uW, uH);
graphics.clear();
graphics.beginFill(0x666666);
graphics.drawRect(0, 0, uW, uH);
graphics.endFill();
}
}
}
package com.mariosh
{
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
public class SizableTextField extends Sprite
{
public function SizableTextField()
{
super();
var field:TextField = new TextField();
field.wordWrap = true;
field.autoSize = TextFieldAutoSize.LEFT;
field.text = "Lorem ipsum dolor sit amet, " +
"consectetuer adipiscing elit. Morbi tortor" +
"purus, aliquet a, ornare ac, sucipit a, est."
field.appendText("\n");
field.appendText("Nullam henderrit molestie erat. " +
"Nunc nulla tortor, ullamcorper et," +
"elementum vel, fringilla sed, dui." +
"Praesent fermentum interdum orci.");
addChild(field);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:TextInput id="txtTo" width="300"/>
<mx:Button label="Send" toolTip="Send e-mail to {txtTo.text}"/>
</mx:Application>
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="initApp()">
<mx:Script>
<![CDATA[
import mx.managers.ToolTipManager;
import mx.controls.ToolTip;
import mx.events.ToolTipEvent;
public function initApp():void {
b1.addEventListener(ToolTipEvent.TOOL_TIP_SHOW, myToolTipChanger)
}
public function myToolTipChanger(event:ToolTipEvent):void
{
ToolTipManager.currentToolTip.text = "Click the button, " +
Application.application.parameters.myName;
}
]]>
</mx:Script>
<mx:Button id="b1" label="Click Me" toolTip="Click the button."/>
</mx:Application>