<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MXStudio &#187; Luiz</title>
	<atom:link href="http://www.mxstudio.com.br/author/luiz/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mxstudio.com.br</link>
	<description>Macromedia e Adobe - Artigos, colunas, tutorias e muito mais...</description>
	<lastBuildDate>Sun, 29 Jan 2012 11:31:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Criando uma enquete com Flex + PHP + MySQL &#8211; Parte II</title>
		<link>http://www.mxstudio.com.br/desenvolvimento/flex/criando_uma_enquete_com_flex___php___mysql___parte_ii/</link>
		<comments>http://www.mxstudio.com.br/desenvolvimento/flex/criando_uma_enquete_com_flex___php___mysql___parte_ii/#comments</comments>
		<pubDate>Mon, 28 May 2007 00:00:00 +0000</pubDate>
		<dc:creator>Luiz</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Cnforme prometido, aqui est&#225; a segunda parte da nossa enquete usando Flex, PHP e MySQL. Boa leitura.]]></description>
			<content:encoded><![CDATA[<link href="http://www.mxstudio.com.br/webgerenciador/_css/PadraoCss.css" rel="stylesheet" type="text/css" /> <script src="http://www.mxstudio.com.br/js/ColorCode.js"></script>
<p align="justify">Olá pessoal, vamos dar proceguimento a nossa enquete com Flex + PHP + MySQL, abram o projeto anteriormente criado &#8211; <strong><a href="http://www.mxstudio.com.br/views.tutorial.php?act=view&amp;cid=12&amp;aid=1104">Criando uma enquete com Flex + PHP + MySQL &#8211; Parte I</a></strong>.</p>
<p align="justify">Vamos criar os HTTPs que serão responsáveis pela manutenção da nossa enquete, para isso abram o arquivo enquete.mxml e logo abaixo do código:</p>
<p id="codigo" title="codigo1">&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;http://www.adobe.com/2006/mxml&#8221;<br />
layout=&#8221;absolute&#8221;<br />
currentState=&#8221;enquete&#8221;<br />
backgroundColor=&#8221;#FFFFFF&#8221;<br />
horizontalScrollPolicy=&#8221;off&#8221; verticalScrollPolicy=&#8221;off&#8221;&gt;</p>
<p align="justify">Incluam o seguinte código:</p>
<p id="codigo" title="codigo2">&lt;mx:HTTPService id=&#8221;pegaDados&#8221;<br />
useProxy=&#8221;false&#8221;<br />
resultFormat=&#8221;e4x&#8221;<br />
url=&#8221;enq_pegaDados.php&#8221;<br />
method=&#8221;POST&#8221;<br />
contentType=&#8221;application/x-www-form-urlencoded&#8221;<br />
showBusyCursor=&#8221;true&#8221;<br />
result=&#8221;handleDsPegaDadosResult(event)&#8221;/&gt;&lt;mx:XMLListCollection id=&#8221;pegaDadosXML&#8221;/&gt;</p>
<p>&lt;mx:HTTPService id=&#8221;vota&#8221; url=&#8221;vota.php&#8221; result=&#8221;{atualizaDados();}&#8221;&gt;<br />
&lt;mx:request xmlns=&#8221;"&gt;<br />
&lt;votou&gt;{rgEnquete.selectedValue}&lt;/votou&gt;<br />
&lt;/mx:request&gt;<br />
&lt;/mx:HTTPService&gt;</p>
<p align="justify">nesse código, logo após o HTTPService, com o ID pegaDados, ser executado e pegar as informações, que serão retornadas no formato XML, do nosso script PHP, executará a função handleDsPegaDadosResult(event) que será criada logo mais na seção ActionScript. esse HTTPService será o responsável em ver se o usuário já votou e de atualizar as barras de progresso da nossa enquete. O formato que eu usei foi o XML e4x (falarei do formato XML e4x num outro post). Criamos também um XMLListCollection que será usado no nosso AS</p>
<p align="justify">Temos também o HTTPService com o ID vota, que será responsável por fazer a votação, adicionando a mesma na tabela respostas. Ao terminar de fazer a votação, ele executará a função atualizaDados();.<br />
Dentro desse HTTPService vamos passar o valor do nosso radioButton selecionado pelo usuário, esse parâmetro é passado pela tag mx:request, lá no arquivo PHP pegamos esse valor e colocamos na variável $voto &#8211; <strong>$votou = $_GET[votou];</strong></p>
<p align="justify">Agora vamos criar nosso script AS, que dará as funcionalidades necessárias as nossas enquetes, abaixo do código anterior (HTTPServices) vamos adicionar nosso AS, conforme script abaixo:</p>
<p id="codigo" title="codigo3"> &lt;mx:Script&gt;<br />
&lt;![CDATA[<br />
import mx.rpc.events.ResultEvent;<br />
import mx.controls.*<br />
import mx.events.*;[Bindable]<br />
private var meuXML:XML;</p>
<p>[Bindable]<br />
private var temp:XMLList;</p>
<p>[Bindable]<br />
private var checaIP:String;</p>
<p>public function handleDsPegaDadosResult( ev:ResultEvent ):void {</p>
<p>meuXML = XML(ev.result.toString());<br />
meuXML = meuXML.normalize();</p>
<p>temp = meuXML.enquete.respostas;</p>
<p>pegaDadosXML.removeAll();<br />
pegaDadosXML.source = temp;</p>
<p>chegaVoto();<br />
}</p>
<p>private function habilitaBotaoVotar():void{<br />
if ((rb0.selected == false) &amp;&amp; (rb1.selected == false) &amp;&amp; (rb2.selected == false) &amp;&amp; (rb3.selected == false)){<br />
btnVotar.enabled = false;<br />
}else{<br />
btnVotar.enabled = true;<br />
}</p>
<p>}</p>
<p>private function chegaVoto():void{<br />
checaIP = String(pegaDadosXML.getItemAt(5).cookie.acesso);<br />
if (checaIP==&#8221;NEGADO&#8221;){<br />
btnVotar.enabled = false;<br />
rgEnquete.enabled = false;<br />
}else{<br />
rgEnquete.enabled = true;<br />
}<br />
}</p>
<p>private function atualizaDados():void{<br />
pegaDados.send();<br />
ver();<br />
}</p>
<p>private function votando():void{<br />
vota.send();<br />
}</p>
<p>private function ver():void{<br />
currentState=&#8221;resultado&#8221;;<br />
gauge();<br />
}</p>
<p>private function gauge():void{<br />
bar0.setProgress(pegaDadosXML.getItemAt(0).voto,100);<br />
bar1.setProgress(pegaDadosXML.getItemAt(1).voto,100);<br />
bar2.setProgress(pegaDadosXML.getItemAt(2).voto,100);<br />
bar3.setProgress(pegaDadosXML.getItemAt(3).voto,100);<br />
}</p>
<p>]]&gt;<br />
&lt;/mx:Script&gt;</p>
<p align="justify">Vamos a explicação do nosso código acima, as 3 primeiras linhas do nosso código</p>
<p align="justify"><strong>import mx.rpc.events.ResultEvent;<br />
import mx.controls.*<br />
import mx.events.*</strong></p>
<p align="justify">é pra importar todos as classes necessárias para que nossa enquete funcione. Em seguida eu crio 3 variável que será usada na função <strong>handleDsPegaDadosResult</strong>, essa função será executada logo após o HTTPService pegar os dados do PHP, ela tratará o XML e colocará dentro da XMLListCollection. Logo depois eu executo a função chegaVoto();, onde eu testo se o usuário pode ou não votar.</p>
<p align="justify">A  função chamada &#8211; <strong>chegaVoto()</strong> &#8211; serve para checar se o usuário já votou ou não, se ele votou, então nosso código PHP retornará um XML com a opção NEGADO e assim, não será liberado o botão <strong>Votar</strong> e nem os radioButtons &#8211; <strong>rgEnquete. </strong>Se o usuário ainda não votou, então tanto o botão Votar como os radioButtons, serão liberados para votação.</p>
<p align="justify">A  função  &#8211; <strong>habilitaBotaoVotar()</strong> &#8211; serve pra que o usuário não consiga votar sem antes clicar em uma das opções, enquanto o usuário não selecionar uma opção, o botão Votar (btnVotar<strong>) </strong>ficará setado como false, ficando disponível somente depois de selecianada uma das opções.</p>
<p align="justify">A função gauge( ) do nosso código, é que pega os dados do XML que foi retornado pelo HTTPService pegaDados e atualizará as barras de progresso da nossa enquete com a contagem dos votos.</p>
<p id="codigo" title="codigo4">private function gauge():void{<br />
bar0.setProgress(pegaDadosXML.getItemAt(0).voto,100);<br />
bar1.setProgress(pegaDadosXML.getItemAt(1).voto,100);<br />
bar2.setProgress(pegaDadosXML.getItemAt(2).voto,100);<br />
bar3.setProgress(pegaDadosXML.getItemAt(3).voto,100);<br />
}</p>
<p align="justify">Agora vamos mudar algumas propriedades na nossa enquete, na viewState <strong>enquete</strong> na tag &lt;mx:text mudem a propriedade text=&#8221;" para:<br />
<strong>text=&#8221;{pegaDadosXML.getItemAt(4).pergunta.perg}</strong> ficando toda a linha da seguinte forma:</p>
<p id="codigo" title="codigo5">&lt;mx:Text x=&#8221;10&#8243; y=&#8221;6&#8243; text=&#8221;{pegaDadosXML.getItemAt(4).pergunta.perg}&#8221; width=&#8221;130&#8243; height=&#8221;72&#8243; textAlign=&#8221;center&#8221; fontWeight=&#8221;bold&#8221; color=&#8221;#ff8040&#8243;/&gt;</p>
<p align="justify">Logo abaixo, temos a tag &lt;mx:RadioButtonGroup&gt; mude essa linha acrescentando a propriedade itemClick=&#8221;" assim:</p>
<p id="codigo" title="codigo6">&lt;mx:RadioButtonGroup itemClick=&#8221;habilitaBotaoVotar();&#8221; id=&#8221;rgEnquete&#8221;/&gt;</p>
<p align="justify">Aqui, ao clicar em qualquer das 4 opções, executará a função habilitaBotaoVotar();.<br />
Em seguida nós tempos as 4 tags, uma pra cada radioButton, vamos mudá-las, para que fiquem da seguinte forma:</p>
<p id="codigo" title="codigo7"> &lt;mx:RadioButton id=&#8221;rb0&#8243; value=&#8221;{pegaDadosXML.getItemAt(0).unico}&#8221; label=&#8221;{pegaDadosXML.getItemAt(0).resp}&#8221; groupName=&#8221;rgEnquete&#8221; textAlign=&#8221;left&#8221;/&gt;<br />
&lt;mx:RadioButton id=&#8221;rb1&#8243; value=&#8221;{pegaDadosXML.getItemAt(1).unico}&#8221; label=&#8221;{pegaDadosXML.getItemAt(1).resp}&#8221; groupName=&#8221;rgEnquete&#8221; textAlign=&#8221;left&#8221;/&gt;<br />
&lt;mx:RadioButton id=&#8221;rb2&#8243; value=&#8221;{pegaDadosXML.getItemAt(2).unico}&#8221; label=&#8221;{pegaDadosXML.getItemAt(2).resp}&#8221; groupName=&#8221;rgEnquete&#8221; textAlign=&#8221;left&#8221;/&gt;<br />
&lt;mx:RadioButton id=&#8221;rb3&#8243; value=&#8221;{pegaDadosXML.getItemAt(3).unico}&#8221; label=&#8221;{pegaDadosXML.getItemAt(3).resp}&#8221; groupName=&#8221;rgEnquete&#8221; textAlign=&#8221;left&#8221;/&gt;</p>
<p align="justify">Aqui cada radioButton recebe sua respectiva resposta com seu respectivo ID, trazidos pelo XML que o arquivo enq_pegaDados.php gerou.</p>
<p align="justify">Agora, abaixo tempo dois componentes buttons, um &#8220;Votar&#8221; e outro &#8220;Ver&#8221;, no botão Votar acrescente a função votando( ) no evento Click do mesmo, faça o mesmo com o botão &#8220;Ver&#8221;, acrescentando no click do mesmo, a função ver( ). veja código abaixo:</p>
<p id="codigo" title="codigo8"> &lt;mx:Button id=&#8221;btnVotar&#8221; x=&#8221;9&#8243; y=&#8221;209&#8243; label=&#8221;Votar&#8221; click=&#8221;{votando();}&#8221; enabled=&#8221;false&#8221;/&gt;<br />
&lt;mx:Button x=&#8221;75&#8243; y=&#8221;209&#8243; label=&#8221;Ver&#8221; click=&#8221;{ver();}&#8221;/&gt;</p>
<p align="justify">Agora mudem para a viewState resultado e mudem as linhas do progress bar para que fiquem da seguinte forma:</p>
<p id="codigo" title="codigo9"> &lt;mx:ProgressBar id=&#8221;bar0&#8243; label=&#8221;{pegaDadosXML.getItemAt(0).resp}-&gt;{pegaDadosXML.getItemAt(0).voto}%&#8221; width=&#8221;130&#8243; minimum=&#8221;0&#8243; maximum=&#8221;100&#8243; direction=&#8221;right&#8221; mode=&#8221;manual&#8221; themeColor=&#8221;#00CC00&#8243;/&gt;<br />
&lt;mx:ProgressBar id=&#8221;bar1&#8243; label=&#8221;{pegaDadosXML.getItemAt(1).resp}-&gt;{pegaDadosXML.getItemAt(1).voto}%&#8221; width=&#8221;130&#8243; minimum=&#8221;0&#8243; maximum=&#8221;100&#8243; direction=&#8221;right&#8221; mode=&#8221;manual&#8221; themeColor=&#8221;#0066CC&#8221;/&gt;<br />
&lt;mx:ProgressBar id=&#8221;bar2&#8243; label=&#8221;{pegaDadosXML.getItemAt(2).resp}-&gt;{pegaDadosXML.getItemAt(2).voto}%&#8221; width=&#8221;130&#8243; minimum=&#8221;0&#8243; maximum=&#8221;100&#8243; direction=&#8221;right&#8221; mode=&#8221;manual&#8221; themeColor=&#8221;#FFCC00&#8243;/&gt;<br />
&lt;mx:ProgressBar id=&#8221;bar3&#8243; label=&#8221;{pegaDadosXML.getItemAt(3).resp}-&gt;{pegaDadosXML.getItemAt(3).voto}%&#8221; width=&#8221;130&#8243; minimum=&#8221;0&#8243; maximum=&#8221;100&#8243; direction=&#8221;right&#8221; mode=&#8221;manual&#8221; themeColor=&#8221;#FF0000&#8243;/&gt;</p>
<p align="justify">Agora no botão voltar, incluam a seguinte ação no click do botão: <strong>click=&#8221;currentState=&#8217;enquete&#8217;&#8221;</strong> ficando a linha da seguinte forma:</p>
<p id="codigo" title="codigo10"> &lt;mx:Button label=&#8221;Voltar&#8221; horizontalCenter=&#8221;0&#8243; bottom=&#8221;10&#8243; click=&#8221;currentState=&#8217;enquete&#8217;&#8221; width=&#8221;100&#8243;/&gt;</p>
<p align="justify">Caso tenha alguma dúvida utilize o fórum.<br />
Abraços, Luis Carlos Quinhone &#8211; <a href="mailto:renan@mxstudio.com.br">quinhone@mxstudio.com.br</a></p>
<p><script>  FormatXML(new Array(\'codigo1\', \'codigo2\', \'codigo5\', \'codigo6\', \'codigo7\', \'codigo8\', \'codigo9\', \'codigo10\', \'codigo11\'));  FormatAS(new Array(\'codigo3\', \'codigo4\' )); </script> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/desenvolvimento/flex/criando_uma_enquete_com_flex___php___mysql___parte_ii/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Criando uma enquete com Flex + PHP + MySQL &#8211; Parte I</title>
		<link>http://www.mxstudio.com.br/desenvolvimento/flex/criando_uma_enquete_com_flex___php___mysql___parte_i/</link>
		<comments>http://www.mxstudio.com.br/desenvolvimento/flex/criando_uma_enquete_com_flex___php___mysql___parte_i/#comments</comments>
		<pubDate>Sat, 19 May 2007 00:00:00 +0000</pubDate>
		<dc:creator>Luiz</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Esse artigo mostrar&#225; como criar uma enquete usando o Flex + PHP + MySQL onde a pergunta e as respostas vem direto do banco de dados, dividi em duas partes esse artigo para que o mesmo n&#227;o ficasse muito grande.]]></description>
			<content:encoded><![CDATA[<link href="http://www.mxstudio.com.br/webgerenciador/_css/PadraoCss.css" rel="stylesheet" type="text/css" /> <script src="http://www.mxstudio.com.br/js/ColorCode.js"></script>
<p align="justify">Bom pessoal, esse é o meu primeiro artigo aqui no MX Studio, espero poder suprir as expectativas do Fábio e do Renan, que me convidaram a colocar os artigos e traduções que eu vinha postando no meu blog, aqui na casa.</p>
<p align="justify">Pra começar, vou mostrar como construir uma enquete utilizando o Flex + PHP.</p>
<p align="justify">Vamos começar com o banco de dados, abram seu adminitrador de banco de dados favorito e crie as seguintes tabelas:</p>
<p align="justify"><strong>Tabela Pergunta:</strong></p>
<p id="codigo" title="codigo1">CREATE TABLE `perguntas` (<br />
`id` mediumint(9) NOT NULL auto_increment,<br />
`pergunta` varchar(100) default NULL,<br />
`status` char(1) default NULL,<br />
`data` datetime default NULL,<br />
UNIQUE KEY `id` (`id`)<br />
) TYPE=MyISAM  AUTO_INCREMENT=1 ;</p>
<p>INSERT INTO `perguntas` VALUES (1, &#8216;O que você acha desse artigo?&#8217;, &#8216;S&#8217;, &#8217;2007-05-17 00:00:00&#8242;);</p>
<p align="justify"><strong>Tabela Respostas:</strong></p>
<p id="codigo" title="codigo2">CREATE TABLE `respostas` (<br />
`unico` mediumint(9) NOT NULL auto_increment,<br />
`id` mediumint(9) default NULL,<br />
`resposta` varchar(30) default NULL,<br />
`data` datetime default NULL,<br />
`voto` mediumint(4) default &#8217;0&#8242;,<br />
UNIQUE KEY `unico` (`unico`)<br />
) TYPE=MyISAM  AUTO_INCREMENT=1 ;</p>
<p>INSERT INTO `respostas` VALUES (1, 1, &#8216;Regular&#8217;, &#8217;2007-05-17 00:00:00&#8242;, 0);<br />
INSERT INTO `respostas` VALUES (2, 1, &#8216;Bom&#8217;, &#8217;2007-05-17 00:00:00&#8242;, 0);<br />
INSERT INTO `respostas` VALUES (3, 1, &#8216;Ótimo&#8217;, &#8217;2007-05-17 00:00:00&#8242;, 0);<br />
INSERT INTO `respostas` VALUES (4, 1, &#8216;Ruim&#8217;, &#8217;2007-05-17 00:00:00&#8242;, 0);</p>
<p align="justify">Vamos criar agora nossos arquivos PHP que será responsável em fazer todos os trâmites legais para o bom funcionamento da nossa enquete. Abram o seu editor PHP favorito e digitem o seguinte código:</p>
<p align="justify"><strong>Arquivo: config.php</strong></p>
<p id="codigo" title="codigo3">&lt;?<br />
//**********************************************//<br />
// Nome do Arquivo: Config.php<br />
// Versão: 1.0<br />
// Data de Criação: 01/02/2006<br />
// Data de Atualização: 15/12/2005<br />
// Autor: Luis Carlos Quinhone<br />
// Email: quinhone@direciona.com.br<br />
//<br />
//<br />
//**********************************************//<br />
// Constantes de Banco de Dados:<br />
// Não esqueça de mudar esses dados ao publicar no servidor<br />
//**********************************************//<br />
DEFINE(&#8216;NOMESERV&#8217;,'localhost&#8217;);<br />
DEFINE(&#8216;NOMEUSU&#8217;,'root&#8217;);<br />
DEFINE(&#8216;SENHADB&#8217;,&#8221;);<br />
DEFINE(&#8216;NOMEDB&#8217;,'enquete&#8217;);<br />
DEFINE(&#8216;TBPERG&#8217;, &#8216;perguntas&#8217;);<br />
DEFINE(&#8216;TBRESP&#8217;, &#8216;respostas&#8217;);</p>
<p>//**********************************************//<br />
// Database Query:<br />
//**********************************************//<br />
$con = mysql_connect(NOMESERV,NOMEUSU,SENHADB) OR DIE(&#8220;Impossível Conectar ao Banco de Dados&#8221;);<br />
@mysql_select_db(NOMEDB) or die( &#8220;ACESSO BLOQUEADO!!  Não foi possível selecionar o Banco de Dados $query.&#8221; . NOMEDB);<br />
?&gt;</p>
<p align="justify"><strong>Arquivo: vota.php</strong></p>
<p id="codigo" title="codigo4">&lt;?php<br />
require (&#8216;config.php&#8217;);</p>
<p>header(&#8220;Expires: Mon, 26 Jul 1997 05:00:00 GMT&#8221;);<br />
header(&#8220;Last-Modified: &#8221; . gmdate(&#8220;D, d M Y H:i:s&#8221;) . &#8221; GMT&#8221;);<br />
header(&#8220;Cache-Control: no-store, no-cache, must-revalidate&#8221;);<br />
header(&#8220;Cache-Control: post-check=0, pre-check=0&#8243;, false);<br />
header(&#8220;Pragma: no-cache&#8221;);</p>
<p>$IP = $_SERVER[REMOTE_ADDR];<br />
//Pega o IP da máquina cliente para que o mesmo não possa votar novamente num período de 2 dias</p>
<p>$votou = $_GET[votou];<br />
//pega o id da resposta que vem do Flex</p>
<p>if ($votou!=&#8221;")  //Se a variável $votou não for nula, atualiza o voto.<br />
{<br />
$atualizaVoto  = &#8220;UPDATE respostas SET voto=voto+1 WHERE unico=$votou&#8221;;<br />
$result = mysql_query($atualizaVoto);<br />
setcookie(&#8220;IP&#8221;, &#8220;$IP&#8221;, time()+172800);  //Fixa a expiração do cookie em 48 horas<br />
}</p>
<p>mysql_free_result( $result );</p>
<p>?&gt;</p>
<p align="justify"><strong>Arquivo: enq_pegaDados.php</strong></p>
<p id="codigo" title="codigo5">&lt;?php<br />
require (&#8216;config.php&#8217;);</p>
<p>header(&#8220;Expires: Mon, 26 Jul 1997 05:00:00 GMT&#8221;);<br />
header(&#8220;Last-Modified: &#8221; . gmdate(&#8220;D, d M Y H:i:s&#8221;) . &#8221; GMT&#8221;);<br />
header(&#8220;Cache-Control: no-store, no-cache, must-revalidate&#8221;);<br />
header(&#8220;Cache-Control: post-check=0, pre-check=0&#8243;, false);<br />
header(&#8220;Pragma: no-cache&#8221;);</p>
<p>//Se o IP estiver no cookie, nega o acesso a votação.<br />
if(IsSet($_COOKIE["IP"])){<br />
$acesso = &#8220;&lt;acesso&gt;NEGADO&lt;/acesso&gt;&#8221;;<br />
}else{<br />
$acesso = &#8220;&lt;acesso&gt;OK&lt;/acesso&gt;&#8221;;<br />
}</p>
<p>$return =&#8221;";</p>
<p>if ($con) {</p>
<p>$selperg = (&#8220;SELECT * from perguntas where status = &#8216;S&#8217;&#8221; );<br />
$qryperg = mysql_query($selperg);<br />
$rowperg = mysql_num_rows($qryperg);<br />
if ($rowperg &gt; 0){<br />
$linhaperg = mysql_fetch_object($qryperg);<br />
}</p>
<p>$ID =  $linhaperg-&gt;id;<br />
$PERG = $linhaperg-&gt;pergunta;</p>
<p>$selvotos = (&#8220;SELECT SUM(voto) as total from respostas where id=$ID&#8221; );<br />
$qryvotos = mysql_query($selvotos);<br />
($row = mysql_fetch_array($qryvotos,MYSQL_BOTH));</p>
<p>$totalvotos = $row[total];</p>
<p>$selresp = (&#8220;SELECT unico, id, resposta, voto from respostas where id=$ID order by unico&#8221; );<br />
$qryresp = mysql_query($selresp);<br />
$rowresp = mysql_num_rows($qryresp);<br />
if ($rowresp &gt; 0){</p>
<p>$return = &#8216;&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;iso-8859-1&#8243;?&gt;&#8217;;<br />
$return .= &#8216;&lt;resultado&gt;&#8217;;<br />
$return .= &#8216;&lt;enquete&gt;&#8217;;</p>
<p>while ( $resp = mysql_fetch_object( $qryresp ) )<br />
{</p>
<p>$votosUnicos = $resp-&gt;voto;<br />
$percVotos = $votosUnicos*100/$totalvotos;</p>
<p>$return .= &#8216;&lt;respostas&gt;&#8217;;<br />
$return .= &#8220;&lt;unico&gt;&#8221;.$resp-&gt;unico.&#8221;&lt;/unico&gt;&#8221;;<br />
$return .= &#8220;&lt;idresp&gt;&#8221;.$resp-&gt;id.&#8221;&lt;/idresp&gt;&#8221;;<br />
$return .= &#8220;&lt;resp&gt;&#8221;.$resp-&gt;resposta.&#8221;&lt;/resp&gt;&#8221;;<br />
$return .= &#8220;&lt;voto&gt;&#8221;.round($percVotos, 1).&#8221;&lt;/voto&gt;&#8221;;<br />
$return .= &#8220;&lt;/respostas&gt;&#8221;;<br />
}</p>
<p>}<br />
}</p>
<p>$return .= &#8216;&lt;respostas&gt;&#8217;;<br />
$return .= &#8216;&lt;pergunta&gt;&#8217;;<br />
$return .= &#8216;&lt;perg&gt;&#8217;.$PERG.&#8217;&lt;/perg&gt;&#8217;;<br />
$return .= &#8220;&lt;/pergunta&gt;&#8221;;<br />
$return .= &#8216;&lt;/respostas&gt;&#8217;;</p>
<p>$return .= &#8216;&lt;respostas&gt;&#8217;;<br />
$return .= &#8220;&lt;cookie&gt;&#8221;;<br />
$return .= $acesso;<br />
$return .= &#8220;&lt;/cookie&gt;&#8221;;<br />
$return .= &#8216;&lt;/respostas&gt;&#8217;;</p>
<p>$return .= &#8220;&lt;/enquete&gt;&#8221;;<br />
$return .= &#8216;&lt;/resultado&gt;&#8217;;</p>
<p>mysql_free_result( $qryresp );</p>
<p>print ($return)<br />
?&gt;</p>
<p align="justify">Bom pessoal, na parte do PHP é isso, notem que no arquivo enq_pegaDados.php tudo que eu retorno, retorno em XML, ele é o responsável em montar a enquete (a pergunta e as respostas). Não vou me extender no código PHP, porque o nosso artigo é voltado para o Flex e não para o PHP, o código não é muito complicado só prestem atenção nessa parte: <strong>while ( $resp = mysql_fetch_object( $qryresp ) )</strong>, o Flex recebe os dados como objeto, portanto devemos usar o <strong>mysql_fetch_object</strong>.</p>
<p align="justify">Agora vamos entrar na parte que nos interessa, vamos ao Flex, aqui no meu post eu estarei sempre me referindo ao Flex Builder 2.01, mas isso não impede que você utilize um editor a sua escolha.</p>
<p align="justify">Abra o Flex e Crie um projeto novo:</p>
<p align="justify"><img src="http://www.mxstudio.com.br/imagens_artigos/artigo_001_imagens/img001.jpg" alt="Novo Projeto" height="412" width="400" /></p>
<p align="justify">Na próxima tela deixe a primeira opção marcada:</p>
<p align="justify"><img src="http://www.mxstudio.com.br/imagens_artigos/artigo_001_imagens/img002.jpg" height="379" width="400" /></p>
<p align="justify">Escolha um nome para o projeto, no nosso caso coloque: Enquete</p>
<p align="justify"><img src="http://www.mxstudio.com.br/imagens_artigos/artigo_001_imagens/img003.jpg" height="375" width="400" /></p>
<p align="justify">Click agora em finish e o Flex criará o projeto, ele criará o arquivo Enquete.mxml com o seguinte conteúdo:</p>
<p id="codigo" title="codigo6">&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;http://www.adobe.com/2006/mxml&#8221; layout=&#8221;absolute&#8221;&gt;&lt;/mx:Application&gt;</p>
<p align="justify">Crie dois viewStates, um com o nome <strong>enquete</strong> e outro com o nome <strong>resultado</strong></p>
<p align="justify"><img src="http://www.mxstudio.com.br/imagens_artigos/artigo_001_imagens/img004.jpg" height="78" width="400" /></p>
<p align="justify">Click no botão circulado de vermelho, abrirá a seguinte tela:</p>
<p align="justify"><img src="http://www.mxstudio.com.br/imagens_artigos/artigo_001_imagens/img005.jpg" height="191" width="258" /></p>
<p align="justify">Em nome coloque <strong>enquete</strong>, em Based on (Baseado em), deixe <strong>&lt;Base state&gt;</strong> e check a caixa <strong>Set as start state</strong>(Fixe como state inicial).<br />
Isso fará com que o state enquete seja carregado primeiro. Bom, agora sua aba State deve estar desse jeito:</p>
<p align="justify"><img src="http://www.mxstudio.com.br/imagens_artigos/artigo_001_imagens/img006.jpg" height="78" width="300" /></p>
<p align="justify">Selecione &lt;Base state&gt; e repita os passos novamente para criar outro viewState, mas agora não marque a caixa <strong>Set as start state</strong> e coloque o nome como <strong>resultado</strong>.<br />
Nossas stateViews já estão criadas, a primeira servirá para mostrar a enquete e a segunda servirá para mostrar o resultado.<br />
Nosso código agora estará da seguinte forma:</p>
<p id="codigo" title="codigo7">&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;http://www.adobe.com/2006/mxml&#8221;    layout=&#8221;absolute&#8221;<br />
currentState=&#8221;enquete&#8221;<br />
horizontalScrollPolicy=&#8221;off&#8221; verticalScrollPolicy=&#8221;off&#8221;&gt;</p>
<p>&lt;mx:states&gt;<br />
&lt;mx:State name=&#8221;enquete&#8221;/&gt;<br />
&lt;mx:State name=&#8221;resultado&#8221;/&gt;<br />
&lt;/mx:states&gt;</p>
<p>&lt;/mx:Application&gt;</p>
<p align="justify">Notem que logo abaixo de <strong>currentState=&#8221;enquete&#8221;</strong> eu acrescentei a seguinte linha:<br />
<strong>horizontalScrollPolicy=&#8221;off&#8221; verticalScrollPolicy=&#8221;off&#8221;<br />
</strong>ela serve para que não seja criado scrolls na horizontal e vertical da nossa aplicação. Se ainda não estiver, selecione na Aba State a viewState <strong>enquete</strong> para que a mesma fique ativa, arraste agora um <strong>Panel</strong> da paleta <strong>Layout</strong> para a nossa aplicação e modifique as suas propriedades para as seguintes:</p>
<p id="codigo" title="codigo8">&lt;mx:Panel headerHeight=&#8221;10&#8243; width=&#8221;150&#8243; height=&#8221;260&#8243; layout=&#8221;absolute&#8221; horizontalCenter=&#8221;0&#8243; top=&#8221;0&#8243; cornerRadius=&#8221;5&#8243; horizontalScrollPolicy=&#8221;off&#8221; verticalScrollPolicy=&#8221;off&#8221;&gt;&lt;/mx:Panel&gt;</p>
<p align="justify">Arraste agora um vBox, que fica na paleta Layout, para dentro do Panel e mude suas propriedades para as seguintes:</p>
<p id="codigo" title="codigo8"> &lt;mx:VBox id=&#8221;vBoxEnquete&#8221; left=&#8221;5&#8243; top=&#8221;5&#8243; bottom=&#8221;5&#8243; verticalAlign=&#8221;bottom&#8221; verticalGap=&#8221;10&#8243; horizontalScrollPolicy=&#8221;off&#8221; verticalScrollPolicy=&#8221;off&#8221; right=&#8221;5&#8243;&gt;&lt;/mx:VBox&gt;</p>
<p align="justify">Nosso código agora deverá parecer com isso:</p>
<p id="codigo" title="codigo9">&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;http://www.adobe.com/2006/mxml&#8221;<br />
layout=&#8221;absolute&#8221;<br />
currentState=&#8221;enquete&#8221;<br />
backgroundColor=&#8221;#FFFFFF&#8221;<br />
horizontalScrollPolicy=&#8221;off&#8221; verticalScrollPolicy=&#8221;off&#8221;&gt;&lt;mx:states&gt;<br />
&lt;mx:State name=&#8221;enquete&#8221;&gt;<br />
&lt;mx:AddChild position=&#8221;lastChild&#8221;&gt;<br />
&lt;mx:Panel headerHeight=&#8221;10&#8243; width=&#8221;150&#8243; height=&#8221;260&#8243; layout=&#8221;absolute&#8221; horizontalCenter=&#8221;0&#8243; top=&#8221;0&#8243; cornerRadius=&#8221;5&#8243; horizontalScrollPolicy=&#8221;off&#8221; verticalScrollPolicy=&#8221;off&#8221;&gt;<br />
&lt;mx:VBox id=&#8221;vBoxEnquete&#8221; left=&#8221;5&#8243; top=&#8221;5&#8243; bottom=&#8221;5&#8243; verticalAlign=&#8221;bottom&#8221; verticalGap=&#8221;10&#8243; horizontalScrollPolicy=&#8221;off&#8221; verticalScrollPolicy=&#8221;off&#8221; right=&#8221;5&#8243;&gt;<br />
&lt;/mx:VBox&gt;<br />
&lt;/mx:Panel&gt;<br />
&lt;/mx:AddChild&gt;<br />
&lt;/mx:State&gt;<br />
&lt;mx:State name=&#8221;resultado&#8221;/&gt;<br />
&lt;/mx:states&gt;</p>
<p>&lt;/mx:Application&gt;</p>
<p align="justify">Vamos incluir agora, um &lt;mx:Text&gt;, 4 &lt;mx:RadioButton&gt; 1 &lt;mx:HBox&gt; e 2 &lt;mx:Button&gt;, isso tudo dentro do VBox &#8220;vBoxEnquete&#8221; criado anteriormente, depois de criados, mude suas propriedades para as seguintes:</p>
<p id="codigo" title="codigo10"> &lt;mx:Text x=&#8221;10&#8243; y=&#8221;6&#8243; width=&#8221;120&#8243; height=&#8221;72&#8243; textAlign=&#8221;center&#8221; fontWeight=&#8221;bold&#8221; color=&#8221;#ff8040&#8243; text=&#8221;Nossa pergunta irá aparecer aqui&#8221;/&gt;<br />
&lt;mx:RadioButtonGroup itemClick=&#8221;" id=&#8221;rgEnquete&#8221;/&gt;<br />
&lt;mx:RadioButton id=&#8221;rb0&#8243; value=&#8221;" label=&#8221;Resposta1&#8243; groupName=&#8221;rgEnquete&#8221; textAlign=&#8221;left&#8221;/&gt;<br />
&lt;mx:RadioButton id=&#8221;rb1&#8243; value=&#8221;" label=&#8221;Resposta2&#8243; groupName=&#8221;rgEnquete&#8221; textAlign=&#8221;left&#8221;/&gt;<br />
&lt;mx:RadioButton id=&#8221;rb2&#8243; value=&#8221;" label=&#8221;Resposta3&#8243; groupName=&#8221;rgEnquete&#8221; textAlign=&#8221;left&#8221;/&gt;<br />
&lt;mx:RadioButton id=&#8221;rb3&#8243; value=&#8221;" label=&#8221;Resposta4&#8243; groupName=&#8221;rgEnquete&#8221; textAlign=&#8221;left&#8221;/&gt;<br />
&lt;mx:HBox verticalAlign=&#8221;middle&#8221; horizontalAlign=&#8221;center&#8221; height=&#8221;30&#8243; width=&#8221;120&#8243; horizontalGap=&#8221;10&#8243;&gt;<br />
&lt;mx:Button id=&#8221;btnVotar&#8221; x=&#8221;9&#8243; y=&#8221;209&#8243; label=&#8221;Votar&#8221; click=&#8221;" enabled=&#8221;false&#8221;/&gt;<br />
&lt;mx:Button x=&#8221;75&#8243; y=&#8221;209&#8243; label=&#8221;Ver&#8221; click=&#8221;"/&gt;<br />
&lt;/mx:HBox&gt;</p>
<p align="justify">Bom, agora nossa enquete deve estar com essa cara:</p>
<p align="justify"><img src="http://www.mxstudio.com.br/imagens_artigos/artigo_001_imagens/img007.jpg" height="277" width="170" /></p>
<p align="justify">Vamos fazer a tela que mostrará os resultados, para isso vá até a paleta State e selecione a viewState resultado, o código do resultado é parecido com o da enquete, só que no lugar do radioButton vamos colocar o progressBar, veja o código abaixo:<br />
<strong><em>Obs.: Evitem copiar e colar os código, para uma boa prática, é importante digitar os código, ou então montar o layout utilizando dos componentes do Flex, assim vocês pegarão mais prática e vão se familiarizando com os componentes.</em></strong></p>
<p id="codigo" title="codigo11"> &lt;mx:State name=&#8221;resultado&#8221;&gt;<br />
&lt;mx:AddChild position=&#8221;lastChild&#8221;&gt;<br />
&lt;mx:Panel headerHeight=&#8221;10&#8243; width=&#8221;150&#8243; height=&#8221;260&#8243; layout=&#8221;absolute&#8221; horizontalCenter=&#8221;0&#8243; top=&#8221;0&#8243; cornerRadius=&#8221;5&#8243; horizontalScrollPolicy=&#8221;off&#8221; verticalScrollPolicy=&#8221;off&#8221;&gt;<br />
&lt;mx:VBox id=&#8221;vBoxResultado&#8221; left=&#8221;5&#8243; top=&#8221;5&#8243; bottom=&#8221;5&#8243; verticalAlign=&#8221;bottom&#8221; verticalGap=&#8221;10&#8243; horizontalScrollPolicy=&#8221;off&#8221; verticalScrollPolicy=&#8221;off&#8221; right=&#8221;5&#8243;&gt;<br />
&lt;mx:Text text=&#8221;Resultado Parcial da Votação&#8221; left=&#8221;5&#8243; right=&#8221;5&#8243; top=&#8221;5&#8243; height=&#8221;32&#8243; textAlign=&#8221;center&#8221; fontWeight=&#8221;bold&#8221; color=&#8221;#FF0000&#8243; width=&#8221;120&#8243;/&gt;<br />
&lt;mx:ProgressBar id=&#8221;bar0&#8243; label=&#8221;00.0%&#8221; width=&#8221;120&#8243; minimum=&#8221;0&#8243; maximum=&#8221;100&#8243; direction=&#8221;right&#8221; mode=&#8221;manual&#8221; themeColor=&#8221;#00CC00&#8243;/&gt;<br />
&lt;mx:ProgressBar id=&#8221;bar1&#8243; label=&#8221;00.0%&#8221; width=&#8221;120&#8243; minimum=&#8221;0&#8243; maximum=&#8221;100&#8243; direction=&#8221;right&#8221; mode=&#8221;manual&#8221; themeColor=&#8221;#0066CC&#8221;/&gt;<br />
&lt;mx:ProgressBar id=&#8221;bar2&#8243; label=&#8221;00.0%&#8221; width=&#8221;120&#8243; minimum=&#8221;0&#8243; maximum=&#8221;100&#8243; direction=&#8221;right&#8221; mode=&#8221;manual&#8221; themeColor=&#8221;#FFCC00&#8243;/&gt;<br />
&lt;mx:ProgressBar id=&#8221;bar3&#8243; label=&#8221;00.0%&#8221; width=&#8221;120&#8243; minimum=&#8221;0&#8243; maximum=&#8221;100&#8243; direction=&#8221;right&#8221; mode=&#8221;manual&#8221; themeColor=&#8221;#FF0000&#8243;/&gt;<br />
&lt;mx:HBox width=&#8221;120&#8243; horizontalCenter=&#8221;0&#8243; height=&#8221;35&#8243; verticalAlign=&#8221;middle&#8221; horizontalAlign=&#8221;center&#8221;&gt;<br />
&lt;mx:Button label=&#8221;Voltar&#8221; horizontalCenter=&#8221;0&#8243; bottom=&#8221;10&#8243; click=&#8221;currentState=&#8217;enquete&#8217;&#8221; width=&#8221;100&#8243;/&gt;<br />
&lt;/mx:HBox&gt;<br />
&lt;/mx:VBox&gt;<br />
&lt;/mx:Panel&gt;<br />
&lt;/mx:AddChild&gt;<br />
&lt;/mx:State&gt;</p>
<p align="justify">A tela resultado deve parecer com isso:</p>
<p align="justify"><img src="http://www.mxstudio.com.br/imagens_artigos/artigo_001_imagens/img008.jpg" height="281" width="177" /></p>
<p align="justify">Pessoal, por enquanto é isso, sei que vocês gostariam de tudo de uma vez, mas o artigo iria ficar muito grande, então resolvi dividir em duas apartes, no próximo artigo, vamos colocar a enquete pra funcionar. Até a próxima.</p>
<p align="justify">&#8220;A ansiedade é um obstáculo entre o homem e a felicidade&#8221; &#8211; FRC</p>
<p align="justify">Caso tenha alguma dúvida utilize o fórum.<br />
Abraços, Luis Carlos Quinhone &#8211; <a href="mailto:renan@mxstudio.com.br">quinhone@mxstudio.com.br</a></p>
<p><script>  FormatXML(new Array(\'codigo1\', \'codigo2\', \'codigo3\', \'codigo4\', \'codigo5\', \'codigo6\', \'codigo7\', \'codigo8\', \'codigo9\', \'codigo10\', \'codigo11\'));  FormatAS(new Array(\'codigo5\')); </script> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/desenvolvimento/flex/criando_uma_enquete_com_flex___php___mysql___parte_i/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Usando renderes de item customizado e editores de item</title>
		<link>http://www.mxstudio.com.br/desenvolvimento/flex/usando_renderes_de_item_customizado_e_editores_de_item/</link>
		<comments>http://www.mxstudio.com.br/desenvolvimento/flex/usando_renderes_de_item_customizado_e_editores_de_item/#comments</comments>
		<pubDate>Sun, 13 May 2007 00:00:00 +0000</pubDate>
		<dc:creator>Luiz</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Este arquivo mostra como usar renderes de item customizado e editores de item para mostrar imagem, link, checkbox e etc num dataGrid]]></description>
			<content:encoded><![CDATA[<link href="http://www.mxstudio.com.br/webgerenciador/_css/PadraoCss.css" rel="stylesheet" type="text/css" /> <script src="http://www.mxstudio.com.br/js/ColorCode.js"></script>
<p align="justify">Para controlar a  exibição de um componente de lista, você escreve um renderer de item ou  editor de item personalizado. Seus rendereres de item e editores de  item personalizados ainda usam a funcionalidade subjacente do controle  de lista, mas permite você controlar a exibição e edição dos dados. Os  rendereres de item e editores de artigo personalizados fornecem a você  com várias vantagens:</p>
<ul>
<li>
<p align="justify">Você pode criar uma interface de usuário mais compelativa substituindo a exibição de texto com uma aparência mais intuitivo.</p>
</li>
<li>
<p align="justify">Você pode combinar elementos múltiplos em um item de lista única, como label e uma imagem.</p>
</li>
<li>
<p align="justify">Você pode programaticamente controlar a exibição dos dados.</p>
</li>
</ul>
<p align="justify">O  controle de Lista seguinte é uma modificação do controle de Lista na  retribuição de item padrão de seção e edição de célula. Neste exemplo,  você usa um renderer de item personalizado para exibir o nome do  estado, capital, e um URL para o site da web oficial do estado em cada  artigo de lista:</p>
<p align="center"><img src="http://www.mxstudio.com.br/imagens_artigos/htmlO0115_luiz1_imagens/listStateCellRenderer4.jpg" alt="Custom item renderer" border="0" hspace="0" /></p>
<p id="codigo" title="codigo1"> &lt;?xml version=&#8221;1.0&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;http://www.adobe.com/2006/mxml&#8221; xmlns:local=&#8221;*&#8221; height=&#8221;700&#8243; width=&#8221;700&#8243;&gt;<br />
&lt;mx:List id=&#8221;myList&#8221; itemRenderer=&#8221;RendererState&#8221;  rowHeight=&#8221;75&#8243; height=&#8221;200&#8243; width=&#8221;250&#8243;&gt;<br />
&lt;mx:dataProvider&gt;<br />
&lt;mx:Object label=&#8221;Alaska&#8221; data=&#8221;Juneau&#8221;  webPage=&#8221;http://www.state.ak.us/&#8221;/&gt;<br />
&lt;mx:Object label=&#8221;Alabama&#8221; data=&#8221;Montgomery&#8221;  webPage=&#8221;http://www.alabama.gov/&#8221;/&gt;<br />
&lt;mx:Object label=&#8221;Arkansas&#8221; data=&#8221;Little Rock&#8221;  webPage=&#8221;http://www.state.ar.us/&#8221;/&gt;<br />
&lt;/mx:dataProvider&gt;<br />
&lt;/mx:List&gt;<br />
&lt;/mx:Application&gt;</p>
<p id="codigo" title="codigo2"> &lt;?xml version=&#8221;1.0&#8243;?&gt;<br />
&lt;mx:VBox xmlns:mx=&#8221;http://www.adobe.com/2006/mxml&#8221;&gt;<br />
&lt;mx:Script&gt;<br />
&lt;![CDATA[<br />
// Import Event and URLRequest classes.<br />
import flash.events.Event;<br />
import flash.net.URLRequest;<br />
public var u:URLRequest;<br />
// Event listener to open URL using the navigateToURL() method.<br />
private function handleClick(eventObj:Event):void {<br />
u = new URLRequest(data.webPage);<br />
navigateToURL(u);<br />
}<br />
]]&gt;<br />
&lt;/mx:Script&gt;<br />
&lt;mx:HBox&gt;<br />
&lt;!&#8211; Use Label controls to display state and capital names. &#8211;&gt;<br />
&lt;mx:Label id=&#8221;State&#8221; text=&#8221;State: {data.label}&#8221;/&gt;<br />
&lt;mx:Label id=&#8221;Statecapital&#8221; text=&#8221;Capital: {data.data}&#8221;/&gt;<br />
&lt;/mx:HBox&gt;<br />
&lt;!&#8211; Define the LinkButton control to open a URL. &#8211;&gt;<br />
&lt;mx:LinkButton id=&#8221;webPage&#8221; label=&#8221;Official {data.label} Web page&#8221;  click=&#8221;handleClick(event);&#8221; color=&#8221;blue&#8221;/&gt;<br />
&lt;/mx:VBox&gt;</p>
<p align="justify">Na  próxima imagem, você usa um renderer de item padrão para a primeira e  terceiras colunas do DataGrid. Você usa um renderer de item  personalizado para a segunda coluna para exibir o álbum junto com o  título do álbum no DataGrid.</p>
<p align="center"> <img src="http://www.mxstudio.com.br/imagens_artigos/htmlO0115_luiz1_imagens/dgMultiFieldCellRenderer5.jpg" alt="Default and custom item renderers in DataGrid control" border="0" hspace="0" /></p>
<p id="codigo" title="codigo3"> &lt;?xml version=&#8221;1.0&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;http://www.adobe.com/2006/mxml&#8221; xmlns:local=&#8221;*&#8221;&gt;<br />
&lt;mx:Script&gt;<br />
&lt;![CDATA[<br />
// Data includes URL to album cover.<br />
[Bindable]<br />
public var initDG:Array = [<br />
{Artist:'Pavement', Album:'Slanted and Enchanted',<br />
Price:11.99, Cover: 'http://myComp.com/albums/brighten.jpg'},<br />
{Artist:'Pavement', Album:'Brighten the Corners',<br />
Price:11.99, Cover: 'http://myComp.com/albums/brighten.jpg'}<br />
];<br />
]]&gt;<br />
&lt;/mx:Script&gt;<br />
&lt;mx:DataGrid id=&#8221;myGrid&#8221; dataProvider=&#8221;{initDG}&#8221;  variableRowHeight=&#8221;true&#8221;&gt;<br />
&lt;mx:columns&gt;<br />
&lt;mx:DataGridColumn dataField=&#8221;Artist&#8221;/&gt;<br />
&lt;mx:DataGridColumn dataField=&#8221;Album&#8221;&gt;<br />
&lt;mx:itemRenderer&gt;<br />
&lt;mx:Component&gt;<br />
&lt;mx:VBox&gt;<br />
&lt;mx:Text id=&#8221;albumName&#8221; selectable=&#8221;false&#8221; width=&#8221;100%&#8221;  text=&#8221;{data.Album}&#8221;/&gt;<br />
&lt;mx:Image id=&#8221;albumImage&#8221; height=&#8221;45&#8243;  source=&#8221;{data.Cover}&#8221;/&gt;<br />
&lt;/mx:VBox&gt;<br />
&lt;/mx:Component&gt;<br />
&lt;/mx:itemRenderer&gt;<br />
&lt;/mx:DataGridColumn&gt;<br />
&lt;mx:DataGridColumn dataField=&#8221;Price&#8221;/&gt;<br />
&lt;/mx:columns&gt;<br />
&lt;/mx:DataGrid&gt;<br />
&lt;/mx:Application&gt;</p>
<p id="codigo" title="codigo4"> &lt;mx:DataGridColumn dataField=&#8221;Cover&#8221;&gt;<br />
&lt;mx:itemRenderer&gt;<br />
&lt;mx:Component&gt;<br />
&lt;mx:VBox horizontalAlign=&#8221;center&#8221;&gt;<br />
&lt;mx:Image height=&#8221;45&#8243; source=&#8221;{data.Cover}&#8221;/&gt;<br />
&lt;/mx:VBox&gt;<br />
&lt;/mx:Component&gt;<br />
&lt;/mx:itemRenderer&gt;<br />
&lt;/mx:DataGridColumn&gt;</p>
<p align="justify">Da  mesma maneira que você pode definir um renderer de item personalizado  para controlar a exibição de uma célula, você pode usar um editor de  item personalizado para editar o conteúdo da célula. Por exemplo, se o  renderer de item personalizado exibe uma imagem, você podia definir um  editor de item personalizado que usa um ComboBox que permite ao  usuários selecionarem uma imagem de uma lista de imagens disponíveis.  Ou, você podia usar um CheckBox para permitir o usuário fixar um valor  verdadeiro ou falso para uma célula, como o exemplo seguinte mostra:</p>
<p align="center"><img src="http://www.mxstudio.com.br/imagens_artigos/htmlO0115_luiz1_imagens/cellrendererev6.jpg" alt="DataGrid control with custom item editor" border="0" hspace="0" /></p>
<p align="justify">Usando  um renderer de item não implica que o controle também tem um editor de  item. Freqüentemente, você não permite seus controles serem editados;  Isto é, eles são para somente exibem.</p>
<p align="justify">Você  também pode usar um editor de item sem um renderer de item  correspondente. Por exemplo, você podia exibir informações como um  masculino/feminino ou true/false como texto usando o renderer de item  padrão. Mas, você podia então usar um editor de item personalizado com  um ComboBox que fornece o usuário só um conjunto limitado de opções  para entrar na célula quando modificando o valor.</p>
<p align="justify"><strong>NOTA: Este artigo é uma tradução do original inglês &#8220;Using custom item renderers and item editors&#8221; da documentação do Flex Builder 2.01,</strong></p>
<p align="justify">Caso tenha alguma dúvida utilize o fórum.<br />
Abraços, Luis Carlos Quinhone &#8211; <a href="mailto:renan@mxstudio.com.br">quinhone@mxstudio.com.br</a></p>
<p><script>  FormatXML(new Array(\'codigo1\', \'codigo2\', \'codigo3\', \'codigo4\')); FormatAS(new Array(\'codigo5\'));   </script> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/desenvolvimento/flex/usando_renderes_de_item_customizado_e_editores_de_item/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

