<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>wxNewbie</title><description></description><managingEditor>noreply@blogger.com (Alex)</managingEditor><pubDate>Thu, 19 Dec 2024 00:28:19 -0300</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">53</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><link>http://wxnewbie.blogspot.com/</link><language>en-us</language><itunes:explicit>no</itunes:explicit><itunes:subtitle/><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><item><title>GODOT GAME ENGINE - ENDLESS RUNNER - Publicando o nosso jogo na itch.io</title><link>http://wxnewbie.blogspot.com/2021/04/tutorial-godot-criando-um-jogo-em-2d.html</link><author>noreply@blogger.com (Alex)</author><pubDate>Tue, 6 Apr 2021 12:52:00 -0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-166656931025554652</guid><description>&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen="" class="BLOG_video_class" height="415" src="https://www.youtube.com/embed/NDJw12oRmMA" width="498" youtube-src-id="NDJw12oRmMA"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://img.youtube.com/vi/NDJw12oRmMA/default.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>GODOT GAME ENGINE - ENDLESS RUNNER - Exportando o Jogo (HTML5, Windows e Linux)</title><link>http://wxnewbie.blogspot.com/2021/03/godot-game-engine-endless-runner_16.html</link><author>noreply@blogger.com (Alex)</author><pubDate>Tue, 16 Mar 2021 00:40:00 -0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-3746765968132156418</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen="" class="BLOG_video_class" height="359" src="https://www.youtube.com/embed/PvVO3THGsR4" width="462" youtube-src-id="PvVO3THGsR4"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://img.youtube.com/vi/PvVO3THGsR4/default.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>GODOT GAME ENGINE - ENDLESS RUNNER - AUDIO E BOTÃO TOUCHSCREEN</title><link>http://wxnewbie.blogspot.com/2021/03/godot-game-engine-endless-runner-audio.html</link><author>noreply@blogger.com (Alex)</author><pubDate>Wed, 10 Mar 2021 10:52:00 -0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-7126234848497653263</guid><description>&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen="" class="BLOG_video_class" height="353" src="https://www.youtube.com/embed/xVTV7YsVDG0" width="493" youtube-src-id="xVTV7YsVDG0"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://img.youtube.com/vi/xVTV7YsVDG0/default.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>GODOT GAME ENGINE - ENDLESS RUNNER - INTERFACES DE USUÁRIO (HUD, GAME OVER E MENU)</title><link>http://wxnewbie.blogspot.com/2021/03/godot-game-engine-endless-runner_2.html</link><author>noreply@blogger.com (Alex)</author><pubDate>Wed, 10 Mar 2021 10:52:00 -0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-6323479830483654798</guid><description>&lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen="" class="BLOG_video_class" height="359" src="https://www.youtube.com/embed/UAVNA9Is-Kk" width="500" youtube-src-id="UAVNA9Is-Kk"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://img.youtube.com/vi/UAVNA9Is-Kk/default.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>GODOT GAME ENGINE - ENDLESS RUNNER - SISTEMA DE PONTUAÇÃO E DETECTANDO COLISÕES</title><link>http://wxnewbie.blogspot.com/2021/03/godot-game-engine-endless-runner_75.html</link><author>noreply@blogger.com (Alex)</author><pubDate>Wed, 10 Mar 2021 10:51:00 -0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-7968017716048764801</guid><description>&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen="" class="BLOG_video_class" height="358" src="https://www.youtube.com/embed/7DGucuTX3qA" width="488" youtube-src-id="7DGucuTX3qA"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://img.youtube.com/vi/7DGucuTX3qA/default.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>GODOT GAME ENGINE - ENDLESS RUNNER - CRIANDO OS INIMIGOS</title><link>http://wxnewbie.blogspot.com/2021/03/godot-game-engine-endless-runner_3.html</link><author>noreply@blogger.com (Alex)</author><pubDate>Wed, 10 Mar 2021 10:50:00 -0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-7352252991965403729</guid><description>&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen="" class="BLOG_video_class" height="346" src="https://www.youtube.com/embed/DqEEzutnGpU" width="487" youtube-src-id="DqEEzutnGpU"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://img.youtube.com/vi/DqEEzutnGpU/default.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>GODOT GAME ENGINE - ENDLESS RUNNER - CRIANDO O JOGADOR</title><link>http://wxnewbie.blogspot.com/2021/03/godot-game-engine-endless-runner_10.html</link><author>noreply@blogger.com (Alex)</author><pubDate>Wed, 10 Mar 2021 10:49:00 -0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-8634605798937785998</guid><description>&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen="" class="BLOG_video_class" height="363" src="https://www.youtube.com/embed/KbhoGFqn2Fs" width="495" youtube-src-id="KbhoGFqn2Fs"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://img.youtube.com/vi/KbhoGFqn2Fs/default.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>GODOT GAME ENGINE - ENDLESS RUNNER - CRIANDO UM BACKGROUND INFINITO</title><link>http://wxnewbie.blogspot.com/2021/03/godot-game-engine-endless-runner.html</link><author>noreply@blogger.com (Alex)</author><pubDate>Wed, 10 Mar 2021 10:48:00 -0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-7631257858874439701</guid><description>&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen="" class="BLOG_video_class" height="370" src="https://www.youtube.com/embed/tYq89jq8F1o" width="499" youtube-src-id="tYq89jq8F1o"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://img.youtube.com/vi/tYq89jq8F1o/default.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>INTRODUÇÃO A GODOT GAME ENGINE</title><link>http://wxnewbie.blogspot.com/2021/03/introducao-godot-game-engine.html</link><author>noreply@blogger.com (Alex)</author><pubDate>Wed, 10 Mar 2021 10:46:00 -0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-8588127770491172523</guid><description>&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen="" class="BLOG_video_class" height="359" src="https://www.youtube.com/embed/qk54iJYy9Gw" width="484" youtube-src-id="qk54iJYy9Gw"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://img.youtube.com/vi/qk54iJYy9Gw/default.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Função "explode" com wxWidgets</title><link>http://wxnewbie.blogspot.com/2013/07/funcao-explode-com-wxwidgets.html</link><category>Dicas</category><author>noreply@blogger.com (Alex)</author><pubDate>Fri, 5 Jul 2013 15:25:00 -0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-76650165571198789</guid><description>Criar uma função “explode” em wxWidgets é uma tarefa simples, graças a facilidade proporcionada pelo wxArrayString, ela pode ser implementada da seguinte maneira:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:cpp"&gt;&lt;br /&gt;
&lt;br /&gt;
wxArrayString explode(char delimiter, wxString mStr)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;wxArrayString ret;&lt;br /&gt;
&amp;nbsp;wxString getStr;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; for( unsigned int i = 0 ; i &amp;lt; mStr.Length() ; i++ )&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp; if( mStr.GetChar(i) == delimiter)&lt;br /&gt;
&amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp;ret.Add( getStr );&lt;br /&gt;
&amp;nbsp; &amp;nbsp;getStr.Clear();&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
&amp;nbsp; else&lt;br /&gt;
&amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp;getStr.Append(mStr.GetChar(i));&lt;br /&gt;
&amp;nbsp; &amp;nbsp;if( i == ( mStr.Length() - 1 ) ) ret.Add( getStr );&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Para usarmos a mesma:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:cpp" &gt;
//Crio uma string contendo as substrings separadas por ';'&lt;br /&gt;
wxString mVal = wxT( "String 1;String 2;String 3;String 4" );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Agora crio o wxArrayString para pegar cada uma delas&lt;br /&gt;
wxArrayString mgetVals = explode( ';' , mVal );&lt;br /&gt;
&lt;br /&gt;
//Pego cada um dos valores&lt;br /&gt;
wxString valor1 = mgetVals.Item( 0 );&lt;br /&gt;
wxString valor2 = mgetVals.Item( 1 );&lt;br /&gt;
wxString valor3 = mgetVals.Item( 2 );&lt;br /&gt;
wxString valor4 = mgetVals.Item( 3 );&lt;br /&gt;
&lt;br /&gt;
&lt;/pre&gt;
&lt;br /&gt;
Essa função é muito útil para passarmos listas para um wxComboBox por exemplo.&lt;br /&gt;
&lt;br /&gt;
Qualquer dúvida ou correção no código deixe nos comentários.&lt;br /&gt;
&lt;br /&gt;
Até a próxima.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Verificar se um ano é bissexto</title><link>http://wxnewbie.blogspot.com/2013/07/verificar-se-um-ano-e-bissexto.html</link><category>Dicas</category><author>noreply@blogger.com (Alex)</author><pubDate>Mon, 1 Jul 2013 17:50:00 -0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-7590524295752988532</guid><description>&lt;b&gt;Hoje vou mostrar como podemos verificar se um ano é bissexto usando uma função bem simples:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
bool IsBissextile( int year )&lt;br /&gt;
{&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;return ( year % 4 == 0) &amp;amp;&amp;amp; ( ( year % 400 ) == 0 || ( year % 100 ) &amp;gt; 0 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
O que fizemos aqui foi verificar se o ano é divisível por 4, ou seja, verificamos se o módulo da divisão é igual a zero, depois verificamos uma segunda condição, o ano não deve ser divisível por 100 ao menos que ele seja divisível por 400, se as duas condições forem verdadeiras é porque o ano é bissexto.&lt;br /&gt;
&lt;br /&gt;
Vamos testar a função verificando se o ano atual é bissexto, para isso vamos usar a classe&amp;nbsp;&lt;a href="http://docs.wxwidgets.org/2.8/wx_wxdatetime.html" target="_blank"&gt;wxDateTime&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
int year = wxDateTime::Today().GetYear();&lt;br /&gt;
&lt;br /&gt;
if( IsBissextile( year ) )&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;wxMessageBox( wxT( "É bissexto" ) );&lt;br /&gt;
else&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;wxMessageBox( wxT( "Não é bissexto" ) );&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Até a próxima dica&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>ScreenShot com wxWidgets</title><link>http://wxnewbie.blogspot.com/2013/03/screenshot-com-wxwidgets.html</link><category>Imagens com wxWidgets</category><category>ScreenShot com wxWidgets</category><category>wxDC</category><author>noreply@blogger.com (Alex)</author><pubDate>Wed, 13 Mar 2013 02:51:00 -0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-6835876919906814833</guid><description>Hoje vamos ver como
podemos tirar um screenshot usando wxWidgets.&lt;br /&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Em primeiro lugar vamos
ver quais as classes que usaremos para isso:&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
O wxWidgets trabalha
com alguns tipos de DC ou Device Context, cada um deles é
responsável por selecionar um determinado objeto para que possamos
desenhar ou obter informações de imagem, um dos Dcs que já
expliquei por aqui foi o wxPaintDC, com ele, selecionamos um objeto
derivado de wxWindow e podemos desenhar nesse objeto, hoje vamos ver
outros dois Dcs, o wxScreenDC, que seleciona a tela do Desktop,
fazendo com que possamos convertê-la em imagem, depois usaremos o
wxMemoryDC que seleciona um wxBitmap e consegue desenhar no mesmo.&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Vamos criar uma função
chamada GetScreenShot que vai nos retornar um wxBitmap:&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;/div&gt;
&lt;pre class="brush:c++"&gt;wxBitmap GetScreenShot()
{

	wxSize mSize = wxGetDisplaySize();

	wxBitmap mBmp = wxBitmap(mSize.x, mSize.y);

	wxMemoryDC mDC(mBmp);

	wxScreenDC sDC;

	mDC.Blit(0, 0, mSize.x, mSize.y, &amp;amp;sDC, 0, 0);

	mDC.SelectObject(wxNullBitmap);

	return mBmp;

}
&lt;/pre&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Na linha 1 temos a
declaração da função.&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Na linha 4 pegamos o
tamanho do nosso Desktop, incluindo a área do painel, usando a
função wxGetDisplaySize() que me retornará um wxSize.&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Na linha 6 criamos um
wxBitmap com as dimensões da nossa Área de Trabalho.&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
ha 8 criamos o
wxMemoryDC passando como parâmetro o wxBitmap, ele será responsável
por plotar a imagem da Área de Trabalho em nosso bitmap.&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Na linha 10 criamos o
wxScreenDC, ele será responsável por pegar a imagem da Área de
Trabalho, ele fará isso automaticamente.&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Em 12 temos a parte
mais complicada da função, é quando plotamos a imagem da área de
trabalho no bitmap usando a função Blit.&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Os parâmetros da
função Blit que usaremos aqui são:&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
O primeiro e o segundo
parâmetros são usados para passar a posição inicial do bitmap
onde queremos desenhar, aqui uso 0 e 0 pois quero que a Área de
Trabalho seja plotada iniciando nessas coordenadas.&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
O terceiro e quarto
parâmetros são a altura e largura que irei usar na plotagem, no
caso o tamanho total da área de trabalho.&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
O quinto parâmetro é
um ponteiro para o DC que quero “colar” na imagem, no caso o
wxScreenDC com a imagem da nossa Área de Trabalho.&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
O sexto e o sétimo
parâmetros definem a partir de qual ponto do DC que estamos plotando
será iniciado o processo, aqui eu usei 0 e 0 mais uma vez pois quero
a área total do mesmo.&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Na linha 14 removo o
mBmp do controle do wxMemoryDC.&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
E em 16 finalizo
retornando o mBmp na função.&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Vejam que com poucas
linhas conseguimos obter um ScreenShot da nossa área de trabalho.&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Para testar a função:&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class="brush:c++"&gt;class wxAppSS : public wxApp
{
    public:
        virtual bool OnInit(void);
};

bool wxAppSS::OnInit(void)
{
    wxInitAllImageHandlers();
    GetScreenShot().SaveFile(wxT("test.png"), wxBITMAP_TYPE_PNG);
    return false;
}

IMPLEMENT_APP(wxAppSS)
&lt;/pre&gt;

&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP-X8tNX9jYj7oWrs5C6Q175cE93TfT1SGqOTP8PrPoOVBrybq9s-TiihN7bsDZYrPfbQ6AeegCOml5pOo1vPWBJJ3d0QBsdWBz9MuzotQAnGv3nvqcAlIztUhpOjodTBwDZ43AaTo05k/s1600/test.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP-X8tNX9jYj7oWrs5C6Q175cE93TfT1SGqOTP8PrPoOVBrybq9s-TiihN7bsDZYrPfbQ6AeegCOml5pOo1vPWBJJ3d0QBsdWBz9MuzotQAnGv3nvqcAlIztUhpOjodTBwDZ43AaTo05k/s400/test.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: right;"&gt;Resultado Final no Mint/Linux&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP-X8tNX9jYj7oWrs5C6Q175cE93TfT1SGqOTP8PrPoOVBrybq9s-TiihN7bsDZYrPfbQ6AeegCOml5pOo1vPWBJJ3d0QBsdWBz9MuzotQAnGv3nvqcAlIztUhpOjodTBwDZ43AaTo05k/s72-c/test.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>wxAutomationObject – Parte 5 – Contando o número de Workbooks abertos em uma Instância</title><link>http://wxnewbie.blogspot.com/2012/11/wxautomationobject-parte-5-contando-o.html</link><category>OLE Automation</category><category>wxAutomationObject</category><category>wxWidgets</category><author>noreply@blogger.com (Alex)</author><pubDate>Mon, 19 Nov 2012 06:31:00 -0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-8445154956471879850</guid><description>Hoje vamos criar uma função
simples para contar o número de Workbooks abertos na&amp;nbsp;instância&amp;nbsp;do Excel que
estamos trabalhando.&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Na classe wxAutomationExcel
em public digitamos a declaração da função.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; mso-ansi-language: EN-US; mso-no-proof: yes;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="font-size: large;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;int&lt;/span&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;
wxAutomationExcel::GetWorkbookCount()&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; mso-ansi-language: EN-US; mso-no-proof: yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
no arquivo mexcel.cpp sua
contrução.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: blue; font-family: 'Courier New';"&gt;int&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: 'Courier New';"&gt;
wxAutomationExcel::GetWorkbookCount()&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;const&lt;/span&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt; wxVariant workbooksCountV = &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;this&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;-&amp;gt;GetProperty(wxT(&lt;span style="color: #a31515;"&gt;"Workbooks.Count"&lt;/span&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;if&lt;/span&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt; (workbooksCountV.IsNull())&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wxLogError(wxT(&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: #a31515; font-family: 'Courier New';"&gt;"Problemas ao executar a
operação"&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;return&lt;/span&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt; 0;&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;const&lt;/span&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;long&lt;/span&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt; workbooksCount = workbooksCountV;&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue; font-family: 'Courier New';"&gt;return&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: 'Courier New';"&gt;
workbooksCount;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: 'Courier New'; line-height: 115%;"&gt;}&lt;/span&gt;&lt;u&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; line-height: 115%; mso-no-proof: yes;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Aqui estamos trabalhando mais
uma vez com propriedades, no caso, chamamos a propriedade Workbooks.Count, ela
retornará um long como resultado, veja que se meu wxVariant for igual a nulo,
eu retorno o 0, eu faço assim, pois se existirem Workbooks na instância, ele
será maior que zero.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Para testar a função:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; mso-no-proof: yes;"&gt;wxAutomationExcel m_excel;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: green; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; mso-no-proof: yes;"&gt;//Primeiro
pegamos a instância do Excel,&lt;u&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: green; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; mso-no-proof: yes;"&gt;//se ela não
existir eu retorno Nulo&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; mso-no-proof: yes;"&gt;if&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; mso-no-proof: yes;"&gt;(!m_excel.GetExcelInstance())&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; mso-no-proof: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; mso-no-proof: yes;"&gt;return&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; mso-no-proof: yes;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: green; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; mso-no-proof: yes;"&gt;//Pego o número
de Workbooks abertos...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; mso-ansi-language: EN-US; mso-no-proof: yes;"&gt;int&lt;/span&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; mso-ansi-language: EN-US; mso-no-proof: yes;"&gt; getWBCount
= m_excel.GetWorkbookCount();&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; mso-ansi-language: EN-US; mso-no-proof: yes;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: green; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; mso-no-proof: yes;"&gt;//Exibo uma
mensagem com o valor.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-no-proof: yes;"&gt;wxMessageBox(wxString::Format(&lt;span style="color: #a31515;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #a31515; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; line-height: 115%; mso-no-proof: yes;"&gt;Número
de Workbooks abertos\n%d&lt;/span&gt;&lt;span lang="EN-US" style="color: #a31515; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-no-proof: yes;"&gt;"&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-no-proof: yes;"&gt;, getWBCount));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Lembrando que essa função conta apenas o número
de Workbooks que estão abertos na instância que estamos controlando, se&amp;nbsp;tivéssemos&amp;nbsp;5 instâncias rodando, cada uma com 1 Workbook aberto, o valor
retornado seria 1.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Uma imagem com o resultado do teste, veja que
tenho 3 Workbooks abertos, todos na instância que eu estou controlando.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAKodnUNmSGPKrCusuarY6UkgiSocAGWIfovnsfIIDPw4LLJR2gIlgEMbONP9J_X8xF_A-I3l3NUjM4Xa-b8njX1LQwpmgAZYb0SkgyLvHeySkQWuh5wBTX0ODBMRaGW9mFV72Bb7KALU/s1600/excel5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="67" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAKodnUNmSGPKrCusuarY6UkgiSocAGWIfovnsfIIDPw4LLJR2gIlgEMbONP9J_X8xF_A-I3l3NUjM4Xa-b8njX1LQwpmgAZYb0SkgyLvHeySkQWuh5wBTX0ODBMRaGW9mFV72Bb7KALU/s400/excel5.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAKodnUNmSGPKrCusuarY6UkgiSocAGWIfovnsfIIDPw4LLJR2gIlgEMbONP9J_X8xF_A-I3l3NUjM4Xa-b8njX1LQwpmgAZYb0SkgyLvHeySkQWuh5wBTX0ODBMRaGW9mFV72Bb7KALU/s72-c/excel5.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>wxAutomationObject – Parte 4 – Exibir ou esconder o Excel</title><link>http://wxnewbie.blogspot.com/2012/10/wxautomationobject-parte-4-exibir-ou.html</link><category>OLE Automation</category><category>wxAutomationObject</category><category>wxWidgets</category><author>noreply@blogger.com (Alex)</author><pubDate>Sat, 27 Oct 2012 18:39:00 -0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-5049738422776052229</guid><description>Agora começaremos a trabalhar
com propriedades, na classe wxAutomationObject usamos dois métodos para isto,
um chamado GetPropert para pegarmos o valor de uma propriedade e PutPropert
para alterarmos uma propriedade, note que a partir daqui iremos utilizar com&amp;nbsp;frequência&amp;nbsp;wxVariants, então recomendo que vocês leiam a documentação da mesma.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Primeiro vamos verificar se o
Excel está visível ou se está correndo em segundo plano.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Na classe wxAutomationExcel
em public digitamos a declaração da função.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;&lt;span style="color: blue; font-family: 'Courier New'; line-height: 115%;"&gt;bool&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: 'Courier New'; line-height: 115%;"&gt; GetVisible();&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; line-height: 115%; mso-no-proof: yes;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
no arquivo mexcel.cpp sua
contrução.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;bool&lt;/span&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;
wxAutomationExcel::GetVisible()&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;if&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;(&lt;span style="color: blue;"&gt;this&lt;/span&gt;&lt;b&gt; == NULL)&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;return&lt;/span&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;false&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wxVariant m_show = &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;this&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;-&amp;gt;GetProperty(wxT(&lt;span style="color: #a31515;"&gt;"Visible"&lt;/span&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;return&lt;/span&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt; m_show.GetBool();&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;}&lt;u style="font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
No código acima, vemos o uso
do método GetProperty, passamos para o mesmo o nome da propriedade que queremos
pegar o valor e passamos esse para um wxVariant, veja que antes verifico se
wxAutomationExcel é nulo, se o Excel estiver visível nossa função retornará
verdadeiro, caso contrário, falso...&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Agora, vamos alterar essa
propriedade, escondendo ou exibindo a instância do Excel que estiver setada em
nosso wxAutomationExcel.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Na classe wxAutomationExcel
em public digitamos a declaração da função.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; line-height: 115%; mso-no-proof: yes;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;&lt;span style="color: blue; font-family: 'Courier New'; line-height: 115%;"&gt;bool&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: 'Courier New'; line-height: 115%;"&gt; SetVisible(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue; font-family: 'Courier New'; line-height: 115%;"&gt;bool&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: 'Courier New'; line-height: 115%;"&gt;&lt;span style="font-size: large;"&gt; visible);&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
no arquivo mexcel.cpp sua
contrução.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; mso-ansi-language: EN-US; mso-no-proof: yes;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;bool&lt;/span&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;
wxAutomationExcel::SetVisible(&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;bool&lt;/span&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt; visible)&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;if&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;(&lt;span style="color: blue;"&gt;this&lt;/span&gt;&lt;b&gt; == NULL)&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;return&lt;/span&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;false&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;if&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;(!&lt;span style="color: blue;"&gt;this&lt;/span&gt;-&amp;gt;PutProperty(wxT(&lt;span style="color: #a31515;"&gt;"Visible"&lt;/span&gt;), visible))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: 'Courier New';"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wxLogError(wxT(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #a31515; font-family: 'Courier New';"&gt;"Excel não pode ser exibido"&lt;/span&gt;&lt;span style="font-family: 'Courier New';"&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue; font-family: 'Courier New';"&gt;return&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: 'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue; font-family: 'Courier New';"&gt;false&lt;/span&gt;&lt;span style="font-family: 'Courier New';"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue; font-family: 'Courier New';"&gt;return&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: 'Courier New';"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue; font-family: 'Courier New';"&gt;true&lt;/span&gt;&lt;span style="font-family: 'Courier New';"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="font-family: 'Courier New';"&gt;}&lt;span style="font-size: small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Nessa função utilizamos o
método PutProperty, esse método é utilizado para pegarmos alguma propriedade do
objeto setado em nossa classe, passamos primeiro o nome da propriedade e depois
o valor que queremos dar para ela, no caso da propriedade Visible passamos um
valor booleano.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Vale lembrar que essa classe
está trabalhando apenas com o Excel.Application, então todos os métodos e
propriedades passados como parâmetros servem apenas para a aplicação em si.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Para testarmos as duas
funções apresentadas nesse tutorial:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; mso-ansi-language: EN-US; mso-no-proof: yes;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;wxAutomationExcel m_excel;&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;if&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;(!m_excel.GetExcelInstance())&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: 'Courier New';"&gt;return&lt;/span&gt;&lt;span lang="EN-US" style="font-family: 'Courier New';"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="color: green; font-family: 'Courier New';"&gt;//ou&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="color: green; font-family: 'Courier New';"&gt;//if(!m_excel.CreateExcelInstance())&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="color: green; font-family: 'Courier New';"&gt;//&amp;nbsp;&amp;nbsp; return;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: green; font-family: 'Courier New';"&gt;//Vejo se o
Excel está visível...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: blue; font-family: 'Courier New';"&gt;if&lt;/span&gt;&lt;span style="font-family: 'Courier New';"&gt;(m_excel.GetVisible())&lt;span style="color: green;"&gt;//...se sim...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_excel.SetVisible(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue; font-family: 'Courier New';"&gt;false&lt;/span&gt;&lt;span style="font-family: 'Courier New';"&gt;);&lt;span style="color: green;"&gt;//...escondo...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: blue; font-family: 'Courier New';"&gt;else&lt;/span&gt;&lt;span style="color: green; font-family: 'Courier New';"&gt;//...se não...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Courier New'; line-height: 115%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_excel.SetVisible(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue; font-family: 'Courier New'; line-height: 115%;"&gt;true&lt;/span&gt;&lt;span style="font-family: 'Courier New'; line-height: 115%;"&gt;);&lt;span style="color: green;"&gt;//...exibo
o mesmo...&lt;span style="font-size: small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
No próximo tutorial iremos
iniciar com Workbooks, até.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>wxAutomationObject – Parte 3 – Criando uma nova instância do Excel.</title><link>http://wxnewbie.blogspot.com/2012/10/wxautomationobject-parte-3-criando-uma.html</link><category>OLE Automation</category><category>wxAutomationObject</category><category>wxWidgets</category><author>noreply@blogger.com (Alex)</author><pubDate>Wed, 24 Oct 2012 12:23:00 -0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-2896534594899525972</guid><description>Criaremos agora uma função
que executa uma nova instância do Excel, ela&amp;nbsp;
será publica e do tipo booleana também.&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Na classe wxAutomationExcel
em public digite a função.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; line-height: 115%;"&gt;bool&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; line-height: 115%;"&gt; CreateExcelInstance();&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; line-height: 115%; mso-no-proof: yes;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
no arquivo mexcel.cpp sua
contrução.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;bool&lt;/span&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;
wxAutomationExcel::CreateExcelInstance()&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;if&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;(!&lt;span style="color: blue;"&gt;this&lt;/span&gt;-&amp;gt;CreateInstance(wxT(&lt;span style="color: #a31515;"&gt;"Excel.Application"&lt;/span&gt;)))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wxLogError(wxT(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #a31515; font-family: &amp;quot;Courier New&amp;quot;;"&gt;"Não foi possível criar a instância"&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;return&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;false&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;return&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;true&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;}&lt;span style="font-size: small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Nesse código utilizamos outro método da classe wxAutomationObject, CreateInstance passando para o mesmo a
string "Excel.Application", ela retornará verdadeiro se conseguir criar uma nova
instância do Excel passando o ponteiro para nosso wxAutomationExcel, se ocorrer
algum problema ela retornará falso e nosso wxAutomationExcel será nulo.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Para testar a função:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;wxAutomationExcel m_excel;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;if&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;(!m_excel.CreateExcelInstance())&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;return&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;;&lt;span style="font-size: small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="color: green; font-family: Courier New;"&gt;&lt;span style="line-height: 115%;"&gt;//Aqui&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: green; font-family: Courier New;"&gt;&lt;span style="line-height: 18px;"&gt;poderíamos&lt;/span&gt;&lt;/span&gt;&lt;span style="color: green; font-family: Courier New;"&gt;&lt;span style="line-height: 115%;"&gt;&amp;nbsp;seguir...&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>wxAutomationObject – Parte 2 – Verificando se o Excel está em execução:</title><link>http://wxnewbie.blogspot.com/2012/10/wxautomationobject-parte-2-verificando.html</link><category>OLE Automation</category><category>wxAutomationObject</category><category>wxWidgets</category><author>noreply@blogger.com (Alex)</author><pubDate>Wed, 24 Oct 2012 00:46:00 -0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-4166234554221097401</guid><description>Vamos iniciar criando uma
função que verifica se o Excel está em execução, ela será pública do tipo booleana, se uma instância do Excel estiver em execução ela&amp;nbsp;retornará&amp;nbsp;verdadeiro, se não, retornará falso.&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Na classe wxAutomationExcel
em public digite:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: large;"&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; line-height: 115%;"&gt;bool&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; line-height: 115%;"&gt; GetExcelInstance();&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; line-height: 115%; mso-no-proof: yes;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
no arquivo mexcel.cpp sua
construção.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;bool&lt;/span&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;
wxAutomationExcel::GetExcelInstance()&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;if&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;(!&lt;span style="color: blue;"&gt;this&lt;/span&gt;-&amp;gt;GetInstance(wxT(&lt;span style="color: #a31515;"&gt;"Excel.Application"&lt;/span&gt;)))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wxLogError(wxT(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #a31515; font-family: &amp;quot;Courier New&amp;quot;;"&gt;"Excel não está em execução"&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;return&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;false&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;return&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;true&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;}&lt;span style="font-size: small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
No código acima vemos a
função GetInstance da classe wxAutomationObject, ela verificará se o Excel está
rodando, se o mesmo estiver executando, ele passará o ponteiro da aplicação para nosso
wxAutomationExcel e retornará verdadeiro, nesse ponto já podemos trabalhar com
a automação, se o Excel não estiver rodando, ele retornará falso e nosso
wxAutomationExcel será nulo, ou seja, não estará preparado para executar a
automação.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;
Uma coisa que você deve ter em mente é que, se mais de uma&amp;nbsp;instancia do Excel existir, ele&amp;nbsp;&amp;nbsp;pegará como ponteiro a primeira instancia criada.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Para testar essa função :&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; mso-no-proof: yes;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;wxAutomationExcel
m_excel;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;if&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;(!m_excel.GetExcelInstance())&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;return&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="color: green; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="line-height: 115%;"&gt;//Aqui&amp;nbsp;&lt;/span&gt;&lt;span style="line-height: 18px;"&gt;poderíamos&lt;/span&gt;&lt;span style="line-height: 115%;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="line-height: 18px;"&gt;prosseguir&lt;/span&gt;&lt;span style="line-height: 115%;"&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>wxAutomationObject - Excel - Reiniciando</title><link>http://wxnewbie.blogspot.com/2012/10/wxautomationobject-excel-reiniciando.html</link><category>OLE Automation</category><category>wxAutomationObject</category><category>wxWidgets</category><author>noreply@blogger.com (Alex)</author><pubDate>Mon, 22 Oct 2012 10:48:00 -0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-1897879203748076867</guid><description>Voltando com os tutoriais sobre wxAutomationObject, como
sempre, vou postando as coisas sem muito critério e as elas acabam ficando um pouco complicadas, vou reiniciar do zero pra
explicar melhor como as coisas funcionam, e criar classes para gerenciar o
conteúdo das explicações.&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
wxAutomationObject é uma classe que fornece um ponteiro
IDispath, que nada mais é que uma referência para um COM/OLE Object, permitindo
a execução e automação do Excel, por exemplo.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
*Importante: wxAtomationObject é uma classe exclusiva para
wxMSW, ou seja, você só conseguirá compilar os exemplos no Sistema Operacional
Windows.&lt;u&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Para entendermos a estrutura das classes, vamos entender
como é estruturado um arquivo do Excel.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvDqDzCVAXwnQsBuVfSo5vfeAkc-y6mB15SnZYfOuQ-CihhF6V1HqPQ6l8MdY2zDEKznHA0IkAcU0YSClaCGwUIroRcEhIrZF0-raF2Y1C3Y7BGhv_Wy9PA_3kzzps7unk7F9O7hx36r4/s1600/tuto0.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="247" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvDqDzCVAXwnQsBuVfSo5vfeAkc-y6mB15SnZYfOuQ-CihhF6V1HqPQ6l8MdY2zDEKznHA0IkAcU0YSClaCGwUIroRcEhIrZF0-raF2Y1C3Y7BGhv_Wy9PA_3kzzps7unk7F9O7hx36r4/s320/tuto0.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class="MsoNormal"&gt;
No diagrama podemos ver claramente cada objeto que iremos
utilizar:&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
A instância do programa seria o Excel que está sendo
executado na memória naquele momento, seria o Excel.exe sendo executado.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
O Workbook é a pasta de trabalho ou o arquivo em si.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Dentro de um Workbook podemos ter uma ou mais planilhas, que
no diagrama vemos como Sheet ou Worksheet, por padrão, ao iniciarmos um novo
Workbook o mesmo conterá 3 planilhas (Sheet).&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
E as células, que são os locais onde iremos inserir ou ler
os dados que queremos.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Talvez as coisas fiquem mais claras com a imagem abaixo.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;v:shape alt="automation.png" id="Imagem_x0020_1" o:spid="_x0000_i1025" style="height: 224.25pt; mso-wrap-style: square; visibility: visible; width: 425.25pt;" type="#_x0000_t75"&gt;
 &lt;v:imagedata o:title="automation" src="file:///C:\Users\Alex\AppData\Local\Temp\msohtmlclip1\01\clip_image002.png"&gt;
&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikf0oSiKSyOmEwkQecPxABRMg5_foQ0g7fy6lnPrckAbDVxl_WRwbkE4FHhm-9frffHqhD8SQf2eznuMJVAN4HxAVXZr4ElsPQ8TO9_Vl5J13aBhKpl7Mnb7xMnrne-V2SqglarVnuMSk/s1600/tuto1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="211" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikf0oSiKSyOmEwkQecPxABRMg5_foQ0g7fy6lnPrckAbDVxl_WRwbkE4FHhm-9frffHqhD8SQf2eznuMJVAN4HxAVXZr4ElsPQ8TO9_Vl5J13aBhKpl7Mnb7xMnrne-V2SqglarVnuMSk/s400/tuto1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Em 1, temos o Excel em execução, é ele que vai gerenciar a
automação e execução dos procedimentos e propriedades.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Em 2 temos a pasta de trabalho, é nosso arquivo em si, ele
que vai conter todas as nossas planilhas, usaremos o mesmo para salvar o
documento ou inserirmos e deletarmos planilhas.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Em 3 temos as planilhas que irão conter as células, podemos
alterar seu nome, por exemplo, e gerenciar as células existentes.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Em 4, as células, elas irão conter os valores, como data,
textos, números, etc... podemos alterar suas propriedades também, como a cor de
fundo, tipo de borda...&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Agora que temos de forma clara como é a estrutura de um
arquivo Excel, assim como de sua instância, vamos iniciar com os códigos.
Criaremos 2 arquivos para armazenar as classes, um chamado mexcel.h e outro
mexcel.cpp.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Primeiro iremos trabalhar com uma classe que vai representar
o Excel em si, vou chamá-la de wxAutomationExcel&amp;nbsp;e ela será derivada de
wxAutomationObject, ele será aqui na nossa estrutura de desenvolvimento, a “Instância”.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
No arquivo mexcel.h digite:&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;#include&lt;/span&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: #a31515; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;lt;wx/wx.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;#include&lt;/span&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: #a31515; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;lt;wx/msw/ole/automtn.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;class&lt;/span&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;
wxAutomationExcel: &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;public&lt;/span&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt; wxAutomationObject&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt; text-indent: 35.4pt;"&gt;
&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;public&lt;/span&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;wxAutomationExcel();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ~wxAutomationExcel();&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt; text-indent: 35.4pt;"&gt;
&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;private&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; line-height: 115%;"&gt;};&lt;span style="font-size: small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; line-height: 115%; mso-no-proof: yes;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
E no arquivo mexcel.cpp:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="EN-US" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;;"&gt;#include&lt;/span&gt;&lt;b&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: #a31515; font-family: &amp;quot;Courier New&amp;quot;;"&gt;"mexcel.h"&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span lang="EN-US" style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;wxAutomationExcel::wxAutomationExcel():wxAutomationObject()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;wxAutomationExcel::~wxAutomationExcel()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;}&lt;span style="font-size: small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 12.0pt; mso-no-proof: yes;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;
&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
No próximo tutorial vamos
iniciar com as funções que irão fazer parte da classe.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;br /&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvDqDzCVAXwnQsBuVfSo5vfeAkc-y6mB15SnZYfOuQ-CihhF6V1HqPQ6l8MdY2zDEKznHA0IkAcU0YSClaCGwUIroRcEhIrZF0-raF2Y1C3Y7BGhv_Wy9PA_3kzzps7unk7F9O7hx36r4/s72-c/tuto0.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>wxBrChart - Iniciando</title><link>http://wxnewbie.blogspot.com/2012/06/wxbrchart-iniciando.html</link><category>wxBrChart</category><category>wxWidgets</category><author>noreply@blogger.com (Alex)</author><pubDate>Fri, 8 Jun 2012 07:27:00 -0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-1676554258697585892</guid><description>No blog antigo, eu havia comentado sobre a criação de uma biblioteca para criação de gráficos (charts) com wxWidgets, ela se chamava wxBrChart, e eu acabei abandonado o código por um bom tempo, e há duas semanas eu acabei voltando com ela e reescrevi o controle de gráficos em barra, apenas para ver como saía.&lt;br /&gt;
&lt;br /&gt;
São gráficos bem simples, onde você passa cada um dos valores para sua respectiva série, a área do gráfico é plotada em uma imagem que fica posicionada no plano de fundo do componente, seriam gráficos para aplicações bem expecíficas...&lt;br /&gt;
&lt;br /&gt;
O resultado parcial é o que segue:&lt;br /&gt;
&lt;br /&gt;
Chart com barras Verticais&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7PF8zCbbzRPanmtE9AbwySgKvkZfjcYAzuwM-JjM6_ncCxzOpgKJOkQeie_fk64rCApb9Ef7yWZ6mk7SC0BtDWrPmdpZDPtOucnMvV1xoPJgCLjHvL6aaRjNbv0A2sfZ9OK9Mq7OuFIM/s1600/brchart_newbie1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7PF8zCbbzRPanmtE9AbwySgKvkZfjcYAzuwM-JjM6_ncCxzOpgKJOkQeie_fk64rCApb9Ef7yWZ6mk7SC0BtDWrPmdpZDPtOucnMvV1xoPJgCLjHvL6aaRjNbv0A2sfZ9OK9Mq7OuFIM/s320/brchart_newbie1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Chart com barras Horizontais &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwUnTzyOvAlmMjaj6BQOZPV4VjWFCwuXmBcZT7iWBTUAxOgHJC8wpUKb_jIQZa-HAChuUIAiIjNuVTTbdDP-mmQtQfuACfOBI6wRmz9BulKNq8_r27zhAx5BAE4GqYtBleDHVzkcBxhN8/s1600/brchart_newbie2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="168" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwUnTzyOvAlmMjaj6BQOZPV4VjWFCwuXmBcZT7iWBTUAxOgHJC8wpUKb_jIQZa-HAChuUIAiIjNuVTTbdDP-mmQtQfuACfOBI6wRmz9BulKNq8_r27zhAx5BAE4GqYtBleDHVzkcBxhN8/s320/brchart_newbie2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
O código para os dois é o mesmo, apenas passo para o contrutor o tipo de gráfico.&lt;br /&gt;
&lt;br /&gt;
O código para a criação é o seguinte:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCya_XvYCB1YsfhJoJuIjVSCA3Smo3NoUN7HZDis97Egkl8s1iakH5jt_0Nbl_LFtR4khEHc7-29XnjlfmKcO2C4dZlGs0sfJVL5WV6pDh1L2L1RXftAxXwNOpPz8mq4RGJicSgJPinAw/s1600/brchart_newbie3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="392" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCya_XvYCB1YsfhJoJuIjVSCA3Smo3NoUN7HZDis97Egkl8s1iakH5jt_0Nbl_LFtR4khEHc7-29XnjlfmKcO2C4dZlGs0sfJVL5WV6pDh1L2L1RXftAxXwNOpPz8mq4RGJicSgJPinAw/s400/brchart_newbie3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Assim que o mesmo estiver rodando sem erros, vou compartilhar o fonte da biblioteca, ajudas e idéias serão bem vindas.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7PF8zCbbzRPanmtE9AbwySgKvkZfjcYAzuwM-JjM6_ncCxzOpgKJOkQeie_fk64rCApb9Ef7yWZ6mk7SC0BtDWrPmdpZDPtOucnMvV1xoPJgCLjHvL6aaRjNbv0A2sfZ9OK9Mq7OuFIM/s72-c/brchart_newbie1.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Tutorial Lazarus e Firebird – 2 - Criando um projeto no Lazarus</title><link>http://wxnewbie.blogspot.com/2011/11/tutorial-lazarus-e-firebird-2-criando.html</link><category>Firebird</category><category>Lazarus</category><author>noreply@blogger.com (Alex)</author><pubDate>Tue, 15 Nov 2011 08:46:00 -0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-3162545391981823615</guid><description>&lt;p&gt;Por ser um tutorial mais básico, vou deixá-lo apenas em video, no próximo iremos criar a janela Splash&lt;/p&gt;

&lt;div style="text-align: center;"&gt;
&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;object style="height: 266px; width: 320px;"&gt;&lt;param name="movie" value="http://www.youtube.com/v/8EXOrOkQdJE?version=3&amp;feature=player_profilepage"&gt;

&lt;param name="allowFullScreen" value="true"&gt;

&lt;param name="allowScriptAccess" value="always"&gt;

&lt;embed src="http://www.youtube.com/v/8EXOrOkQdJE?version=3&amp;feature=player_profilepage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="320" height="266"&gt;&lt;/object&gt;&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Tutorial Lazarus e Firebird – 1 - Instalando o Lazarus no Debian Squeeze</title><link>http://wxnewbie.blogspot.com/2011/10/tutorial-lazarus-e-firebird-instalando.html</link><author>noreply@blogger.com (Alex)</author><pubDate>Mon, 31 Oct 2011 23:09:00 -0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-7472170376622437851</guid><description>&lt;style type="text/css"&gt;
 &lt;!--
  @page { margin: 2cm }
  P { margin-bottom: 0.21cm }
 --&gt;
&lt;/style&gt;&lt;br /&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Hoje iremos iniciar os
tutoriais sobre a IDE Lazarus, que pode ser comparada ao Delphi,
principalmente em relação a sua versão 7, a vantagem aqui é que
Lazarus é gratuito e pode ser usado em outras plataformas além do
Windows.&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Para a instalação no
Debian Squeeze, existe apenas um pequeno problema na quebra de uma
dependência no pacote fpc-source, para a instalação completa e sem
problemas vamos seguir os passos seguintes:&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Abra o gerenciador de
pacotes&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4JTu5UiclWxZhOyxt6NvHe70MH0icTuBzGWcR_7WhZIpnHpkQwtPQWicZmOfbNgF-yoXk6gTWqgYHVwl18pLg2ui6KXUq7kwkHjImC1yXBOMTQTS5Zd6hbej7j9MthstLKVsqIea05Dg/s1600/Captura_de_tela.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="232" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4JTu5UiclWxZhOyxt6NvHe70MH0icTuBzGWcR_7WhZIpnHpkQwtPQWicZmOfbNgF-yoXk6gTWqgYHVwl18pLg2ui6KXUq7kwkHjImC1yXBOMTQTS5Zd6hbej7j9MthstLKVsqIea05Dg/s320/Captura_de_tela.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Na busca rápida,
digite Lazarus&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhggDQFyz8UVgYNBdvprYxkL4g8PK-1ao0u8SbSQJvra_in2vjv4nKId1G-ps71GCc86UsGrNCX53L3z2uNIGHQMhil4A8lcWf-bEcvOhFAYTIGCu1hQxqOx-WqRQ_3OM-A-UkUPSvqNxU/s1600/Captura_de_tela-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="87" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhggDQFyz8UVgYNBdvprYxkL4g8PK-1ao0u8SbSQJvra_in2vjv4nKId1G-ps71GCc86UsGrNCX53L3z2uNIGHQMhil4A8lcWf-bEcvOhFAYTIGCu1hQxqOx-WqRQ_3OM-A-UkUPSvqNxU/s320/Captura_de_tela-1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Procure o pacote
lazarus-ide e marque para instalação&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1sc7yUAj6jj9XCdb0_Ku4HeKb3kWv4kOxr87_cHeXgtdot372MEH3H8_HQLM9Tcst0t3NrkF1-HYsWTq1Wf2ylsQ1szXGuGXq_-bEiL0A_zTA9P5Lz4gg7BHYx1Epf7MtWRf7YdReujQ/s1600/Captura_de_tela-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="182" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1sc7yUAj6jj9XCdb0_Ku4HeKb3kWv4kOxr87_cHeXgtdot372MEH3H8_HQLM9Tcst0t3NrkF1-HYsWTq1Wf2ylsQ1szXGuGXq_-bEiL0A_zTA9P5Lz4gg7BHYx1Epf7MtWRf7YdReujQ/s320/Captura_de_tela-2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
As dependências serão
exibidas, confirme clicando em “Marcar”&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyjxlJlCtvFjWoq381FfbU-QSxWcl41P2BwsHRLwOGHERsIvgnCw5F7PKi3Aek995RRfgyOuxw-t0GDaJE6ALg4BTNpLWFSz7PHyVXviXivW-_pblaEdueZUJqbBsavlW3RLnVPLXSgEs/s1600/Captura_de_tela-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="257" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyjxlJlCtvFjWoq381FfbU-QSxWcl41P2BwsHRLwOGHERsIvgnCw5F7PKi3Aek995RRfgyOuxw-t0GDaJE6ALg4BTNpLWFSz7PHyVXviXivW-_pblaEdueZUJqbBsavlW3RLnVPLXSgEs/s320/Captura_de_tela-3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Clique em Aplicar na
toolbar do Synaptic&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPgI9Lp-hKF8U3WZj3-6E5n4Y72N1wntVrQKX2hbjuqu4n3-KdebQylJI6rP_DMRuktKOxoUS1kSIQ-ZI0WpwJI0tTmtu7Kp_vmYMBi6Sg1rV_Kcp8TMCyjH3WPkeJxwhpxpGgKXZsIfU/s1600/Captura_de_tela-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPgI9Lp-hKF8U3WZj3-6E5n4Y72N1wntVrQKX2hbjuqu4n3-KdebQylJI6rP_DMRuktKOxoUS1kSIQ-ZI0WpwJI0tTmtu7Kp_vmYMBi6Sg1rV_Kcp8TMCyjH3WPkeJxwhpxpGgKXZsIfU/s320/Captura_de_tela-4.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Depois aplicar na
janela que se abre&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsjVwq8lROCwcVDpzlE7slTKBAY5xdUUYrtxtm68D3Q-UFc7-psOxOUWmRPibrlUSNpoj8HfdvJLFZyMEGi3msejPb-8t5XfNTc2VtPQcp7oUk4KvOpI-yQDjUCGAzX09QS5MTHTJq7t4/s1600/Captura_de_tela-5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="268" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsjVwq8lROCwcVDpzlE7slTKBAY5xdUUYrtxtm68D3Q-UFc7-psOxOUWmRPibrlUSNpoj8HfdvJLFZyMEGi3msejPb-8t5XfNTc2VtPQcp7oUk4KvOpI-yQDjUCGAzX09QS5MTHTJq7t4/s320/Captura_de_tela-5.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Aguarde a instalação&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuTnk3Ryp1UifpiMnFWM2pycPkmhKhGxi_WuFO88ekbcPSf7_2JarCiGxPmhOxXnVboc7sfA1kyH9IJJvrt9c5O6llIA_Y7pUtSb_BcTntW-vbw0BZlWpoadyXgDoxkRBwL4jzB0IeI_M/s1600/Captura_de_tela-6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuTnk3Ryp1UifpiMnFWM2pycPkmhKhGxi_WuFO88ekbcPSf7_2JarCiGxPmhOxXnVboc7sfA1kyH9IJJvrt9c5O6llIA_Y7pUtSb_BcTntW-vbw0BZlWpoadyXgDoxkRBwL4jzB0IeI_M/s320/Captura_de_tela-6.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Assim que a mesma
estiver completa, abra o Lazarus em Aplicativos → Desenvolvimento →
Lazarus&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcun4jG5LwaD0VdE_DWDdy1L90GLGn232jHdR7CbYsXZ_NzndOWIs29ihqnOImdG0WhpeVtj77j74BpwiOYp5gSQA-y9LvuSw17hiXrHHcf51sOeQZgQz3qw2MAp2xAz6ZWrvITqPzDlM/s1600/Captura_de_tela-7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcun4jG5LwaD0VdE_DWDdy1L90GLGn232jHdR7CbYsXZ_NzndOWIs29ihqnOImdG0WhpeVtj77j74BpwiOYp5gSQA-y9LvuSw17hiXrHHcf51sOeQZgQz3qw2MAp2xAz6ZWrvITqPzDlM/s320/Captura_de_tela-7.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span id="goog_1434446056"&gt;&lt;/span&gt;&lt;span id="goog_1434446057"&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Quando vocês tentarem
abrir o Lazarus um erro será exibido, é a dependência comentada
acima&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghiOLH4kYSvINWJqUv1xZS6mxLo8n1sBmwp11dZYdkEszR_vagKvdvKI3bXsrBD0O0FaCPZUpAcYpPuSxFqmfOIJxBx-vYsjXX6kNS8AxLSNo5ohfXgR7Uqp-wqt2hiZbDPkmzSGuj1OY/s1600/Captura_de_tela-8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="112" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghiOLH4kYSvINWJqUv1xZS6mxLo8n1sBmwp11dZYdkEszR_vagKvdvKI3bXsrBD0O0FaCPZUpAcYpPuSxFqmfOIJxBx-vYsjXX6kNS8AxLSNo5ohfXgR7Uqp-wqt2hiZbDPkmzSGuj1OY/s320/Captura_de_tela-8.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Veja que não é
possível criar eventos graças a esse problema&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYCwFeKhsVPi_ZppAz4THc_ud60AQSq2sLZ65rIo3ZcKaolTDWOc94uqPAQUttBFMi0tuXfkEfXX1WolxRg5L2-ZJ0rQI7h1QV9NDg46ycDGGCwp0JNBclI_vLN6XuSqoEMghIKaORpIM/s1600/Captura_de_tela-9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="67" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYCwFeKhsVPi_ZppAz4THc_ud60AQSq2sLZ65rIo3ZcKaolTDWOc94uqPAQUttBFMi0tuXfkEfXX1WolxRg5L2-ZJ0rQI7h1QV9NDg46ycDGGCwp0JNBclI_vLN6XuSqoEMghIKaORpIM/s320/Captura_de_tela-9.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Para corrigir, volte ao
Synaptic e marque fpc-source para instalação&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyT_oDUwQtCOs-hVSe_HYf_p16mXumiT1mwmKq4zPum4_LaRxcT0MQ74JzITPuGHMLZFb0G7W5-RodV3xrZh884AUne7kvNb-35e4veH8hWZDkbuNvxmkRgmpwUgNcbCEva0wi7sGrmrY/s1600/Captura_de_tela-10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="168" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyT_oDUwQtCOs-hVSe_HYf_p16mXumiT1mwmKq4zPum4_LaRxcT0MQ74JzITPuGHMLZFb0G7W5-RodV3xrZh884AUne7kvNb-35e4veH8hWZDkbuNvxmkRgmpwUgNcbCEva0wi7sGrmrY/s320/Captura_de_tela-10.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Aguarde pelo fim da
instalação e tente abrir o Lazarus novamente, o problema estará
resolvido.&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Vejam que esta não é
a única maneira de se instalar o Lazarus, você pode instalar o
mesmo pelo matapacote existente no repositório ou também fazendo o
download do pacote *.deb da última versão do Lazarus na página do
projeto no &lt;a href="http://sourceforge.net/projects/lazarus/files/" target="_blank"&gt;SourceForge&lt;/a&gt;.&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="western" style="margin-bottom: 0cm;"&gt;
Até a próxima&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Vídeo com a explicação:&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;object style="height: 390px; width: 640px;"&gt;&lt;param name="movie" value="http://www.youtube.com/v/TJkPSpoHNFY?version=3&amp;feature=player_detailpage"&gt;


&lt;param name="allowFullScreen" value="true"&gt;


&lt;param name="allowScriptAccess" value="always"&gt;


&lt;embed src="http://www.youtube.com/v/TJkPSpoHNFY?version=3&amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="320" height="180"&gt;&lt;/object&gt;
&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4JTu5UiclWxZhOyxt6NvHe70MH0icTuBzGWcR_7WhZIpnHpkQwtPQWicZmOfbNgF-yoXk6gTWqgYHVwl18pLg2ui6KXUq7kwkHjImC1yXBOMTQTS5Zd6hbej7j9MthstLKVsqIea05Dg/s72-c/Captura_de_tela.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Invasão Feminina.</title><link>http://wxnewbie.blogspot.com/2011/10/invasao-feminina.html</link><category>Acessórios</category><author>noreply@blogger.com (Amanda Botari)</author><pubDate>Fri, 28 Oct 2011 11:00:00 -0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-1213496967041092274</guid><description>&lt;div style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;span style="color: #3d85c6;"&gt;C&lt;/span&gt;&lt;span style="color: #073763;"&gt;onvidada pelo Ilustríssimo Sr. Porcena para vos passar meu humilde conhecimento em informática, já lhes adianto que não sei (nem pretendo saber) absolutamente nada de programação.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #073763; font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="color: #073763; font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;Portanto minhas visitas aqui serão exclusivamente para falar sobre acessórios Hi-Tech para computadores e inovações eletrônicas em geral (:&lt;/div&gt;&lt;div style="color: #073763; font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="color: #073763; font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;Hoje queria compartilhar um acessório que acho super legal para todos que passam várias horas a fio (como os programadores, por exemplo) em frente ao computador: os Foot Warmers e Hand Warmers.&amp;nbsp;&lt;/div&gt;&lt;div style="color: #073763; font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="color: #073763; font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;Se tratam de almofadinhas ou pantufas confortáveis e com um sistema de aquecimento através de USB, permitindo assim que você mantenha seus pés e mão aquecidos, nos dias mais frios.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-8FwbHr9xsRk/TqqlHVC-f9I/AAAAAAAAAGI/cf7gfZqW5rY/s1600/Lovely_Cartoon_USB_Hand_Warmer_Mouse_Pad-02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-8FwbHr9xsRk/TqqlHVC-f9I/AAAAAAAAAGI/cf7gfZqW5rY/s320/Lovely_Cartoon_USB_Hand_Warmer_Mouse_Pad-02.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; text-align: center;"&gt;&amp;nbsp;&lt;span style="color: #3d85c6;"&gt;Aquecedores de Mão&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;span style="color: #3d85c6;"&gt;T&lt;/span&gt;&lt;span style="color: #073763;"&gt;á, mas estamos entrando na estação mais quente do ano. Porque eu compraria isso agora? Simples!!! Porque todos os artigos de Inverno estão na promoção e você pagará por esses itens fofos e úteis entre $ 15,00 e 20,00 (dólares).&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #073763; font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;span style="color: #073763;"&gt;São vários modelos disponíveis, discretos ou chamativos&lt;/span&gt;.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-WO-Dg34HU_M/TqqmBw3v_3I/AAAAAAAAAGQ/PERgnQJDB9E/s1600/usb-paw-slipper2.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="145" src="http://4.bp.blogspot.com/-WO-Dg34HU_M/TqqmBw3v_3I/AAAAAAAAAGQ/PERgnQJDB9E/s200/usb-paw-slipper2.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #3d85c6; font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;Pantufa &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-R8XHwx5nQ7g/TqqmMtJO0jI/AAAAAAAAAGY/1PBOg1N_VJE/s1600/278477437_853.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-R8XHwx5nQ7g/TqqmMtJO0jI/AAAAAAAAAGY/1PBOg1N_VJE/s200/278477437_853.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="color: #0b5394; font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; text-align: right;"&gt;&amp;nbsp;Botinha&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #073763; font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;&lt;span style="color: #3d85c6;"&gt;E&lt;/span&gt;sses produtos podem ser encontrados no &lt;a href="http://www.ebay.com/sch/i.html?_kw=Warmers&amp;amp;_kw=Hand&amp;amp;_kw=Warmers"&gt;E-Bay&lt;/a&gt; e em um site que gosto muito chamado &lt;a href="http://br.ioffer.com/search/items/usb%20Hand%20Warmers"&gt;Ioffer&lt;/a&gt;.&lt;/span&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://3.bp.blogspot.com/-8FwbHr9xsRk/TqqlHVC-f9I/AAAAAAAAAGI/cf7gfZqW5rY/s72-c/Lovely_Cartoon_USB_Hand_Warmer_Mouse_Pad-02.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>Problemas com o case sensitive do Firebird.</title><link>http://wxnewbie.blogspot.com/2011/10/problemas-com-o-case-sensitive-do.html</link><category>Firebird</category><author>noreply@blogger.com (Alex)</author><pubDate>Fri, 28 Oct 2011 05:53:00 -0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-2713303359405127768</guid><description>Hoje estava procurando algumas coisas sobre o comando INNER JOIN no  Firebird e achei muitas pessoas com dúvida sobre este problema.&lt;br /&gt;
No &lt;a href="http://www.firebase.com.br/" title="Firebase"&gt;Firebird,&lt;/a&gt; este problema pode ser resolvido facilmente usando o comando UPPER, como proceder?&lt;br /&gt;
Simples…&lt;br /&gt;
Imagine uma situação assim:&lt;br /&gt;
Tabela contatos:&lt;br /&gt;
&lt;br /&gt;
&lt;table border="1" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;td valign="top" width="66"&gt;&lt;span style="color: #99cc00;"&gt;&lt;b&gt;Campo&lt;/b&gt;&lt;/span&gt;&lt;/td&gt; &lt;td valign="top" width="163"&gt;&lt;span style="color: #99cc00;"&gt;&lt;b&gt;Valor&lt;/b&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td valign="top" width="66"&gt;Nome&lt;/td&gt; &lt;td valign="top" width="163"&gt;José&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td valign="top" width="66"&gt;Apelido&lt;/td&gt; &lt;td valign="top" width="163"&gt;Zé&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;
&amp;nbsp;Queremos selecionar este contato, mas podemos ter um usuário preguiçoso que vai digitar o seguinte na consulta:&lt;br /&gt;
SELECT * FROM contatos WHERE Nome=‘josé’ AND Apelido=‘zé’;&lt;br /&gt;
&lt;br /&gt;
O que esta consulta retornará no Firebird?&lt;br /&gt;
&lt;br /&gt;
Nada… Pois ele é case-sensitive, ou seja, José é diferente de jOsé  que é diferente de josé… Ele diferencia letra maiúscula de letra  minúscula.&lt;br /&gt;
&lt;br /&gt;
Vamos resolver este problema?&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM contatos WHERE &lt;span style="color: red;"&gt;UPPER(Nome)&lt;/span&gt;=&lt;span style="color: red;"&gt;UPPER(‘José’)&lt;/span&gt; AND &lt;span style="color: red;"&gt;UPPER(Apelido)&lt;/span&gt;=&lt;span style="color: red;"&gt;UPPER(‘zé’)&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
A consulta retornará os valores que queríamos.&lt;br /&gt;
&lt;br /&gt;
O que este comando faz?&lt;br /&gt;
&lt;br /&gt;
Ele vai converter todos os caracteres do campo selecionado em &lt;span style="color: red;"&gt;UPPER()&lt;/span&gt;  para maiúsculos e na string de comparação idem. No nosso caso ele  converteu a string original que era José para JOSÉ e a string de  consulta que era josé para JOSÉ, o mesmo para Zé e zé.&lt;br /&gt;
&lt;br /&gt;
Deste jeito, você consegue “burlar” o problema de sensibilidade a caixa do&lt;br /&gt;
Firebird, espero ter ajudado.&lt;br /&gt;
&lt;br /&gt;
Até a próxima.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Usando comando INSERT com SELECT no FireBird</title><link>http://wxnewbie.blogspot.com/2011/10/usando-comando-insert-com-select-no.html</link><category>Firebird</category><author>noreply@blogger.com (Alex)</author><pubDate>Fri, 28 Oct 2011 05:51:00 -0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-1944247388217202736</guid><description>Aqui vai um exemplo simples de como usar os dois comandos juntos para inserir dados que estão em outra tabela.&lt;br /&gt;
&lt;br /&gt;
Vamos usar um caso em que tenhamos estas duas tabelas:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #99cc00;"&gt;Tabela Cliente (TAB_CLI):&lt;/span&gt;&lt;br /&gt;
ID_CLIENTE&lt;br /&gt;
NOME_CLIENTE&lt;br /&gt;
TEL_CLIENTE&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #99cc00;"&gt;Tabela Vendas (TAB_VENDA):&lt;/span&gt;&lt;br /&gt;
ID_VENDA&lt;br /&gt;
ID_CLIENTE&lt;br /&gt;
PRODUTO&lt;br /&gt;
VALOR&lt;br /&gt;
&lt;br /&gt;
Para facilitar na hora de escolher qual cliente efetuou a compra,  podemos passar o nome do cliente como parâmetro e inserir seu ID  automaticamente.&lt;br /&gt;
Fica assim:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: red;"&gt;insert into TAB_VENDA (ID_VENDA,  ID_CLIENTE, PRODUTO, VALOR) VALUES (1, (select ID_CLIENTE from TAB_CLI  where NOME_CLIENTE =’JOÃO’), ‘PRODUTO 1′, 10);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
No local onde será inserido o valor do cliente coloca-se um select  que retornará seu ID pelo nome passado na cláusula where, note que este  select funcionará se não houver em registros duplicados, se existirem  dois clientes com o nome ‘João’ você poderá adicionar a venda para outro  cliente com o mesmo nome. Para corrigir este problema você poderá  passar outro parâmetro junto ao nome, que não tenha duplicação, como por  exemplo, o RG ou CPF do mesmo.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Obs.: O mesmo comando rodou sem problemas no PSQL.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Abraços até a próxima.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Tutoriais de Lazarus com Firebird</title><link>http://wxnewbie.blogspot.com/2011/10/tutoriais-de-lazarus-com-firebird.html</link><category>Firebird</category><category>Lazarus</category><author>noreply@blogger.com (Alex)</author><pubDate>Tue, 25 Oct 2011 00:25:00 -0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-3955530358213275491</guid><description>Nos próximos dias, estarei começando alguns tutoriais sobre o desenvolvimento com Lazarus, para quem não conhece a ferramenta aconselho dar uma olhada nessa explicação da &lt;a href="http://pt.wikipedia.org/wiki/Lazarus"&gt;Wikipédia&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para a criação dos tutorias, eu irei usar o Debian como plataforma, também precisaremos do &lt;a href="http://wxnewbie.blogspot.com/search/label/Firebird"&gt;Firebird&lt;/a&gt; instalado, a idéia é termos uma noção de como fazer a comunicação entre aplicações feitas em Lazarus com esse banco de dados.&lt;br /&gt;
&lt;br /&gt;
O cronograma será basicamente o seguinte:&lt;br /&gt;
&lt;br /&gt;
Instalação do Lazarus no &lt;a href="http://www.debian.org/releases/stable/"&gt;Debian Squeeze&lt;/a&gt;.&lt;br /&gt;
Criação de um projeto em Lazarus.&lt;br /&gt;
Criação do banco de dados em Firebird usando o FlameRobin.&lt;br /&gt;
Criação de uma janela Splash para o exemplo.&lt;br /&gt;
Criação do Menu Principal.&lt;br /&gt;
Criação dos Formulários de controle.&lt;br /&gt;
&lt;br /&gt;
Se tudo correr bem, podemos tentar alguma coisa relacionada com relatórios e gráficos.&lt;br /&gt;
&lt;br /&gt;
No próximo post começaremos com o projeto.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Sequência de vídeos sobre imagens com wxWidgets</title><link>http://wxnewbie.blogspot.com/2011/10/sequencia-de-videos-sobre-imagens-com.html</link><category>Imagens com wxWidgets</category><category>wxWidgets</category><author>noreply@blogger.com (Alex)</author><pubDate>Wed, 19 Oct 2011 19:21:00 -0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1098768257431113526.post-216193778935231712</guid><description>&lt;div style="text-align: center;"&gt;Desenhando uma imagem com wxWidgets - Parte 1&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/xNSNi_kugv8/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/xNSNi_kugv8?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/xNSNi_kugv8?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;Desenhando uma imagem com wxWidgets - Parte 2&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/gknm6EBONZw?feature=player_embedded' frameborder='0'&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: center;"&gt;Desenhando uma imagem com wxWidgets - Parte3&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/wX0wr6vznsI?feature=player_embedded' frameborder='0'&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: center;"&gt;Plano de fundo em um wxPanel&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: center;"&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/TrXzUHRvLkA?feature=player_embedded' frameborder='0'&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt; &lt;/div&gt;&lt;div style="text-align: center;"&gt; Dúvidas, postem nos comentários, até a próxima.&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item></channel></rss>