Olá Beck, só cheguei agora a casa. Vou experimentar a sua sugestão, mas antes de mais muito obrigado pela ajuda!! Depois digo como correu :)
João Saleiro Beck Novaes wrote: > João, > > O problema da quebra de linha é devido ao método layoutContent do > Button. Ele define um tamanho para o label do botão menor do que seria > necessário para mostrar duas linhas. Aí vai um exemplo que pode > resolver o seu problema. > > > App.mxml > ======== > > <?xml version="1.0" encoding="utf-8"?> > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" > xmlns:local="*"> > > <local:ButtonBarMultiline dataProvider="vs" height="40" > paddingTop="0"/> > > <mx:ViewStack id="vs" borderStyle="solid"> > > <mx:Canvas label="Tab 1 test"> > <mx:Label text="Tab1 Content"/> > </mx:Canvas> > > <mx:Canvas label="Tab 2 test"> > <mx:Label text="Tab2 Content"/> > </mx:Canvas> > > </mx:ViewStack> > > </mx:Application> > > > > > ButtonBarButtonMultiline.as > ================ > > package > { > > import mx.controls.Button; > import mx.core.UITextFormat; > import mx.core.mx_internal; > > use namespace mx_internal; > > public class ButtonBarButtonMultiline extends Button > { > > > //-------------------------------------------------------------------------- > // > // Constructor > // > > //-------------------------------------------------------------------------- > > /** > * Constructor. > */ > public function ButtonBarButtonMultiline() > { > super(); > } > > > //-------------------------------------------------------------------------- > // > // Variables > // > > //-------------------------------------------------------------------------- > > /** > * @private > */ > private var inLayoutContents:Boolean = false; > > > //-------------------------------------------------------------------------- > // > // Overridden methods: UIComponent > // > > //-------------------------------------------------------------------------- > > /** > * @private > */ > override public function > determineTextFormatFromStyles():UITextFormat > { > if (inLayoutContents && selected) > return textField.getUITextFormat(); > else > return super.determineTextFormatFromStyles(); > } > > > //-------------------------------------------------------------------------- > // > // Overridden methods: Button > // > > //-------------------------------------------------------------------------- > > /** > * @private > */ > override mx_internal function layoutContents(unscaledWidth:Number, > > unscaledHeight:Number, > > offset:Boolean):void > { > // Fix for bug 122684: > // layoutContents() internally calls measureText(), which > calls > // determineTextFormatFromStyles() to get the UITextFormat > object. > // For a selected button, the textField's text styles can > differ from > // the button's text styles. So we need to return the right > // UITextFormat in determineTextFormatFromStyles() > inLayoutContents = true; > super.layoutContents(unscaledWidth, unscaledHeight, offset); > inLayoutContents = false; > > > /*********************************** > * ESTES DOIS MAGIC NUMBERS SÃO A SOLUÇÃO PARA O SEU PROBLEMA. > Fiquei > com preguiça > * de fazer o cálculo correto para definir estes > valores > *************************************/ > textField.y = 5; > textField.height *= 2; > > } > > > } > > } > > > > > > ButtonBarMultiline.as > ================ > > package > { > > import mx.controls.ButtonBar; > import mx.core.ClassFactory; > import mx.core.mx_internal; > > use namespace mx_internal; > > public class ButtonBarMultiline extends ButtonBar > { > public function ButtonBarMultiline() > { > super(); > navItemFactory = new ClassFactory(ButtonBarButtonMultiline); > } > > } > > } > > > > > > > []'s > Beck Novaes > > > > On 31 jan, 02:41, João Saleiro <[EMAIL PROTECTED]> wrote: > >> Comecei a embirrar com a ButtonBar, e entrei em desespero. O que queria >> era começar por adicionar a funcionalidade de usar htmlText nos botões >> ao invés de text normal, e permitir pelo menos 2 linhas (através de \n, >> por exemplo). Para tal, teria que extender a classe ButtonBar para que >> usasse uma versão extendida da classe Button (HTMLButton, por exemplo). >> Fiz alguns progressos com o meu HTMLButton, consegui colocar-lhe >> HTMLText, mas através de aldrabices, e com algumas falhas. Por exemplo, >> no rollover o botão perdia o valor do HTMLButton. A minha aldrabice foi >> fazer uma função que alterava directamente o htmltext do textfield. Mas >> não chegou... >> >> O ideal era conseguir sobrepor a função >> >> override protected function updateDisplayList(unscaledWidth:Number, >> unscaledHeight:Number):void >> >> da classe Button, de forma a que onde está textField.text passasse a >> textField.htmlText >> >> e outra (talvez mx_internal function >> layoutContents(unscaledWidth:Number, unscaledHeight:Number, >> offset:Boolean):void ) para poder mudar o height. >> >> Mas não consegui... >> Além de que o avanço da hora já não ajuda! >> >> Por isso, no mais profundo dos desesperos, pergunto como posso extender >> a classe ButtonBar e a classe Button para poder suportar HtmlText em >> duas linhas nos botões da ButtonBar? >> >> Obrigado, >> >> João Saleiro >> >> João Saleiro wrote: >> >>> Já descobri o que era... estupidez minha :) >>> É ridículo mais uma vez, mas tirando o opaqueBackground="false" ficou >>> bom. Vendo na documentação, o valor deveria ser null. >>> Já está tudo ok. >>> >>> Vou agora descobrir como aplicar um estilo de texto diferente a cada >>> botão. Mas já tenho uma ideia: através do Button(bb.getChildAt(0)) , >>> onde bb é o id da ButtonBar. >>> >>> O Glow é deverá ser mais complicado... Veremos :) Sugestões aceitam-se! >>> >>> João Saleiro >>> >>> João Saleiro wrote: >>> >>>> Yeap, estou. Se fizer um novo botão com a skin, funciona >>>> perfeitamente. Se o usar dentro de um mx:ButtonBar fica com esse fundo >>>> preto. >>>> >>>> Quanto ao Glow, a ideia é fazê-lo animado. Não é só passar em cima e >>>> mostrar outra skin, é mesmo fazer um efeito animado de Glow in. :) >>>> >>>> Mas o fundo é que me está a deixar louco... :| :| :| >>>> >>>> João Saleiro >>>> >>>> Beck Novaes wrote: >>>> >>>>> Olá João, >>>>> >>>>> Você está usando skins desta forma? >>>>> >>>>> <mx:Style> >>>>> >>>>> .myButtonSkin >>>>> { >>>>> up-skin:Embed("upSkin.png"); >>>>> over-skin:Embed("overSkin.png"); >>>>> down-skin:Embed("downSkin.png"); >>>>> } >>>>> >>>>> </mx:Style> >>>>> >>>>> <mx:ButtonBar dataProvider="{vs}" buttonStyleName="myButtonSkin"/> >>>>> >>>>> Se sim, não entendo porque não consegue retirar a borda do botão. Até >>>>> mesmo o Glow deveria ser simples, bastando para isto criar um skin >>>>> (over-skin) já com este efeito. >>>>> >>>>> []'s >>>>> Beck Novaes >>>>> > > > > > > > --~--~---------~--~----~------------~-------~--~----~ Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com Para sair da lista, envie um email em branco para [EMAIL PROTECTED] Mais opções estão disponíveis em http://groups.google.com/group/flexdev -~----------~----~----~----~------~----~------~--~---