olá pessoal,

to com um probleminha aqui, num sei se sou eu, ou se é coisa do
flex... rs

tenho no item renderer do meu tile list um Label... fiz um eskema pra
tratar a string do label pra quebrar linhas, colocar \n a cada 34
caracteres, que e o que cabe de largura no tile, até aí tudo bem,
depois fiz um eskema pra ele verificar quantas linhas teriam e
retornar o tamanho de altura do label, ele retorna, porém, ele não o
utiliza, pelo que verifiquei ele tah utilizando o do primeiro label,
se o primeiro retornou 20 ele vai colocar altura 20 em todos... isso é
problema do meu código ou do Flex?

Segue os códigos utilizados

Scripts:

public function trataString(str:String):String{
        var nstr:String = "";
        var vstr:String = str;
        var n:int;
        var num:int = 1;

        if (str.length > 34){
                n = (str.length/34);
                //Alert.show("subtracao: "+String(str.length - (n * 25)));
                if ((str.length - (n * 34)) > 0){
                        num = (str.length/34) + 1;
                } else {
                        num = (str.length/34);
                }
                //Alert.show("num: "+String(num));
        }

        for (var x:int=1;x<=num;x++){
                var com:uint;
                if (x==1){
                        com = 0;
                } else {
                        com = ((x-1)*34)-1;
                }

                var fim:uint;
                if (x==num){
                        fim = vstr.length-1;
                } else {
                        fim = com + 33;//(x*25)-1;
                }

                /* Alert.show(
                        "x: "+String(x)+
                        "\ncomeço: "+String(com)+
                        "\nfim: "+String(fim)+
                        "\nstring: "+String(str.substr(com,fim).substr(0,24))+
                        "\ntotal de caracteres:
"+String(str.substr(com,fim).substr(0,24).length)
                ); */

                nstr = nstr+str.substr(com,fim).substr(0,33)+"\n";
        }

        if (num==1){
                return str;
        }

        return nstr;
}

public function tamanhoLabel(l:int):int {
        var num:int;
        var n:int;

        if (l > 34){
                n = (l/34);
                //Alert.show("subtracao: "+String(str.length - (n * 25)));
                if ((l - (n * 34)) > 0){
                        num = (l/34) + 1;
                } else {
                        num = (l/34);
                }
                //Alert.show("num: "+String(num));
        } else {
                num = 1;
        }

        Alert.show("Tamanho label: "+String(l)+"\ntamanho final:
"+String(num*20)+"\nnum: "+String(num));

        return num*20;
}

trataString é pra colocar quebra de linha, tamanhoLabel é pra dar o
height

e o meu itemrenderer tah assim:

<mx:Label buttonMode="true" useHandCursor="true" width="200"
toolTip="{data.nome}" fontSize="10" color="#3e3e3e">
        <mx:height>{outerDocument.tamanhoLabel((data.nome as String).length)}
</mx:height>
        <mx:htmlText>&lt;p align='left'&gt;
{outerDocument.trataString(data.nome)}&lt;/p&gt;</mx:htmlText>
</mx:Label>

detalhe, se eo coloco manualmente tipo 40, ou 60 ele vai só que em
todos, se eo tento colocar de forma dinâmica não funciona.... nem
mesmo com o trio (lenght>30)?60:40 não tah funcionando...

Valew desde já!

-- 
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 
flexdev-unsubscr...@googlegroups.com
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a