| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/10/2010 04:54:38
|
pgnt
Debugger
![[Avatar]](/images/avatar/4c6ec11e967c21b14b970b16579cdf13.png)
Membro desde: 18/01/2007 04:27:33
Mensagens: 57
Offline
|
Olás
Estou penando pra descobrir como mudar a cor do label de um ítem de um List (com seus itemRenderers) em tempo de execução.
Pra simplificar, quero por ex mudar a cor de um label num ítem da lista ao clicar num botão na aplicação (não renderizado, fora da lista).
Intuitivamente tentei sem sucesso (mas ajuda a pegar a idéia) o seguinte:
Achei muita coisa sobre mudar o itemRenderer da lista, mas não quero mudar tudo, somente um específico de um evento vindo de fora.
Obrigado!
This message was edited 2 times. Last update was at 06/10/2010 21:11:23
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/10/2010 10:48:18
|
renzonuccitelli
GUJ Master
Membro desde: 17/09/2008 12:58:32
Mensagens: 1133
Offline
|
Acho que vc vai ter que escrever seu próprio renderer para fazer isso. Além disso, tem uma propriedade, autodrawbackground que vc tem que setar para false para controlar seu item.
[]s
|
Renzo Nuccitelli
Engenheiro de Computação - ITA
http://nuccitec.com.br/
http://blog.nuccitec.com.br/
http://jcoltrane.sf.net
http://jfera.nuccitec.com.br/
http://code.google.com/p/webapp-ce/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/10/2010 14:17:36
|
pgnt
Debugger
![[Avatar]](/images/avatar/4c6ec11e967c21b14b970b16579cdf13.png)
Membro desde: 18/01/2007 04:27:33
Mensagens: 57
Offline
|
Sobre escrever o próprio renderer, acho q vc está falando em fazer outro renderer estilizado e depois trocar por ele, certo?
Se for isso eu já fiz, usando "ClassFactory", mas deu errado pois na hora que ele faz o update do renderer, mais de um item é afetado (depende do tamnho da lista acho, mas uns 2 ou 3 ítens foram afetados pelo estilo).
Valeu!
This message was edited 1 time. Last update was at 05/10/2010 14:18:22
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/10/2010 17:03:40
|
renzonuccitelli
GUJ Master
Membro desde: 17/09/2008 12:58:32
Mensagens: 1133
Offline
|
Os items renderes são reutilizados pelo data grid. Quando vc mexe no scrool, ele pega um item que não vai mais aparecer e reutiliza. Isso já ocorreu comigo, quando meu item renderer era um checkBox. Eu selecionava um e alguns outros eram tb selecionados. No seu renderer seria bom vc setar a cor toda vez que o seu data muda. Sobrescreva o método set data de seu componente e execute a lógica dentro. Se vc colocar o código fica mais fácil de ajudar.
[]s
|
Renzo Nuccitelli
Engenheiro de Computação - ITA
http://nuccitec.com.br/
http://blog.nuccitec.com.br/
http://jcoltrane.sf.net
http://jfera.nuccitec.com.br/
http://code.google.com/p/webapp-ce/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/10/2010 17:43:36
|
pgnt
Debugger
![[Avatar]](/images/avatar/4c6ec11e967c21b14b970b16579cdf13.png)
Membro desde: 18/01/2007 04:27:33
Mensagens: 57
Offline
|
Então renzonuccitelli, eu já fiz algo parecido (não é em dataGrid, é num List) mas não rolou, vou colocar pra vc conferir:
primeiro criei minha lista com o atributo status (usado na condição de mudar a cor do label)
depois, no meu itemRenderer, coloquei o override pra ler o status e mudar a cor do label
e, finalmente, na aplicação, o valor do status com um Bind pra uma variável 'global' (rootStatus), que pode ser alterada por qualquer evento (clique de qq botão por ex)
nenhum erro é acusado na aplicação mas nada disso funcionou, o meuItemRenderer não entra estilizado e nem altera
Alguma sugestão?
Valeu!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/10/2010 18:31:02
|
renzonuccitelli
GUJ Master
Membro desde: 17/09/2008 12:58:32
Mensagens: 1133
Offline
|
Como eu disse, o ItemRenderer é reutilizado. O que vc está fazendo é setar o background quando aprovado. Está faltando voltar a cor original quando o status for diferente de aprovado. Experimenta colocar um else na sobreposição do set data e voltar a cor original.
[]s
|
Renzo Nuccitelli
Engenheiro de Computação - ITA
http://nuccitec.com.br/
http://blog.nuccitec.com.br/
http://jcoltrane.sf.net
http://jfera.nuccitec.com.br/
http://code.google.com/p/webapp-ce/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/10/2010 19:46:36
|
pgnt
Debugger
![[Avatar]](/images/avatar/4c6ec11e967c21b14b970b16579cdf13.png)
Membro desde: 18/01/2007 04:27:33
Mensagens: 57
Offline
|
Pode crer, agora entendi o processo, vc matou, foi só mesmo colocar o "else" pra ele aplicar (resetar) o que não estiver com status.
Testei inclusive com o ClassFactory e rolou (no fundo deve ser a mesma coisa, ou estou enganado?).
Brigadão
abs
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/10/2010 20:48:41
|
renzonuccitelli
GUJ Master
Membro desde: 17/09/2008 12:58:32
Mensagens: 1133
Offline
|
No fim das contas mesmo quando vc coloca a String o flex por traz dos panos passa a classe como argumento do ClassFactory. O que eu faço é implementar sempre a interface IFactory em meus itemRenderes para não ter que usar o ClassFactory. Mas entre String e ClassFactory, prefiro o segundo, pois se vc refatorar o nome da classe não vai ter problemas, como vai ter no primeiro caso.
E precisando de um curso, de uma olhada em www.nuccitec.com.br.
[]s
This message was edited 1 time. Last update was at 05/10/2010 21:21:59
|
Renzo Nuccitelli
Engenheiro de Computação - ITA
http://nuccitec.com.br/
http://blog.nuccitec.com.br/
http://jcoltrane.sf.net
http://jfera.nuccitec.com.br/
http://code.google.com/p/webapp-ce/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/10/2010 00:34:16
|
pgnt
Debugger
![[Avatar]](/images/avatar/4c6ec11e967c21b14b970b16579cdf13.png)
Membro desde: 18/01/2007 04:27:33
Mensagens: 57
Offline
|
blz, valeu!
|
|
|
 |
|
|