Home > AS3, Flex > Flex Multiline Button

Flex Multiline Button

Here is the code that will help us to create a multilined button component in flex.

package com.kw.components
{
 import flash.display.DisplayObject;
 import flash.text.TextLineMetrics;

 import mx.controls.Button;
 import mx.core.IFlexDisplayObject;
 import mx.core.mx_internal;
 use namespace mx_internal;

 public class KWButton extends Button
 {
 public function KWButton()
 {
 super();
 }
 public var tagid:Number;
 override protected function createChildren():void
 {
 if (!textField)
 {
 textField = new NoTruncationUITextField();
 textField.styleName = this;
 addChild(DisplayObject(textField));
 }
 super.createChildren();
 textField.multiline = true;
 textField.wordWrap = true;
 textField.width = width;
 }
 override protected function measure():void
 {
 if (!isNaN(explicitWidth))
 {
 var tempIcon:IFlexDisplayObject = getCurrentIcon();
 var w:Number = explicitWidth;
 if (tempIcon)
 w -= tempIcon.width + getStyle("horizontalGap") + getStyle("paddingLeft") + getStyle("paddingRight");
 textField.width = w;
 }
 super.measure();
 }
 override public function measureText(s:String):TextLineMetrics
 {
 textField.text = s;
 var lineMetrics:TextLineMetrics = textField.getLineMetrics(0);
 lineMetrics.width = textField.textWidth + 4;
 lineMetrics.height = textField.textHeight + 4;
 return lineMetrics;
 }
 }
}
import mx.core.UITextField;
class NoTruncationUITextField extends UITextField
{
 public function NoTruncationUITextField()
 {
 super();
 }
 override public function truncateToFit(s:String = null):Boolean
 {
 return false;
 }
}
Categories: AS3, Flex
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.