Просмотр полной версии : Как организовать в LinkButton - е multiline?
Alexandor1984
10.01.2007, 17:56
Как организовать в LinkButton-е multiline?
Расширить класс LinkButton, чтобы он использовал mx.controls.Text вместо mx.controls.Label.
наверное, не проверял.
Alexandor1984
10.01.2007, 18:09
Ого, ето для меня высший пилотаж. По проще никак??? :(
В флексе 80% работы заключается в расширениии классов из Flex Framework, если это высший пилотаж, может стоит научится? а то я не представляю что можно делать в флексе иначе.
Alexandor1984
10.01.2007, 19:16
Ну, тогда направьте меня на путь истинный. С чего начать это осваивать. Может, какую нить литературу подскажите.
Заранее благодарю.
Книг нету, я читаю документацию.
package eu.orangeflash.controls
{
import mx.controls.LinkButton;
import mx.controls.Button;
import mx.core.UIComponent
import flash.text.TextField
import mx.core.mx_internal;;
public class MultilineLink extends LinkButton
{
public function MultilineLink()
{
}
protected override function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
var h:Number = calculateMultilineHeight(label);
textField.height = h;
textField.y = (height-h)/2;
}
protected override function measure():void
{
super.measure();
var textHeight:Number = 8;
if(label)
{
textHeight += calculateMultilineHeight(label);
}
mx_internal::viewIcon();
mx_internal::viewSkin();
var iconHeight:Number = mx_internal::currentIcon ? mx_internal::currentIcon.height : 0;
var h:Number = 0;
if (labelPlacement == "left" ||
labelPlacement == "right")
{
h = Math.max(textHeight, iconHeight);
}
else
{
if (label && label.length > 0)
h = textHeight + iconHeight;
else
h = iconHeight;
if (iconHeight != 0)
h += getStyle("verticalGap");
}
trace(textField.x);
this.measuredMinHeight = this.measuredHeight = h;
textField.y = (h - textHeight)/2;
}
protected function calculateMultilineHeight(multilineText:String):Number
{
var tf:TextField = new TextField();
tf.autoSize = "left";
tf.text = multilineText;
return tf.height;
}
}
}
Alexandor1984
11.01.2007, 12:08
Просмотрев выше написанный код, я понял, что мне еще предстоит долго поработать с Flex-ом, чтоб писать такие вещи.
Вопрос. Почему-то данный код у меня работает как обыкновенный LinkButtob и нету multiline – а.
Не знаю у меня все пашет
версия Flex 2.0.1
а да текст в MXML Надо задать через байндинги - label="{'first line\rsecondline'}"
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.