<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DE4NSH86eCp7ImA9WhRVEU8.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176</id><updated>2012-01-09T13:36:39.110-03:00</updated><category term="Listview" /><category term="Classes" /><category term="API´s" /><category term="Bugs" /><category term="Comandos" /><category term="OLE" /><category term="Componentes" /><category term="OOP" /><category term="Dialog System" /><category term="Objetos" /><category term="Runtime" /><category term="Windows" /><category term="Interface" /><category term="IDE" /><category term="Arquivos" /><title>NetAlexpress</title><subtitle type="html">Microfocus Netexpress, Windows, API´s, Interfaces, Classes e Objetos...</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://netalexpress.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>57</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/yFmH" /><feedburner:info uri="blogspot/yfmh" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CEECQnc5cSp7ImA9WxVSFE4.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-7292716047099610817</id><published>2009-01-08T13:30:00.002-03:00</published><updated>2009-01-08T13:37:43.929-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-08T13:37:43.929-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="IDE" /><category scheme="http://www.blogger.com/atom/ns#" term="Dialog System" /><title>Animando uma GS automaticamente</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;Uma das dificuldades de quem utiliza programas Cobol com uma tela desenhada pelo Dialog System é que no momento de um "animate", as chamadas ao Dialog não podem ser animadas automaticamente. Uma dica para resolver essa questão é mudar a constante padrão da chamada do Dialog System:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;78 &lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;dialog-system&lt;/span&gt; &lt;span class="Apple-style-span" style="color: rgb(0, 153, 0);"&gt;VALUE &lt;/span&gt;"DSGRUN".  &lt;span class="Apple-style-span" style="color: rgb(153, 153, 153);"&gt;*&gt; essa é a definição padrão&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Mude a linha acima para:&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;78 &lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;dialog-system&lt;/span&gt; &lt;span class="Apple-style-span" style="color: rgb(0, 153, 0);"&gt;VALUE &lt;/span&gt;"DS".&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Tão logo seja feita uma chamada para o Dialog System, o IDE entrará no modo "animate" dentro da GS chamada, automaticamente.&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-7292716047099610817?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/ei_Dltn5G48" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/7292716047099610817/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=7292716047099610817" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/7292716047099610817?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/7292716047099610817?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/ei_Dltn5G48/animando-uma-gs-automaticamente.html" title="Animando uma GS automaticamente" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2009/01/animando-uma-gs-automaticamente.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYHSXg_fyp7ImA9WxRVGUs.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-2543394983045723789</id><published>2008-11-17T19:05:00.004-03:00</published><updated>2008-11-17T19:15:38.647-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-17T19:15:38.647-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Componentes" /><category scheme="http://www.blogger.com/atom/ns#" term="Objetos" /><category scheme="http://www.blogger.com/atom/ns#" term="Dialog System" /><category scheme="http://www.blogger.com/atom/ns#" term="Interface" /><category scheme="http://www.blogger.com/atom/ns#" term="Classes" /><title>Que dia é hoje ?</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;Hoje é dia de conhecer o ACMonthCalendar, o calendário padrão do Windows para ser utilizado diretamente na tela de sua aplicação. O calendário padrão do Windows não vem no pacote oferecido pela Microfocus, se o desenvolvedor deseja utilizá-lo tem que recorrer ao componente DatePicker, que não é um dos mais amigáveis que existe.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;O demo da aplicação está disponível no &lt;a href="http://www.clubecobol.com.br/arquivos/indice.php"&gt;site do Clube Cobol&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_D1cn94ra6Bw/SSHsS4-GeUI/AAAAAAAAAqY/HGFTCI064tY/s1600-h/calendario.jpg"&gt;&lt;img style="text-align: justify;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; cursor: pointer; width: 400px; height: 174px; " src="http://1.bp.blogspot.com/_D1cn94ra6Bw/SSHsS4-GeUI/AAAAAAAAAqY/HGFTCI064tY/s400/calendario.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5269752848274848066" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Continue colaborando com o NetAlexpress. Com apenas R$ 49,00 (quarenta e nove reais) você recebe os fontes dessa aplicação e ajuda com as pesquisas do blog.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-2543394983045723789?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/xgvCM0YSr6w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/2543394983045723789/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=2543394983045723789" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/2543394983045723789?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/2543394983045723789?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/xgvCM0YSr6w/que-dia-hoje.html" title="Que dia é hoje ?" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_D1cn94ra6Bw/SSHsS4-GeUI/AAAAAAAAAqY/HGFTCI064tY/s72-c/calendario.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2008/11/que-dia-hoje.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4NQXs-fSp7ImA9WxRREEU.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-3992233392293907560</id><published>2008-09-22T09:03:00.003-03:00</published><updated>2008-09-22T09:36:30.555-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-22T09:36:30.555-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Listview" /><category scheme="http://www.blogger.com/atom/ns#" term="Componentes" /><category scheme="http://www.blogger.com/atom/ns#" term="Interface" /><category scheme="http://www.blogger.com/atom/ns#" term="Classes" /><title>Listview: de 20 a 40 por cento mais rápido !</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Uma das dificuldades que os desenvolvedores sentem ao utilizar o Listview é a demora que existe incluindo uma quantidade razoável de dados em sua estrutura. Utilizando dois métodos simples, o desenvolvedor pode ganhar até 40 por cento do tempo gasto com esse procedimento, tornando assim o Listview mais rápido.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Quando estamos alimentando um Listview com dados, o Windows se encarrega de mostrar visualmente esse procedimento. As linhas e colunas do Listview vão sendo atualizadas, a barra de rolagem é redesenhada proporcionalmente à quantidade de ítens, entre outras coisas. O método "&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;stopRedrawing&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;" indica ao componente que nenhuma atualização visual deve ser feita enquanto os dados forem incluídos. O método "&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;startRedrawing&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;" retorna o componente à sua condição normal.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Localize em seu programa o ponto exatamente anterior à inclusão dos seus dados no Listview e então acrescente a linha abaixo:&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;invoke umListview "stopRedrawing"&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Ao terminar a inclusão de dados em seu Listview, precisamos dizer a ele pra voltar a sua condição normal. Para isso, acrescente a linha abaixo:&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;invoke umListview "startRedrawing"&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Você vai notar que a inclusão dos dados em seu componente será de 20 a 40 por cento mais rápida.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Observação: &lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;o fato do Listview não ser atualizado visualmente na inclusão dos dados, pode dar a impressão ao usuário de que o micro está travado, pois nada é mostrado no Listview indicando que ele está sendo "alimentado". Portanto, é interessante que alguma mensagem seja colocada ao usuário comentando sobre essa atualização.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-3992233392293907560?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/Rb8t4Nf3LME" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/3992233392293907560/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=3992233392293907560" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/3992233392293907560?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/3992233392293907560?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/Rb8t4Nf3LME/listview-de-20-40-por-cento-mais-rpido.html" title="Listview: de 20 a 40 por cento mais rápido !" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2008/09/listview-de-20-40-por-cento-mais-rpido.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YAQ3s5eCp7ImA9WxRSF00.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-2786109988754308231</id><published>2008-09-17T21:59:00.007-03:00</published><updated>2008-09-17T22:25:42.520-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-17T22:25:42.520-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Componentes" /><category scheme="http://www.blogger.com/atom/ns#" term="Interface" /><category scheme="http://www.blogger.com/atom/ns#" term="Classes" /><title>HA HA.. HU HU ! O treeview é nosso !</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Para os desenvolvedores que um dia desejaram ter um Treeview em suas aplicações, esse artigo mostra que a utilização desse componente padrão do Windows não é assim uma tarefa das mais díficeis. Aproveite para colaborar como NetAlexpress adquirindo a classe ACTreeview e coloque um pouco mais de charme às suas aplicações.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_D1cn94ra6Bw/SNGriVYZzmI/AAAAAAAAAnI/pRxbZWsg8Eo/s1600-h/Treeview.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_D1cn94ra6Bw/SNGriVYZzmI/AAAAAAAAAnI/pRxbZWsg8Eo/s400/Treeview.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5247163647206739554" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Com um programa controlador único, você pode utilizar e controlar diversos componentes "treeview" em uma mesma janela. Além disso, você pode detectar alguns eventos como  um ítem selecionado, um ítem abrindo ou fechando, mudar os ícones, deixar um ítem em negrito, além de outros recursos interessantes.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Baixe agora a versão demo no site do &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.clubecobol.com.br/arquivos/indice.php"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Clube Cobol&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;. Categoria 3 - Códigos fonte e exemplos.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Para adquirir a versão com os fontes, basta utilizar o &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 102, 0);"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;PagSeguro&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, no menu da esquerda do blog, fazendo uma doação no valor de &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;R$ 49,00&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; (quarenta e nove reais) para colaborar com o NetAlexpress. Caso prefira, também pode ser feito um depósito bancário. Para isso, escreva para &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="text-decoration: underline; color: rgb(0, 0, 238); font-style: italic; -webkit-text-decorations-in-effect: underline; "&gt;&lt;a href="mailto:alexandre@ciasoftonline.com.br"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;alexandre@ciasoftonline.com.br&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; solicitando os dados para o depósito.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Aguarde o próximo componente: o &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;ACMonthCalendar&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;, um calendário que você vai poder utilizar nas janelas das suas aplicações. Até lá !&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-2786109988754308231?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/JHPTVNKrHQM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/2786109988754308231/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=2786109988754308231" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/2786109988754308231?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/2786109988754308231?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/JHPTVNKrHQM/ha-ha-hu-hu-o-treeview-nosso.html" title="HA HA.. HU HU ! O treeview é nosso !" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_D1cn94ra6Bw/SNGriVYZzmI/AAAAAAAAAnI/pRxbZWsg8Eo/s72-c/Treeview.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2008/09/ha-ha-hu-hu-o-treeview-nosso.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQMRnk6fSp7ImA9WxdaFEk.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-4911596259795820480</id><published>2008-08-20T20:44:00.024-03:00</published><updated>2008-08-22T19:33:07.715-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-22T19:33:07.715-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Componentes" /><category scheme="http://www.blogger.com/atom/ns#" term="OOP" /><category scheme="http://www.blogger.com/atom/ns#" term="Interface" /><category scheme="http://www.blogger.com/atom/ns#" term="Classes" /><title>Uma toolbar ao seu alcance</title><content type="html">&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Eu recebo muitos emails de desenvolvedores interessados em utilizar a &lt;em&gt;Toolbar&lt;/em&gt; padrão do &lt;em&gt;Windows&lt;/em&gt; em suas aplicações. Nesse artigo, mostro como utilizar diversas &lt;em&gt;toolbars&lt;/em&gt; em uma mesma janela, com a utilização de um programa controlador único, e sem a necessidade de se vincular ítens de menu aos botões.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5236770356368017922" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_D1cn94ra6Bw/SKy-5L2cigI/AAAAAAAAAnA/xtiL44N4078/s400/Toolbar.jpg" border="0" /&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;br /&gt;Longe da dificuldade dos exemplos do NetExpress, essa demonstração mostra de maneira muito fácil o uso desse componente e também tem o intuito de buscar colaboração entre os leitores desse blog para que eu continue estimulado a escrever os artigos que ajudam a tantos desenvolvedores espalhados por todo o Brasil.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;C&lt;span style="font-size:85%;"&gt;&lt;strong&gt;olabore com o NetAlexpress !!!&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Nessa versão de demonstração disponível para download no &lt;a href="http://www.clubecobol.com.br/arquivos/indice.php"&gt;site do clube cobol &lt;/a&gt;não estão inclusos os fontes completos do projeto. Para receber os fontes completos, colabore com o NetAlexpress com R$ 49,00 (quarenta e nove reais) através de depósito bancário. Para maiores informações, envie email para &lt;/span&gt;&lt;a href="mailto:alexandre@ciasoftonline.com.br"&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="mailto:alexandre@ciasoftonline.com.br."&gt;alexandre@ciasoftonline.com.br&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;/a&gt;O custo é pequeno justamente para que os desenvolvedores possam colaborar com o blog e também poderem ter acesso aos componentes mais utilizados nas aplicações gráficas, como a Toolbar. Minha intenção é criar novas classes para utilização de novos componentes e disponibilizar aqui no blog. No meu próximo artigo, vou escrever sobre a Treeview.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;......&lt;/span&gt;$set mfoo&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;program-id. TBDemo.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;class-control.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;........&lt;/span&gt;*&gt; Abaixo são definidas as classes utilizadas nesse programa&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;ACTButton is class "actbutton"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;ACMaskedImageList is class "acmaskedimagelist"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;ACUtils is class "acutils"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;DATA DIVISION.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;WORKING-STORAGE SECTION.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;*&gt; Variáveis usadas nas listas de imagens&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umaLista object reference value null.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umaListaBmp object reference value null.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;*&gt; Variáveis usadas para identificar os ícones utilizados&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 icoAbrir pic 9(09) comp-5 value zeros.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 icoNovo pic 9(09) comp-5 value zeros.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 icoAlterar pic 9(09) comp-5 value zeros.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 icoExcluir pic 9(09) comp-5 value zeros.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 icoVisualizar pic 9(09) comp-5 value zeros.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 icoGravar pic 9(09) comp-5 value zeros.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 icoCancelar pic 9(09) comp-5 value zeros.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 icoSair pic 9(09) comp-5 value zeros.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;*&gt; Variáveis usadas para identificar os bitmaps utilizados&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 bmp1 pic 9(09) comp-5 value zeros.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 bmp2 pic 9(09) comp-5 value zeros.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 bmp3 pic 9(09) comp-5 value zeros.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 bmp4 pic 9(09) comp-5 value zeros.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 bmp5 pic 9(09) comp-5 value zeros.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 bmp6 pic 9(09) comp-5 value zeros.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 bmp7 pic 9(09) comp-5 value zeros.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 bmp8 pic 9(09) comp-5 value zeros.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;*&gt; Os botões da toolbar não terão vínculo com um item de menu&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;*&gt; por isso ele será passado sempre com nulo&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umItemNulo object reference value null.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;*&gt; Variáveis usadas para identificar os botões das toolbars&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umBotaoClicado object reference value null.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umBotaoAbrir object reference value null.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umBotaoNovo object reference value null.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umBotaoAlterar object reference value null.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umBotaoExcluir object reference value null.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umBotaoVisualizar object reference value null.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umSeparador object reference value null.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umBotao1 object reference value null.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umBotao2 object reference value null.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umBotao3 object reference value null.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umBotao4 object reference value null.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umBotao5 object reference value null.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umBotao6 object reference value null.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umBotao7 object reference value null.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umBotao8 object reference value null.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umBotaoGravar object reference value null.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umBotaoCancelar object reference value null.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 umBotaoSair object reference value null.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 icone pic 9(09) comp-5 value zeros.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 w pic 9(09) comp-5 value zeros.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 h pic 9(09) comp-5 value zeros.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;77 l pic 9(09) comp-5 value zeros.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;78 dialog-system VALUE "DSGRUN".&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;01 Display-Error.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..........&lt;/span&gt;03 Display-Error-No PIC 9(4) comp-5.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..........&lt;/span&gt;03 Display-Details-1 PIC 9(4) comp-5.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..........&lt;/span&gt;03 Display-Details-2 PIC 9(4) comp-5.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;COPY "DS-CNTRL.MF".&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;COPY "TBDemo.CPB".&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;COPY "KEYS.CPY".&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;PROCEDURE DIVISION.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;Main-Process SECTION.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;PERFORM Program-Initialize&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;PERFORM Program-Body UNTIL funcao = "SAIR"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;perform Program-Terminate&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;......&lt;/span&gt;*--------------------------------------------------------------*&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;*.......&lt;/span&gt;Program-Initialize SECTION.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;INITIALIZE Ds-Control-Block&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;INITIALIZE Data-block&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;MOVE Data-block-version-no TO Ds-Data-Block-Version-No&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;MOVE Version-no TO Ds-Version-No&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;MOVE Ds-Push-Set TO Ds-Control&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;MOVE "TBDemo" TO Ds-Set-Name&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;......&lt;/span&gt;*---------------------------------------------------------------*&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;Program-Body SECTION.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;evaluate FUNCAO&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.............&lt;/span&gt;when "MONTAR" perform Montar&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.............&lt;/span&gt;when "BOTAOCLICADO" perform BotaoClicado&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;end-evaluate&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;perform Call-Dialog-System&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;......&lt;/span&gt;*---------------------------------------------------------------*&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;Montar section.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;........&lt;/span&gt;*&gt; Esse é a primeira seção chamada, que cria as listas&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;........&lt;/span&gt;*&gt; de imagens e as toolbars&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;perform MontarListaDeImagens&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;perform MontarToolbar&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;perform MontarToolbarGravar&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;perform MontarToolbarLateral&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;......&lt;/span&gt;*-------------------------------------------------------------*&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;MontarListaDeImagens section.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;........&lt;/span&gt;*&gt; Aqui é criada a primeira lista de imagens, com 16x16 pixeis&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;move 16 to w h&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke ACMaskedImageList "Nova" using w h returning umaLista&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaLista "adicionarIcone" using z"abrir16.ico"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning icoAbrir&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaLista "adicionarIcone" using z"novo16.ico"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning icoNovo&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaLista "adicionarIcone" using z"alter16.ico"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning icoAlterar&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaLista "adicionarIcone" using z"exclui16.ico"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning icoExcluir&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaLista "adicionarIcone" using z"lupa16.ico"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning icoVisualizar&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaLista "adicionarIcone" using z"gravar16.ico"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning icoGravar&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaLista "adicionarIcone" using z"cancel16.ico"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning icoCancelar&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaLista "adicionarIcone" using z"sair.ico"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning icoSair&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;........&lt;/span&gt;*&gt; Aqui é criada outra lista de imagens, com 128x128 pixeis&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;move 128 to w h&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke ACMaskedImageList "Nova" using w h&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning umaListaBmp&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaListaBmp "adicionarBitmap" using z"iphone1.bmp"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning bmp1&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaListaBmp "adicionarBitmap" using z"iphone2.bmp"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning bmp2&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaListaBmp "adicionarBitmap" using z"iphone3.bmp"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning bmp3&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaListaBmp "adicionarBitmap" using z"iphone4.bmp"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning bmp4&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaListaBmp "adicionarBitmap" using z"iphone5.bmp"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning bmp5&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaListaBmp "adicionarBitmap" using z"iphone6.bmp"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning bmp6&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaListaBmp "adicionarBitmap" using z"iphone7.bmp"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning bmp7&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaListaBmp "adicionarBitmap" using z"iphone8.bmp"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning bmp8&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;......&lt;/span&gt;*---------------------------------------------------------------*&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;MontarToolbar section.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;........&lt;/span&gt;*&gt; Nessa seção, adicionamos cada um dos botões das toolbars&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbar "lista"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbar "semDivisor"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbar "flat"&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbar "setarListaDeImagens" using umaLista&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbar "setarListaDeImagensHot" using umaLista&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbar "adicionarBotao"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using umItemNulo icoNovo&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning umBotaoNovo&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotaoNovo "setarTexto"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using z" Novo"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotaoNovo "setarTooltip"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using z"Botão Novo..."&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbar "adicionarSeparador"&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbar "adicionarBotao"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using umItemNulo icoAlterar&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning umBotaoAlterar&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotaoAlterar "setarTexto"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using z" Alterar"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..........&lt;/span&gt;&lt;span style="color:#ffffff;"&gt;.&lt;/span&gt;invoke umBotaoAlterar "setarTooltip"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using z"Botão Alterar..."&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbar "adicionarBotao"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using umItemNulo icoExcluir&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning umBotaoExcluir&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotaoExcluir "setarTexto"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using z" Excluir"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotaoExcluir "setarTooltip"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using z"Botão Excluir..."&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbar "adicionarBotao"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using umItemNulo icoVisualizar&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning umBotaoVisualizar&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotaoVisualizar "setarTexto"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using z" Visualizar"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotaoVisualizar "setarTooltip"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using z"Botão Visualizar..."&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;&lt;br /&gt;...........&lt;/span&gt;invoke umaToolbar "mostrar"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;......&lt;/span&gt;*---------------------------------------------------------------*&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;MontarToolbarGravar section.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;........&lt;/span&gt;*&gt; Nessa seção, adicionamos cada um dos botões das toolbars&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarGravar "lista"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarGravar "semDivisor"&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarGravar "setarListaDeImagens"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using umaLista&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarGravar "setarListaDeImagensHot"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using umaLista&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarGravar "adicionarBotao"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using umItemNulo icoGravar&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning umBotaoGravar&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotaoGravar "setarTexto"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using z" Gravar"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotaoGravar "setarTooltip"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using z"Botão Gravar..."&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarGravar "adicionarBotao"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using umItemNulo icoCancelar&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning umBotaoCancelar&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotaoCancelar "setarTexto"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using z" Cancelar"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotaoCancelar "setarTooltip"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using z"Botão Cancelar..."&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarGravar "adicionarSeparador"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarGravar "adicionarBotao"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using umItemNulo icoSair&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning umBotaoSair&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotaoSair "setarTexto"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using z" Sair"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotaoSair "setarTooltip"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using z"Botão Sair..."&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarGravar "mostrar"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.....&lt;/span&gt;&lt;span style="color:#ffffff;"&gt;.&lt;/span&gt;*---------------------------------------------------------------*&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;MontarToolbarLateral section.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;........&lt;/span&gt;*&gt; Nessa seção, adicionamos cada um dos botões das toolbars&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarLateral "semDivisor"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarLateral "multiplasLinhas"&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarLateral "setarListaDeImagens"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using umaListaBmp&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarGravar "setarListaDeImagensHot"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using umaListaBmp&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarLateral "adicionarBotao"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using umItemNulo bmp1&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning umBotao1&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotao1 "BotaoCheckGroup"&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarLateral "adicionarBotao"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using umItemNulo bmp2&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning umBotao2&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotao2 "BotaoCheckGroup"&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarLateral "adicionarBotao"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using umItemNulo bmp3&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning umBotao3&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotao3 "BotaoCheckGroup"&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarLateral "adicionarBotao"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using umItemNulo bmp4&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning umBotao4&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotao4 "BotaoCheckGroup"&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarLateral "adicionarBotao"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using umItemNulo bmp5&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning umBotao5&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotao5 "BotaoCheckGroup"&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarLateral "adicionarBotao"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using umItemNulo bmp6&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning umBotao6&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotao6 "BotaoCheckGroup"&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarLateral "adicionarBotao"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using umItemNulo bmp7&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning umBotao7&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotao7 "BotaoCheckGroup"&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarLateral "adicionarBotao"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;using umItemNulo bmp8&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning umBotao8&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umBotao8 "BotaoCheckGroup"&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarLateral "mostrar"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;move 4 to l&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaToolbarLateral "setarLinhas" using l&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;......&lt;/span&gt;*---------------------------------------------------------------*&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;BotaoClicado section.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;........&lt;/span&gt;*&gt; Quando um botão é clicado, ele é informado para a classe&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;........&lt;/span&gt;*&gt; ACUtils que retorna através do método abaixo, o botão que&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;........&lt;/span&gt;*&gt; foi clicado&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke ACUtils "botaoDaToolbarClicado"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..................&lt;/span&gt;returning umBotaoClicado&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;evaluate umBotaoClicado&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.............&lt;/span&gt;when umBotaoNovo display "Botão novo clicado..."&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.............&lt;/span&gt;when umBotaoAlterar display "Botão alterar clicado..."&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.............&lt;/span&gt;when umBotaoExcluir display "Botão excluir clicado..."&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.............&lt;/span&gt;when umBotaoVisualizar display "Botão visualizar clicado..."&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.............&lt;/span&gt;when umBotao1 display "Botão calendário clicado..."&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.............&lt;/span&gt;when umBotao2 display "Botão som clicado..."&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.............&lt;/span&gt;when umBotao3 display "Botão telefone clicado..."&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.............&lt;/span&gt;when umBotao4 display "Botão música clicado..."&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.............&lt;/span&gt;when umBotao5 display "Botão email clicado..."&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.............&lt;/span&gt;when umBotao6 display "Botão texto clicado..."&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.............&lt;/span&gt;when umBotao7 display "Botão configuração clicado..."&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.............&lt;/span&gt;when umBotao8 display "Botão sms clicado..."&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.............&lt;/span&gt;when umBotaoGravar display "Botão gravar clicado..."&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.............&lt;/span&gt;when umBotaoCancelar display "Botão cancelar clicado..."&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.............&lt;/span&gt;when umBotaoSair display "Botão sair clicado..."&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;end-evaluate&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;......&lt;/span&gt;*---------------------------------------------------------------*&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;Call-Dialog-System SECTION.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;CALL dialog-system USING Ds-Control-lock,&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....................................&lt;/span&gt;Data-Block&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;IF NOT Ds-No-Error&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..............&lt;/span&gt;MOVE Ds-System-Error TO Display-error&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..............&lt;/span&gt;DISPLAY "DS ERROR NO: " Display-error-no&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..............&lt;/span&gt;DISPLAY "Error Details(1) : " Display-Details-1&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..............&lt;/span&gt;DISPLAY "Error Details(2) : " Display-Details-2&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..............&lt;/span&gt;PERFORM Program-Terminate&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;END-IF&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;......&lt;/span&gt;*---------------------------------------------------------------*&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.......&lt;/span&gt;Program-Terminate SECTION.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;........&lt;/span&gt;*&gt; Ao final, as listas de imagens devem ser finalizadas&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaLista "deepFinalize" returning umaLista&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;invoke umaListaBmp "deepFinalize" returning umaListaBmp&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;stop run&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...........&lt;/span&gt;. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;Ao terminar de escrever esse artigo, eu comentava com um amigo sobre o assunto e ele me alertava sobre o fato de alguns mais "espertinhos" resolverem colaborar em grupo com o blog. Por exemplo, dividir simbólicos quarenta e nove reais entre quatro ou mais pessoas e depois os fontes serem distribuídos entre todos. Seria realmente lamentável se o fato ocorresse, até porque a colaboração que peço é apenas um incentivo às minhas pesquisas. Não penso em ficar rico escrevendo artigos para o NetAlexpress. O prazer em ver os amigos desenvolvedores evoluindo com a ferramenta é muito maior do que qualquer quantia em dinheiro. O NetAlexpress surgiu para ajudar a todos os desenvolvedores. E vai continuar da mesma forma. Aos "mais espertos", caso eles apareçam, apenas o meu lamento.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-4911596259795820480?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/2n3QyewbJmg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/4911596259795820480/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=4911596259795820480" title="3 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/4911596259795820480?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/4911596259795820480?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/2n3QyewbJmg/uma-toolbar-ao-seu-alcance.html" title="Uma toolbar ao seu alcance" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_D1cn94ra6Bw/SKy-5L2cigI/AAAAAAAAAnA/xtiL44N4078/s72-c/Toolbar.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2008/08/uma-toolbar-ao-seu-alcance.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UGSXY4fSp7ImA9WxRaEEw.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-6933669538510325374</id><published>2008-07-28T17:53:00.015-03:00</published><updated>2008-12-11T14:07:08.835-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-11T14:07:08.835-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="API´s" /><category scheme="http://www.blogger.com/atom/ns#" term="Interface" /><category scheme="http://www.blogger.com/atom/ns#" term="Classes" /><title>Criando uma Splash Screen</title><content type="html">&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;Splash Screen&lt;/em&gt; é o termo usado para descrever uma imagem que aparece enquanto um programa está sendo carregado. Normalmente elas não ocupam toda a área de trabalho, mas apenas um retângulo próximo do centro da tela. Esse artigo mostra como fazer uma Splash Screen utilizando áreas transparentes de tela.&lt;br /&gt;&lt;br /&gt;O artigo trata da utilização da API "&lt;em&gt;SetLayeredWindowAttributes&lt;/em&gt;", que faz com que determinadas áreas de uma janela fiquem transparentes. Nesse exemplo, determinei que a cor vermelha de uma imagem deve ficar transparente. A seguir, você encontra algumas imagens de exemplo e como elas ficam no desktop, depois de prontas.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_D1cn94ra6Bw/SI8L77tPYUI/AAAAAAAAAmQ/H173LhRd7g0/s1600-h/dinheiro.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5228410816668066114" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_D1cn94ra6Bw/SI8L77tPYUI/AAAAAAAAAmQ/H173LhRd7g0/s400/dinheiro.bmp" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_D1cn94ra6Bw/SI8MWQ9I1zI/AAAAAAAAAmY/j1-4smxXPoE/s1600-h/Finance.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5228411269048489778" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_D1cn94ra6Bw/SI8MWQ9I1zI/AAAAAAAAAmY/j1-4smxXPoE/s400/Finance.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_D1cn94ra6Bw/SI8MtZw5tsI/AAAAAAAAAmg/kxWkAMRer4c/s1600-h/agenda.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5228411666550077122" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_D1cn94ra6Bw/SI8MtZw5tsI/AAAAAAAAAmg/kxWkAMRer4c/s400/agenda.bmp" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_D1cn94ra6Bw/SI8NCxMCLHI/AAAAAAAAAmo/-1oU3sjA46I/s1600-h/Agenda.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5228412033615146098" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_D1cn94ra6Bw/SI8NCxMCLHI/AAAAAAAAAmo/-1oU3sjA46I/s400/Agenda.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_D1cn94ra6Bw/SI8NeA_rbsI/AAAAAAAAAmw/PL5BN8ZD6Aw/s1600-h/skin.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5228412501714759362" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_D1cn94ra6Bw/SI8NeA_rbsI/AAAAAAAAAmw/PL5BN8ZD6Aw/s400/skin.bmp" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_D1cn94ra6Bw/SI8NuUCIRzI/AAAAAAAAAm4/s43Pmmwph-o/s1600-h/Skin.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5228412781703218994" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_D1cn94ra6Bw/SI8NuUCIRzI/AAAAAAAAAm4/s43Pmmwph-o/s400/Skin.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;program-id&lt;/span&gt;. &lt;span style="color:#990000;"&gt;Imagens&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#009900;"&gt;class-control&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#990000;"&gt;CallBack&lt;/span&gt; &lt;span style="color:#009900;"&gt;is class&lt;/span&gt; "callback"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#990000;"&gt;BitmapData&lt;/span&gt; &lt;span style="color:#009900;"&gt;is class&lt;/span&gt; "bitmapd"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#990000;"&gt;Window&lt;/span&gt; &lt;span style="color:#009900;"&gt;is class&lt;/span&gt; "window"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#990000;"&gt;Color&lt;/span&gt; &lt;span style="color:#009900;"&gt;is class&lt;/span&gt; "color".&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;special-names&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;call-convention&lt;/span&gt; 66 &lt;span style="color:#009900;"&gt;is&lt;/span&gt; &lt;span style="color:#990000;"&gt;WAPI&lt;/span&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;data division&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#009900;"&gt;working-storage section&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;aCallback&lt;/span&gt; &lt;span style="color:#009900;"&gt;object reference value null&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;aWindow&lt;/span&gt; &lt;span style="color:#009900;"&gt;object reference value null&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;aBitmap&lt;/span&gt; &lt;span style="color:#009900;"&gt;object reference value null&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;aDrawingSurface&lt;/span&gt; &lt;span style="color:#009900;"&gt;object reference value null&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;moved&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; s9(09) &lt;span style="color:#009900;"&gt;comp-5 value&lt;/span&gt; 51.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;resized&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; s9(09) &lt;span style="color:#009900;"&gt;comp-5 value&lt;/span&gt; 52.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;destroyed&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; s9(09) &lt;span style="color:#009900;"&gt;comp-5 value&lt;/span&gt; 53.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;gainedfocus&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; s9(09) &lt;span style="color:#009900;"&gt;comp-5 value&lt;/span&gt; 56.&lt;br /&gt;&lt;br /&gt;01 &lt;span style="color:#990000;"&gt;oldwinproc &lt;/span&gt;&lt;span style="color:#009900;"&gt;procedure-pointer&lt;/span&gt;.&lt;br /&gt;01 &lt;span style="color:#990000;"&gt;ws-retcode&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; s9(09) &lt;span style="color:#009900;"&gt;comp-5 redefines&lt;/span&gt; &lt;span style="color:#990000;"&gt;oldwinproc&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;ws-good-ptr&lt;/span&gt; &lt;span style="color:#009900;"&gt;procedure-pointer&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;ws-bad-ptr&lt;/span&gt; &lt;span style="color:#009900;"&gt;procedure-pointer&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;ws-byte&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(02) &lt;span style="color:#009900;"&gt;comp-5&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;ws-ex-style&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; x(4) &lt;span style="color:#009900;"&gt;comp-5&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;wsFlags&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;wsColor&lt;/span&gt; &lt;span style="color:#009900;"&gt;object reference value null&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;wsColorref&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; s9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;wJanela&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;hJanela&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;x&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; s9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;y&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; s9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;w&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; s9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;h&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; s9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;wDesktop&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;hDesktop&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;78 &lt;span style="color:#ff0000;"&gt;WS-EX-LAYERED&lt;/span&gt; &lt;span style="color:#009900;"&gt;value&lt;/span&gt; h"00080000".&lt;br /&gt;78 &lt;span style="color:#ff0000;"&gt;LWA-COLORKEY&lt;/span&gt; &lt;span style="color:#009900;"&gt;value&lt;/span&gt; h"00000001".&lt;br /&gt;78 &lt;span style="color:#ff0000;"&gt;GWL-EXSTYLE&lt;/span&gt; &lt;span style="color:#009900;"&gt;value&lt;/span&gt; -20.&lt;br /&gt;&lt;br /&gt;78 &lt;span style="color:#ff0000;"&gt;dialog-system&lt;/span&gt; &lt;span style="color:#009900;"&gt;VALUE&lt;/span&gt; "DSGRUN".&lt;br /&gt;78 &lt;span style="color:#ff0000;"&gt;SM-CXSCREEN&lt;/span&gt; &lt;span style="color:#009900;"&gt;value&lt;/span&gt; 0.&lt;br /&gt;78 &lt;span style="color:#ff0000;"&gt;SM-CYSCREEN&lt;/span&gt; &lt;span style="color:#009900;"&gt;value&lt;/span&gt; 1.&lt;br /&gt;&lt;br /&gt;01 &lt;span style="color:#990000;"&gt;Display-Error&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;03 &lt;span style="color:#990000;"&gt;Display-Error-No&lt;/span&gt; &lt;span style="color:#009900;"&gt;PIC&lt;/span&gt; 9(4) &lt;span style="color:#009900;"&gt;comp-5&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;03 &lt;span style="color:#990000;"&gt;Display-Details-1&lt;/span&gt; &lt;span style="color:#009900;"&gt;PIC&lt;/span&gt; 9(4) &lt;span style="color:#009900;"&gt;comp-5&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;03 &lt;span style="color:#990000;"&gt;Display-Details-2&lt;/span&gt; &lt;span style="color:#009900;"&gt;PIC&lt;/span&gt; 9(4) &lt;span style="color:#009900;"&gt;comp-5&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;copy&lt;/span&gt; "ds-cntrl.mf".&lt;br /&gt;&lt;span style="color:#009900;"&gt;copy&lt;/span&gt; "imagens.cpb".&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;procedure division&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#006600;"&gt;Main-Process&lt;/span&gt; &lt;span style="color:#009900;"&gt;SECTION&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;PERFORM&lt;/span&gt; &lt;span style="color:#006600;"&gt;Program-Initialize&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;PERFORM&lt;/span&gt; &lt;span style="color:#006600;"&gt;Program-Body&lt;/span&gt; &lt;span style="color:#009900;"&gt;UNTIL&lt;/span&gt; &lt;span style="color:#990000;"&gt;EXIT-FLAG-TRUE&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;PERFORM&lt;/span&gt; &lt;span style="color:#006600;"&gt;Program-Terminate&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#006600;"&gt;Program-Initialize&lt;/span&gt; &lt;span style="color:#009900;"&gt;SECTION&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;INITIALIZE&lt;/span&gt; &lt;span style="color:#990000;"&gt;Ds-Control-Block&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;INITIALIZE&lt;/span&gt; &lt;span style="color:#990000;"&gt;Data-block&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;MOVE&lt;/span&gt; &lt;span style="color:#990000;"&gt;Data-block-version-no&lt;/span&gt; &lt;span style="color:#009900;"&gt;TO&lt;/span&gt; &lt;span style="color:#990000;"&gt;Ds-Data-Block-Version-No&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;MOVE&lt;/span&gt; &lt;span style="color:#990000;"&gt;Version-no&lt;/span&gt; &lt;span style="color:#009900;"&gt;TO&lt;/span&gt; &lt;span style="color:#990000;"&gt;Ds-Version-No&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;MOVE&lt;/span&gt; &lt;span style="color:#990000;"&gt;Ds-New-Set&lt;/span&gt; &lt;span style="color:#009900;"&gt;TO&lt;/span&gt; &lt;span style="color:#990000;"&gt;Ds-Control&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;MOVE&lt;/span&gt; "Imagens" &lt;span style="color:#009900;"&gt;TO&lt;/span&gt; &lt;span style="color:#990000;"&gt;Ds-Set-Name&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#006600;"&gt;Program-Body&lt;/span&gt; &lt;span style="color:#009900;"&gt;SECTION&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;PERFORM&lt;/span&gt; &lt;span style="color:#006600;"&gt;Call-Dialog-System&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#999999;"&gt;*&gt;-----------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#999999;"&gt;*&gt; Aqui nós lemos uma imagem no formato bmp.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;BitmapData&lt;/span&gt; "fromFileZ" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; z"dinheiro.bmp"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.................................&lt;/span&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;aBitmap&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#999999;"&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;*&gt;-----------------------------------------------------------&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;*&gt; A janela é capturada como um objeto da classe Window e é&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;*&gt; redimensionada para o tamanho da imagem lida.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;Window&lt;/span&gt; "fromHandle" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;winhandle&lt;/span&gt; &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;aWindow&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;aBitmap&lt;/span&gt; "getWidth" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;w&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;aBitmap&lt;/span&gt; "getheight" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;h&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;aWindow&lt;/span&gt; "scaleXYUp" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;w h&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;aWindow&lt;/span&gt; "setWidthHeight" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#990000;"&gt;w h&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#999999;"&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;*&gt;-----------------------------------------------------------&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;*&gt; Aqui pegamos a resolução do computador.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; &lt;span style="color:#990000;"&gt;wapi&lt;/span&gt; "GetSystemMetrics" &lt;span style="color:#009900;"&gt;using by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;SM-CXSCREEN&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;............................&lt;/span&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;wDesktop&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; &lt;span style="color:#990000;"&gt;wapi&lt;/span&gt; "GetSystemMetrics" &lt;span style="color:#009900;"&gt;using by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;SM-CYSCREEN&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;............................&lt;/span&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;hDesktop&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#999999;"&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;*&gt;-----------------------------------------------------------&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;*&gt; Aqui nós centralizamos a janela.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;aWindow&lt;/span&gt; "getNativeWidthHeight" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;wJanela hJanela&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;compute&lt;/span&gt; &lt;span style="color:#990000;"&gt;x&lt;/span&gt; = (&lt;span style="color:#990000;"&gt;wDesktop&lt;/span&gt; - &lt;span style="color:#990000;"&gt;wJanela&lt;/span&gt;) / 2&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;compute&lt;/span&gt; &lt;span style="color:#990000;"&gt;y&lt;/span&gt; = (&lt;span style="color:#990000;"&gt;hDesktop&lt;/span&gt; - &lt;span style="color:#990000;"&gt;hJanela&lt;/span&gt;) / 2&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;aWindow&lt;/span&gt; "scaleXYUp" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;x y&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;aWindow&lt;/span&gt; "setXY" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#990000;"&gt;x y&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#999999;"&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;*&gt;-----------------------------------------------------------&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;*&gt; Abaixo, pegamos a área da janela onde será mostrada a imagem&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;*&gt; e colocamos a imagem na linha 0 com a coluna 0.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;aWindow&lt;/span&gt; "getdrawingsurface" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;aDrawingsurface&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 0 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;X Y&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;aDrawingsurface&lt;/span&gt; "DrawBitmapAt" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;aBitmap&lt;/span&gt; &lt;span style="color:#990000;"&gt;X Y&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#999999;"&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;*&gt;-----------------------------------------------------------&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;*&gt; As linhas seguintes adicionam o atributo padrão do Windows&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;*&gt; para aplicar áreas transparentes em janelas. A constante&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;*&gt; LWA-COLORKEY indica que apenas a área que possui a cor&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;*&gt; especificada ficará transparente. Em nosso exemplo, a cor&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;*&gt; vermelha ficará transparente.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;set&lt;/span&gt; &lt;span style="color:#990000;"&gt;ws-bad-ptr&lt;/span&gt; &lt;span style="color:#009900;"&gt;to entry&lt;/span&gt; "MF?637364Rubbish"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;set&lt;/span&gt; &lt;span style="color:#990000;"&gt;ws-good-ptr&lt;/span&gt; &lt;span style="color:#009900;"&gt;to entry&lt;/span&gt; "SetLayeredWindowAttributes"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;if&lt;/span&gt; &lt;span style="color:#990000;"&gt;ws-good-ptr&lt;/span&gt; = &lt;span style="color:#990000;"&gt;ws-bad-ptr&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;......&lt;/span&gt;&lt;span style="color:#009900;"&gt;exit program&lt;/span&gt; &lt;span style="color:#999999;"&gt;*&gt; somente nas versões ME/2000/XP/2003 ou superior&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;end-if&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; &lt;span style="color:#990000;"&gt;wapi&lt;/span&gt; "GetWindowLongA"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..............&lt;/span&gt;&lt;span style="color:#009900;"&gt;using by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;winhandle&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....................&lt;/span&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;GWL-EXSTYLE&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....................&lt;/span&gt;&lt;span style="color:#009900;"&gt;returning &lt;/span&gt;&lt;span style="color:#990000;"&gt;ws-ex-style&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;add&lt;/span&gt; &lt;span style="color:#990000;"&gt;ws-ex-layered&lt;/span&gt; &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;ws-ex-style&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; &lt;span style="color:#990000;"&gt;wapi&lt;/span&gt; "SetWindowLongA"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.............&lt;/span&gt;&lt;span style="color:#009900;"&gt;using by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;winhandle&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...................&lt;/span&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;GWL-EXSTYLE&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...................&lt;/span&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#990000;"&gt;ws-ex-style&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#ffffff;"&gt;...................&lt;/span&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;ws-retcode&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;LWA-COLORKEY&lt;/span&gt; &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsFlags&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 0 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;ws-byte&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;Color&lt;/span&gt; "lightRed" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsColor&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsColor&lt;/span&gt; "asColorRef" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsColorref&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsColor&lt;/span&gt; "finalize" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsColor&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; &lt;span style="color:#990000;"&gt;wapi&lt;/span&gt; "SetLayeredWindowAttributes"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;.............&lt;/span&gt;&lt;span style="color:#009900;"&gt;using by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;winhandle&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...................&lt;/span&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsColorref&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...................&lt;/span&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;ws-byte&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...................&lt;/span&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsFlags&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...................&lt;/span&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;ws-retcode&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;end-call&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#c0c0c0;"&gt;&lt;span style="font-size:85%;color:#ffffff;"&gt;...&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#999999;"&gt;*&gt;-----------------------------------------------------------&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;*&gt; As linhas a seguir informam à janela que um método deve ser chamado,&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;*&gt; sempre que um determinado evento ocorrer. Em nosso exemplo, toda vez&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;*&gt; que a janela for movimentada, redimensionada ou ganhar o foco,&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;*&gt; a imagem será mostrada novamente.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;Callback&lt;/span&gt; "new" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;aDrawingsurface&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...............................&lt;/span&gt;z"DrawBitmapAt"&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...............................&lt;/span&gt;&lt;span style="color:#990000;"&gt;aBitmap&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...............................&lt;/span&gt;&lt;span style="color:#990000;"&gt;x&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...............................&lt;/span&gt;&lt;span style="color:#990000;"&gt;y&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...............................&lt;/span&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;aCallback&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;aWindow&lt;/span&gt; "setEvent" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;moved&lt;/span&gt; &lt;span style="color:#990000;"&gt;aCallback&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;aWindow&lt;/span&gt; "setEvent" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#990000;"&gt;resized aCallback&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;aWindow&lt;/span&gt; "setEvent" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;gainedfocus aCallback&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;aCallback&lt;/span&gt; "finalize" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;aCallback&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;perform&lt;/span&gt; &lt;span style="color:#006600;"&gt;Call-Dialog-System&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#006600;"&gt;Program-Terminate&lt;/span&gt; &lt;span style="color:#009900;"&gt;SECTION&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;STOP RUN&lt;/span&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#006600;"&gt;Call-Dialog-System&lt;/span&gt; &lt;span style="color:#009900;"&gt;SECTION&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;CALL&lt;/span&gt; &lt;span style="color:#ff6666;"&gt;dialog-system&lt;/span&gt; &lt;span style="color:#009900;"&gt;USING&lt;/span&gt; &lt;span style="color:#990000;"&gt;Ds-Control-Block&lt;/span&gt;,&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#990000;"&gt;Data-Block&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;IF NOT &lt;/span&gt;&lt;span style="color:#990000;"&gt;Ds-No-Error&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;......&lt;/span&gt;&lt;span style="color:#009900;"&gt;MOVE &lt;/span&gt;&lt;span style="color:#990000;"&gt;Ds-System-Error&lt;/span&gt; &lt;span style="color:#009900;"&gt;TO&lt;/span&gt; &lt;span style="color:#990000;"&gt;Display-error&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;......&lt;/span&gt;&lt;span style="color:#009900;"&gt;DISPLAY&lt;/span&gt; "DS ERROR NO: " &lt;span style="color:#990000;"&gt;Display-error-no&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;......&lt;/span&gt;&lt;span style="color:#009900;"&gt;DISPLAY&lt;/span&gt; "Error Details(1) : " &lt;span style="color:#990000;"&gt;Display-Details-1&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;......&lt;/span&gt;&lt;span style="color:#009900;"&gt;DISPLAY&lt;/span&gt; "Error Details(2) : " &lt;span style="color:#990000;"&gt;Display-Details-2&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;......&lt;/span&gt;&lt;span style="color:#009900;"&gt;PERFORM&lt;/span&gt; &lt;span style="color:#006600;"&gt;Program-Terminate&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;&lt;span style="color:#009900;"&gt;END-IF&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Você pode fazer o download do fonte desse programa no site do &lt;a href="http://www.clubecobol.com.br/arquivos/indice.php"&gt;Clube Cobol&lt;/a&gt;, com o título "&lt;em&gt;Criando uma Splash Screen&lt;/em&gt;".&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;em&gt;&lt;span style="font-size:85%;"&gt;Observação: esse artigo não tem o objetivo de ensinar os métodos e comandos utilizados. Por isso, alguns dos comandos apresentados não foram detalhadamente explicados.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-6933669538510325374?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/ZB5MI-EBYo0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/6933669538510325374/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=6933669538510325374" title="4 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/6933669538510325374?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/6933669538510325374?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/ZB5MI-EBYo0/criando-uma-splash-screen.html" title="Criando uma Splash Screen" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_D1cn94ra6Bw/SI8L77tPYUI/AAAAAAAAAmQ/H173LhRd7g0/s72-c/dinheiro.bmp" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2008/07/criando-uma-splash-screen.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UGSH88fSp7ImA9WxRaEEw.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-5496412640100698389</id><published>2008-07-25T14:18:00.004-03:00</published><updated>2008-12-11T14:07:09.175-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-11T14:07:09.175-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Interface" /><title>Um toque de arte (parte 3)</title><content type="html">&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Incrível como as telas que mostram as interfaces dos sistemas feitos nos mais diversos compiladores COBOL fizeram sucesso. É o post com maior número de acessos do ano no blog. Aproveitem para apreciar mais algumas interfaces enviadas pelos nossos amigos desenvolvedores. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;br /&gt;NetCobol - Interface enviada por Paulo Viana, de Brumado - BA&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_D1cn94ra6Bw/SIoOZDFfumI/AAAAAAAAAmA/wvoDqVcEjcA/s1600-h/repres.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5227006141004757602" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_D1cn94ra6Bw/SIoOZDFfumI/AAAAAAAAAmA/wvoDqVcEjcA/s400/repres.jpg" border="0" /&gt; &lt;p align="center"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;NetExpress - Interface enviada por Alexandre Cortez, de Santos - SP&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href="http://3.bp.blogspot.com/_D1cn94ra6Bw/SIoP6j_MIbI/AAAAAAAAAmI/e2voU0YrdnA/s1600-h/Image1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5227007816283988402" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_D1cn94ra6Bw/SIoP6j_MIbI/AAAAAAAAAmI/e2voU0YrdnA/s400/Image1.jpg" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-5496412640100698389?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/5hJ4Wkm9hXk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/5496412640100698389/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=5496412640100698389" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/5496412640100698389?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/5496412640100698389?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/5hJ4Wkm9hXk/um-toque-de-arte-parte-3.html" title="Um toque de arte (parte 3)" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_D1cn94ra6Bw/SIoOZDFfumI/AAAAAAAAAmA/wvoDqVcEjcA/s72-c/repres.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2008/07/um-toque-de-arte-parte-3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UHQHk8cSp7ImA9WxRaEEw.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-5746163438497612122</id><published>2008-07-21T09:14:00.007-03:00</published><updated>2008-12-11T14:07:11.779-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-11T14:07:11.779-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Interface" /><title>Um toque de arte (parte 2)</title><content type="html">&lt;p&gt;&lt;span style="font-size:85%;"&gt;Os "artistas" por esse Brasil afora entenderam o recado e começaram a enviar suas "obras de arte". Colabore enviando você também as melhores telas dos seus sistemas, além de informar sua cidade e qual compilador utiliza.&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;/p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;br /&gt;Acucobol - Interfaces enviadas por Luciano Martin, de São Paulo - SP&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_D1cn94ra6Bw/SIR-R_5cICI/AAAAAAAAAlY/Mc5na9KePjE/s1600-h/imagem1.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5225440315331846178" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_D1cn94ra6Bw/SIR-R_5cICI/AAAAAAAAAlY/Mc5na9KePjE/s400/imagem1.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_D1cn94ra6Bw/SIR-fg8Y4HI/AAAAAAAAAlg/5BUYlfnBT8Q/s1600-h/imagem2.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5225440547540885618" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_D1cn94ra6Bw/SIR-fg8Y4HI/AAAAAAAAAlg/5BUYlfnBT8Q/s400/imagem2.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size:85%;"&gt;NetCobol - Interface enviada por Nicola Losacco, de Maringá - PR&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_D1cn94ra6Bw/SIR-vtZJzBI/AAAAAAAAAlo/RTRwsjJDG2U/s1600-h/SRJN2.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5225440825760664594" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_D1cn94ra6Bw/SIR-vtZJzBI/AAAAAAAAAlo/RTRwsjJDG2U/s400/SRJN2.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;span style="font-size:85%;"&gt;NetExpress/SP2 - Interfaces enviadas por Sérgio Rodrigues, de Campo Grande - MS&lt;br /&gt;&lt;/span&gt;&lt;a href="http://2.bp.blogspot.com/_D1cn94ra6Bw/SISVv0GIfkI/AAAAAAAAAlw/Yfk_N42EAVE/s1600-h/Sergio1.JPG"&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5225466116327374402" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_D1cn94ra6Bw/SISVv0GIfkI/AAAAAAAAAlw/Yfk_N42EAVE/s400/Sergio1.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_D1cn94ra6Bw/SISWYyvNzlI/AAAAAAAAAl4/z_gEVUXcVD4/s1600-h/Sergio2.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5225466820337454674" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_D1cn94ra6Bw/SISWYyvNzlI/AAAAAAAAAl4/z_gEVUXcVD4/s400/Sergio2.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Continuem enviando suas telas para o meu email: &lt;/span&gt;&lt;a href="mailto:alexandre@ciasoftonline.com.br"&gt;&lt;span style="font-size:85%;"&gt;alexandre@ciasoftonline.com.br&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-5746163438497612122?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/KmdV4mJivMg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/5746163438497612122/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=5746163438497612122" title="3 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/5746163438497612122?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/5746163438497612122?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/KmdV4mJivMg/um-toque-de-arte-parte-2.html" title="Um toque de arte (parte 2)" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_D1cn94ra6Bw/SIR-R_5cICI/AAAAAAAAAlY/Mc5na9KePjE/s72-c/imagem1.gif" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2008/07/um-toque-de-arte-parte-2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UHQ3Y4fip7ImA9WxRaEEw.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-2377540329578747859</id><published>2008-07-16T17:04:00.015-03:00</published><updated>2008-12-11T14:07:12.836-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-11T14:07:12.836-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Interface" /><title>Um toque de arte</title><content type="html">&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Os desenvolvedores COBOL e suas interfaces. Se você possui uma interface interessante em alguma rotina de seus sistemas, mande uma &lt;em&gt;screenshot&lt;/em&gt; para o meu email para que eu possa publicá-la. Todas as telas foram feitas utilizando o Dialog System, do Microfocus NetExpress.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;div align="center"&gt;&lt;br /&gt;Interfaces enviadas por Alfredo Saviolli, de Londrina - PR.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_D1cn94ra6Bw/SICSLCKWo4I/AAAAAAAAAkg/eCK2XMrHsdA/s1600-h/Imagem4.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5224336286006289282" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_D1cn94ra6Bw/SICSLCKWo4I/AAAAAAAAAkg/eCK2XMrHsdA/s400/Imagem4.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_D1cn94ra6Bw/SICS7uxhnCI/AAAAAAAAAkw/2rGpOha_kWg/s1600-h/Imagem2.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5224337122615467042" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_D1cn94ra6Bw/SICS7uxhnCI/AAAAAAAAAkw/2rGpOha_kWg/s400/Imagem2.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p align="center"&gt;&lt;span style="font-size:85%;"&gt;Interface enviada por Antônio João&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_D1cn94ra6Bw/SICTZVcbQJI/AAAAAAAAAk4/VyJ1M23uVCM/s1600-h/Imagem3.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5224337631212159122" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_D1cn94ra6Bw/SICTZVcbQJI/AAAAAAAAAk4/VyJ1M23uVCM/s400/Imagem3.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Interface enviada por Alexandre Hogler, de Blumenau - SC&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_D1cn94ra6Bw/SICVh6CJ1KI/AAAAAAAAAlA/_2wv0Mn0Y5Q/s1600-h/Imagem5.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5224339977496286370" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_D1cn94ra6Bw/SICVh6CJ1KI/AAAAAAAAAlA/_2wv0Mn0Y5Q/s400/Imagem5.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Interface enviada por Reinaldo Rodrigues, de Santos - SP&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_D1cn94ra6Bw/SICWPBWw9aI/AAAAAAAAAlQ/lZ2cxS3DLjw/s1600-h/Imagem6.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5224340752555898274" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_D1cn94ra6Bw/SICWPBWw9aI/AAAAAAAAAlQ/lZ2cxS3DLjw/s400/Imagem6.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;Interface enviada por Bruno Segato, de São Paulo - SP&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_D1cn94ra6Bw/SICV0Zc37LI/AAAAAAAAAlI/apMhE0yO6kA/s1600-h/Imagem1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5224340295167503538" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_D1cn94ra6Bw/SICV0Zc37LI/AAAAAAAAAlI/apMhE0yO6kA/s400/Imagem1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Aguardem as próximas interfaces. Até mais.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-2377540329578747859?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/neHG01iVBjg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/2377540329578747859/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=2377540329578747859" title="3 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/2377540329578747859?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/2377540329578747859?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/neHG01iVBjg/um-toque-de-arte.html" title="Um toque de arte" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_D1cn94ra6Bw/SICSLCKWo4I/AAAAAAAAAkg/eCK2XMrHsdA/s72-c/Imagem4.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2008/07/um-toque-de-arte.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcMQXw8fip7ImA9WxdVEE4.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-2104876089631730796</id><published>2008-07-10T09:00:00.004-03:00</published><updated>2008-07-14T09:21:20.276-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-14T09:21:20.276-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Dialog System" /><category scheme="http://www.blogger.com/atom/ns#" term="Interface" /><title>Os malabaristas e as janelas</title><content type="html">&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Vamos "tentar" tornar simples a tarefa de centralizar uma janela no desktop ? Apesar do Dialog System servir como opção no desenvolvimento de interfaces gráficas do Microfocus NetExpress, ele não oferece nenhum recurso ao desenvolvedor para centralizar uma simples tela na área de trabalho. Apesar de eu adorar o COBOL e principalmente a ferramenta NetExpress, eu confesso que é uma vergonha para nós desenvolvedores ter que fazer "malabarismos" para centralizar uma simples janela no desktop.&lt;br /&gt;&lt;br /&gt;Para centralizarmos a janela no desktop, precisamos criá-la no evento SCREENSET-INITIALIZED da GS, antes que a janela apareça para o usuário. Em nosso exemplo, nossa janela chama-se WIN-PRINCIPAL:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;DS-FUNCAO X 30.0&lt;br /&gt;&lt;br /&gt;SCREENSET-INIITIALIZED&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..&lt;/span&gt;CALLOUT-PARAMETER 1 CONFIG-FLAG $NULL&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..&lt;/span&gt;CALLOUT-PARAMETER 2 CONFIG-VALUE $NULL&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..&lt;/span&gt;MOVE 15 CONFIG-FLAG&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..&lt;/span&gt;MOVE 1 CONFIG-VALUE&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..&lt;/span&gt;CALLOUT "dsrtcfg" 3 $PARMLIST&lt;br /&gt;*&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..&lt;/span&gt;CREATE-WINDOW WIN-PRINCIPAL&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..&lt;/span&gt;MOVE "CENTRALIZARJANELA" DS-FUNCAO&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;..&lt;/span&gt;RETC&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Note que no evento &lt;span style="font-family:courier new;"&gt;SCREENSET-INITIALIZED&lt;/span&gt;, a janela ainda não aparece para o usuário. O comando &lt;span style="font-family:courier new;"&gt;CREATE-WINDOW&lt;/span&gt; cria a janela e toda a sua estrutura interna mas a mesma ainda não aparece para o usuário. É o momento de pegarmos as coordenadas da janela, além de sua largura e altura, para reposicioná-la no desktop. Isso será feito no programa Cobol. Na procedure division, precisamos alterar a section &lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;Program&lt;/span&gt;&lt;span style="color:#009900;"&gt;-Body&lt;/span&gt;&lt;/span&gt; para executar nossa operação. Além disso, vamos utilizar alguns vocabulários do Dialog System, portanto, o &lt;em&gt;vocabulary copybook&lt;/em&gt; deve ser gerado também. Abaixo, cada uma das alterações que devem ser feitas em seu fonte Cobol:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;special-names&lt;/span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;call-convention&lt;/span&gt; 66 &lt;span style="color:#009900;"&gt;is&lt;/span&gt; &lt;span style="color:#990000;"&gt;WAPI&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;class-control&lt;/span&gt;. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#990000;"&gt;Window&lt;/span&gt; &lt;span style="color:#009900;"&gt;is class&lt;/span&gt; "window".&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;working-storage section&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;handle8&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(08) &lt;span style="color:#009900;"&gt;comp-x value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;handle9&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;umaJanela&lt;/span&gt; &lt;span style="color:#009900;"&gt;object reference value null&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;x&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;y&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;wDesktop&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;hDesktop&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;wJanela&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;hJanela&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;78 &lt;span style="color:#ff0000;"&gt;SM-CXSCREEN&lt;/span&gt; &lt;span style="color:#009900;"&gt;value&lt;/span&gt; 0.&lt;br /&gt;78 &lt;span style="color:#ff0000;"&gt;SM-CYSCREEN&lt;/span&gt; &lt;span style="color:#009900;"&gt;value&lt;/span&gt; 1.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#009900;"&gt;procedure division.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;&lt;span style="color:#006600;"&gt;Program-Body&lt;/span&gt; SECTION&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;evaluate&lt;/span&gt; &lt;span style="color:#990000;"&gt;ds-Funcao&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;......&lt;/span&gt;&lt;span style="color:#009900;"&gt;when&lt;/span&gt; "CENTRALIZARJANELA" &lt;span style="color:#009900;"&gt;perform&lt;/span&gt; &lt;span style="color:#006600;"&gt;CentralizarJanela&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;end-evaluate&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;perform&lt;/span&gt; &lt;span style="color:#006600;"&gt;Call-Dialog-System&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#006600;"&gt;CentralizarJanela&lt;/span&gt; &lt;span style="color:#009900;"&gt;section&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;move-object-handle&lt;/span&gt; &lt;span style="color:#990000;"&gt;win-principal&lt;/span&gt; &lt;span style="color:#990000;"&gt;handle8&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; &lt;span style="color:#990000;"&gt;handle8&lt;/span&gt; &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;handle9&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;Window&lt;/span&gt; "fromHandleWithClass" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;handle9&lt;/span&gt; &lt;span style="color:#990000;"&gt;Window&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaJanela&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; &lt;span style="color:#990000;"&gt;WAPI&lt;/span&gt; "GetSystemMetrics" &lt;span style="color:#009900;"&gt;using by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;SM-CXSCREEN&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;wDesktop&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; &lt;span style="color:#990000;"&gt;WAPI&lt;/span&gt; "GetSystemMetrics" &lt;span style="color:#009900;"&gt;using by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;SM-CYSCREEN&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;hDesktop&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaJanela&lt;/span&gt; "getNativeWidthHeight" &lt;span style="color:#009900;"&gt;using &lt;/span&gt;&lt;span style="color:#990000;"&gt;wJanela hJanela&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;compute&lt;/span&gt; &lt;span style="color:#990000;"&gt;x&lt;/span&gt; = (&lt;span style="color:#990000;"&gt;wDesktop&lt;/span&gt; - &lt;span style="color:#990000;"&gt;wJanela&lt;/span&gt;) / 2&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;compute&lt;/span&gt; &lt;span style="color:#990000;"&gt;y&lt;/span&gt; = (&lt;span style="color:#990000;"&gt;hDesktop&lt;/span&gt; - &lt;span style="color:#990000;"&gt;hJanela&lt;/span&gt;) / 2&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaJanela&lt;/span&gt; "scaleXYUp" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;x y&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaJanela&lt;/span&gt; "setXY" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;x y&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Quase 3 dúzias de linhas de programação para centralizar uma janela no desktop. Se alguém tiver alguma outra solução melhor que essa, por favor, eu agradeceria muito se pudesse me enviar para que eu a publique aqui. Caso contrário, vou achar que a Microfocus realmente adora um "circo"...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Update: o post foi corrigido depois da observação do meu amigo Bruno. Obrigado, Bruno.&lt;br /&gt;&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-2104876089631730796?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/aUJzc4ko1x4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/2104876089631730796/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=2104876089631730796" title="4 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/2104876089631730796?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/2104876089631730796?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/aUJzc4ko1x4/os-malabaristas-e-as-janelas.html" title="Os malabaristas e as janelas" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>4</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2008/07/os-malabaristas-e-as-janelas.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUFRXg9eyp7ImA9WxdQGEw.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-3131370532915943799</id><published>2008-06-18T14:18:00.002-03:00</published><updated>2008-06-18T14:30:14.663-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-18T14:30:14.663-03:00</app:edited><title>O aniversariante do mês</title><content type="html">&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Nesse mes, o blog está comemorando um ano de vida. Nesse primeiro aniversário, fiquei imaginando durante alguns dias o quanto nos sentimos órfãos das empresas que comercializam o compilador Cobol para nós desenvolvedores. Afinal de contas, grite aí quem teve realmente um bom suporte quando teve dúvidas na utilização da linguagem. Alguém aí já ligou pra Microfocus ? DTS ? Fujitsu ? Quando criei esse blog pensei justamente nos amigos desenvolvedores órfãos por todo esse país. Eu me sinto privilegiado, pois tenho tempo para pesquisas com a linguagem. O resultado disso são os inúmeros artigos, dicas e comentários que surgiram aqui nesse primeiro ano de vida do blog.&lt;br /&gt;&lt;br /&gt;O blog já ajudou e tem ajudado muito os desenvolvedores que utilizam o Microfocus NetExpress como ferramenta de trabalho. E para outros desenvolvedores que utilizam outros compiladores,o blog serve como história em quadrinhos: diverte e chama atenção pelas cores e novidades.&lt;br /&gt;&lt;br /&gt;Diante de tanta informação e sucesso com o blog, a minha caixa de entrada do Outlook Express passou a ficar lotada de email´s com pedidos de esclarecimentos de dúvidas, pedidos de consultoria, etc. Sem contar as inúmeras janelas do meu Messenger piscando com dúvidas dos amigos mais chegados. Isso me deixa muito contente, pois é fruto de muita dedicação na produção de todo o material publicado aqui no blog.&lt;br /&gt;&lt;br /&gt;Apesar da comemoração desse primeiro aniversário, o blog nunca receceu qualquer tipo de investimento, colaboração ou doação financeira para se manter. Sempre foi fruto de dedicação de minha parte e de alguns poucos colaboradores que criaram artigos para abrilhantar mais ainda essa parceria entre nós desenvolvedores.&lt;br /&gt;&lt;br /&gt;Por conta disso, a partir desse primeiro ano de vida do blog, eu quero oferecer um serviço de consultoria a qualquer desenvolvedor que utilize o Microfocus NetExpress. Nessa consultoria, o desenvolvedor poderá tirar dúvidas sobre a utilização do ambiente de desenvolvimento, Dialog System, componentes, além de iniciar na programação orientada ao objeto. Esse serviço de consultoria será feito através de emails´s e contatos via Messenger.&lt;br /&gt;&lt;br /&gt;Essa consultoria visa atender aos amigos desenvolvedores de uma forma mais personalizada, além de oficializar todo o suporte que já ofereço hoje de forma gratuita. Assim, criamos uma parceria de forma que eu possa colaborar com todos e assim ter um retorno para viabilizar novas pesquisas e produzir novos artigos para o blog.&lt;br /&gt;&lt;br /&gt;Eu pretendo me reunir também com as pessoas que administram o site do Clube Cobol para doar parte desses rendimentos com a consultoria, colaborando assim diretamente com a manutenção do site.&lt;br /&gt;&lt;br /&gt;Sendo assim, criei alguns pacotes de consultoria para oferecer aos amigos desenvolvedores:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff6600;"&gt;Plano Mensal....: R$ 149,00 (cento e quarenta e nove reais por mes)&lt;br /&gt;Plano Trimestral: R$ 399,00 (trezentos e noventa e nove reais por trimestre)&lt;br /&gt;Plano Semestral.: R$ 799,00 (setecentos e noventa e nove reais por semestre)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Através dessa consultoria, os desenvolvedores poderão obter informações sobre desenvolvimento de rotinas, implementação da POO em suas aplicações, desenvolvimento de componentes, utilização das classes do NetExpress e participar das pesquisas mais recentes que tenho feito para a melhor utilização da ferramenta. É a oportunidade que o desenvolvedor terá para obter mais recursos e modernidade às suas aplicações.&lt;br /&gt;&lt;br /&gt;Para obter maiores informações sobre essa consultoria, entre em contato através do email a seguir:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="mailto:alexandre.cia@iron.com.br"&gt;&lt;span style="font-size:85%;"&gt;alexandre.cia@iron.com.br&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;Um grande abraço a todos.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-3131370532915943799?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/lrWeAo_S6Pk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/3131370532915943799/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=3131370532915943799" title="3 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/3131370532915943799?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/3131370532915943799?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/lrWeAo_S6Pk/o-aniversariante-do-ms.html" title="O aniversariante do mês" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>3</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2008/06/o-aniversariante-do-ms.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UHQ3c9cCp7ImA9WxRaEEw.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-2725075957459289024</id><published>2008-04-01T17:12:00.009-03:00</published><updated>2008-12-11T14:07:12.968-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-11T14:07:12.968-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Dialog System" /><category scheme="http://www.blogger.com/atom/ns#" term="Interface" /><category scheme="http://www.blogger.com/atom/ns#" term="Classes" /><title>Garçom ! O menu, por favor !</title><content type="html">&lt;a href="http://1.bp.blogspot.com/_D1cn94ra6Bw/R_KZDVgDN2I/AAAAAAAAAio/pb3Ww3KFIiI/s1600-h/Menus.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5184374403647092578" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_D1cn94ra6Bw/R_KZDVgDN2I/AAAAAAAAAio/pb3Ww3KFIiI/s400/Menus.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Utilizando um novo conceito em seus programas, você pode aprender a criar menus totalmente dinâmicos sem a utilização do &lt;strong&gt;Dialog System&lt;/strong&gt;. E se quiser dar uma gorjeta ao garçom, utilize o link do PagSeguro&lt;strong&gt;, &lt;/strong&gt;aqui mesmo no blog.&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;Através do método "&lt;span style="font-family:courier new;"&gt;getMenubar&lt;/span&gt;" da classe &lt;span style="color:#990000;"&gt;Window&lt;/span&gt;, podemos pegar o menu de uma janela e criar submenus e ítens de menus, com os métodos das classes &lt;span style="color:#990000;"&gt;Menubar&lt;/span&gt;, &lt;span style="color:#990000;"&gt;Submenu&lt;/span&gt; e &lt;span style="color:#990000;"&gt;Menuitem&lt;/span&gt;. Tudo isso no fonte Cobol, sem a necessidade de utilizar o &lt;strong&gt;Dialog System&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Dentro do &lt;strong&gt;Dialog System&lt;/strong&gt;, um evento especial detecta quando um ítem de menu criado fora do &lt;strong&gt;Dialog System&lt;/strong&gt; foi selecionado. Chama-se &lt;span style="font-family:courier new;"&gt;ANY-OTHER-MENU-EVENT&lt;/span&gt;. O registrador especial &lt;span style="font-family:courier new;"&gt;$EVENT-DATA&lt;/span&gt; contém a identificação do ítem de menu selecionado.&lt;br /&gt;&lt;br /&gt;Com esse código identificador, basta retornar ao programa Cobol e utilizar o método "&lt;span style="font-family:courier new;"&gt;menuitemAtCommand&lt;/span&gt;", com o objeto da classe &lt;span style="color:#990000;"&gt;Window&lt;/span&gt;. Um comando &lt;span style="font-family:courier new;color:#009900;"&gt;evaluate&lt;/span&gt; pode então detectar qual ítem de menu foi selecionado.&lt;br /&gt;&lt;br /&gt;O fonte com a demonstração desse artigo encontra-se disponível para download no site do &lt;a href="http://megagestor.homelinux.com:8080/clube/arquivos/indice.php"&gt;Clube Cobol&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-2725075957459289024?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/072G3OXl15g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/2725075957459289024/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=2725075957459289024" title="4 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/2725075957459289024?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/2725075957459289024?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/072G3OXl15g/garom-o-menu-por-favor.html" title="Garçom ! O menu, por favor !" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_D1cn94ra6Bw/R_KZDVgDN2I/AAAAAAAAAio/pb3Ww3KFIiI/s72-c/Menus.jpg" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2008/04/garom-o-menu-por-favor.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4GQHwycSp7ImA9WxZSGE0.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-7282942059254925422</id><published>2008-01-31T14:01:00.000-03:00</published><updated>2008-01-31T14:35:21.299-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-31T14:35:21.299-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Arquivos" /><category scheme="http://www.blogger.com/atom/ns#" term="Runtime" /><category scheme="http://www.blogger.com/atom/ns#" term="Comandos" /><title>O segredo do External File Handler</title><content type="html">&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Aprendendo sobre alguns recursos do compilador Microfocus, é possível acessar bancos de dados sem mexer numa única linha de código dos seus programas que acessam arquivos indexados. Sim, isso é possível. Continue usando "read", "start", "open", mas tenha em suas mãos o banco de dados de sua preferência.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#cc6600;"&gt;Esse artigo foi escrito baseado na versão 3.0 e 3.1 do NetExpress.&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#cc6600;"&gt;Conhecendo o External File Handler&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;Quando escrevemos em nossos programas comandos de acesso a um arquivo, um "&lt;em&gt;open&lt;/em&gt;", um "&lt;em&gt;read&lt;/em&gt;" ou um "&lt;em&gt;start&lt;/em&gt;", o compilador converte esses comandos em chamadas para o executável EXTFH.EXE. Esse é o executável do runtime que realiza todas as operações de arquivos no compilador Microfocus. As chamadas são feitas exatamente como no código a seguir:&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; "EXTFH" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;Operacao DadosDoArquivo&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Um código específico é enviado ao EXTFH quando efetuamos, por exemplo, um "&lt;em&gt;open&lt;/em&gt;" em um arquivo. Além do código específico da operação, os dados do arquivo são passados através de uma estrutura de dados, que se encontra no arquivo XFHFCD.CPY, um "&lt;em&gt;copybook file&lt;/em&gt;" que pode ser copiado em qualquer fonte Cobol. Esse arquivo encontra-se na pasta SOURCE, dentro da pasta de instalação do NetExpress.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#cc6600;"&gt;A estrutura de dados XFHFCD.CPY&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;No arquivo de ajuda do Microfocus NetExpress não existem muitas informações sobre a estrutura de dados encontrada no arquivo XFHFCD.CPY, infelizmente. Porém, com um pouco de paciência, o desenvolvedor vai encontrar a descrição de alguns dos campos dessa estrutura, além da relação completa dos códigos que identificam as operações de arquivos passadas para o EXTFH.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#cc6600;"&gt;Criando seu próprio External File Handler&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;O compilador Microfocus permite que o desenvolvedor crie seu próprio External File Handler. Assim, todas as chamadas das operações de arquivos serão feitas para esse programa. Com esse recurso, o desenvolvedor pode "interceptar" as operações de um determinado arquivo e intepretá-las da forma que desejar. A diretiva CALLFH indica qual programa deve ser chamado para interpretar as operações de arquivo:&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$SET CALLFH"MEUFH"&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Com essa diretiva definida em um programa, todas as operações de arquivos nesse programa serão convertidas para o código a seguir:&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; "MEUFH" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;Operacao DadosDoArquivo&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#cc6600;"&gt;O programa MEUFH.CBL&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;No exemplo a seguir, o programa MEUFH.CBL recebe os dados do programa chamador e simplesmente faz a chamada para o EXTFH, que é o External File Handler padrão da Microfocus, sem fazer qualquer alteração nas operações de arquivos:&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;program-id&lt;/span&gt;. &lt;span style="color:#990000;"&gt;MEUFH&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;linkage section&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;01 &lt;span style="color:#990000;"&gt;lnkOperacao&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; xx.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;01 &lt;span style="color:#990000;"&gt;lnkDadosDoArquivo&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;copy&lt;/span&gt; "XFHFCD.CPY".&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;procedure division using&lt;/span&gt; &lt;span style="color:#990000;"&gt;lnkOperacao lnkDadosDoArquivo&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; "EXTFH" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;lnkOperacao lnkDadosDoArquivo&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;exit program&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#cc6600;"&gt;Obtendo outras informações do arquivo&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;Adicionando algumas linhas, poderíamos obter outras informações do arquivo:&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;program-id&lt;/span&gt;. &lt;span style="color:#cc0000;"&gt;MEUFH&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;working-storage section&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;77 &lt;span style="color:#990000;"&gt;wsTamanhoDoRegistro&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;linkage section&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;01 &lt;span style="color:#990000;"&gt;lnkOperacao&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; xx.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;01 &lt;span style="color:#990000;"&gt;lnkDadosDoArquivo&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;copy&lt;/span&gt; "XFHFCD.CPY".&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;01 &lt;span style="color:#990000;"&gt;lnkNomeDoArquivo&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; x(1024).&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;01 &lt;span style="color:#990000;"&gt;lnkRegistro&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; x(32767).&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;procedure division using&lt;/span&gt; &lt;span style="color:#990000;"&gt;lnkOperacao lnkDadosDoArquivo&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#999999;"&gt;*&gt; Para saber o nome do arquivo&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;set address of&lt;/span&gt; &lt;span style="color:#990000;"&gt;lnkNomeDoArquivo&lt;/span&gt; &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;fcd-filename-address&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#999999;"&gt;*&gt; Para saber o tamanho do registro&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; &lt;span style="color:#990000;"&gt;fcd-current-rec-len&lt;/span&gt; &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsTamanhoDoRegistro&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#999999;"&gt;*&gt; Para pegar o conteúdo do registro que foi passado&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;set address of&lt;/span&gt; &lt;span style="color:#990000;"&gt;lnkRegistro&lt;/span&gt; &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;fcd-record-address&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; "EXTFH" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;lnkOperacao lnkDadosDoArquivo&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;exit program&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#cc6600;"&gt;Acessando tabelas de um banco de dados&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;Com as informações básicas descritas acima, o desenvolvedor poderia identificar qual operação foi requisitada e em qual arquivo essa operação seria efetuada. Identificada a operação, bastaria efetuar no mesmo programa MEUFH.CBL, chamadas a parágrafos ou rotinas que processariam a operação específica, porém, utilizando a tabela correspondente em um banco de dados. utilizando e atualizando a variável que corresponde ao registro do arquivo, ao retornar para o programa chamador, todos os dados estariam devidamente atualizados, sem a necessidade real de qualquer alteração no programa que contém os comandos "open", "read" ou "start".&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#cc6600;"&gt;Exemplos práticos&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;Aos desenvolvedores que pesquisarem sobre esse assunto e conseguirem resultados práticos, sintam-se à vontade para enviarem seus materiais, projetos e programas, para que eu possa publicá-los e assim ajudar a outros desenvolvedores que desejam utilizar os mesmos recursos. Compartilhando a informação, teremos sempre o melhor do que a linguagem pode nos oferecer. Estarei sempre contando com a colaboração de vocês.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-7282942059254925422?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/cM8TpOeigcM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/7282942059254925422/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=7282942059254925422" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/7282942059254925422?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/7282942059254925422?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/cM8TpOeigcM/o-segredo-do-external-file-handler.html" title="O segredo do External File Handler" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2008/01/o-segredo-do-external-file-handler.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AGSHY4eSp7ImA9WxZTFUQ.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-1992539078475052473</id><published>2008-01-17T16:26:00.000-03:00</published><updated>2008-01-17T16:55:29.831-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-17T16:55:29.831-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OLE" /><category scheme="http://www.blogger.com/atom/ns#" term="Objetos" /><category scheme="http://www.blogger.com/atom/ns#" term="Classes" /><title>O Word ou o Excel estão instalados ?</title><content type="html">&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Quem utiliza a tecnologia OLE com o Microfocus NetExpress sabe da infinidade de recursos que tem em mãos, para manipular instâncias do Word ou do Excel, por exemplo. Mas o desenvolvedor ao distribuir suas aplicações, pode encontrar pela frente alguns micros que não possuem esses programas instalados. Com um método bem simples, o incômodo com algumas mensagens de erro do NetExpress pode ser evitado.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Em seu programa, na &lt;span style="font-family:courier new;color:#009900;"&gt;class-control&lt;/span&gt;, defina a classe a seguir:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;class-control&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#990000;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;OLESup&lt;/span&gt; &lt;span style="color:#009900;"&gt;is class&lt;/span&gt; "olesup"&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Na &lt;span style="font-family:courier new;color:#009900;"&gt;working-storage section&lt;/span&gt;, defina a seguinte variável:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;77 &lt;span style="color:#990000;"&gt;wsResult&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value&lt;/span&gt; &lt;span style="color:#009900;"&gt;zeros&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Na &lt;span style="font-family:courier new;color:#009900;"&gt;procedure division&lt;/span&gt;, coloque os seguintes comandos antes de tentar criar instâncias do Word, por exemplo:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;OLESup&lt;/span&gt; "isServerRegistered" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; z"Word.Application"&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsResult&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;if&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsResult&lt;/span&gt; &lt;span style="color:#009900;"&gt;not&lt;/span&gt; = zeros&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;display&lt;/span&gt; "O Word não está instalado nesse micro."&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;stop run&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Courier New;font-size:85%;color:#009900;"&gt;end-if&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Se o resultado for "zero" na váriável &lt;span style="font-family:courier new;color:#990000;"&gt;wsResult&lt;/span&gt;, então é porque o Word está realmente instalado no micro. Caso contrário, você pode então informar ao usuário que o Word não está instalado no micro em questão.&lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-1992539078475052473?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/vWscwHX2NVs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/1992539078475052473/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=1992539078475052473" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/1992539078475052473?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/1992539078475052473?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/vWscwHX2NVs/o-word-ou-o-excel-esto-instalados.html" title="O Word ou o Excel estão instalados ?" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2008/01/o-word-ou-o-excel-esto-instalados.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUBQ386fCp7ImA9WB9aGUQ.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-4309912583802602955</id><published>2008-01-10T15:27:00.000-03:00</published><updated>2008-01-10T16:10:52.114-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-10T16:10:52.114-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Comandos" /><title>TYPEDEF - Definindo tipos</title><content type="html">&lt;div align="justify"&gt;&lt;span style="font-size:85%;color:#ff6600;"&gt;&lt;em&gt;Uma colaboração de Jair da Silva.&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;As estruturas de dados complexas ou simples que precisam ser declaradas várias vezes no mesmo programa ou em vários programas, podem ser definidas com a definição de tipos, um conceito nativo da linguagem C. &lt;/span&gt;&lt;span style="font-size:85%;"&gt;Outro conveniente destas estruturas pré-definidas é que naquele momento que a memória nos falha recusando-se a lembrar qual o formato e/ou o tipo de dados deve ser definido para a chamada de uma classe ou uma função de biblioteca.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;A declaração de estrutura é feita assim:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;01 &lt;span style="color:#990000;"&gt;wsbdDataZ&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9999/99/99 &lt;span style="color:#009900;"&gt;typedef&lt;/span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;01 &lt;span style="color:#990000;"&gt;wsbdDataX&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; x(20) &lt;span style="color:#009900;"&gt;typedef&lt;/span&gt;. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;01 &lt;span style="color:#990000;"&gt;wsbdDataXEd&lt;/span&gt; &lt;span style="color:#009900;"&gt;typedef&lt;/span&gt;. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;02 &lt;span style="color:#990000;"&gt;wsbdAnoX&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(04). &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;02 &lt;span style="color:#990000;"&gt;f&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; x(01). &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;02 &lt;span style="color:#990000;"&gt;wsbdMesX&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(02). &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;02 &lt;span style="color:#990000;"&gt;f&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; x(01). &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;02 &lt;span style="color:#990000;"&gt;wsbdDiaX&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(02). &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;02 &lt;span style="color:#990000;"&gt;f&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; x(01). &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;02 &lt;span style="color:#990000;"&gt;wsbdHorX&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(02). &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;02 &lt;span style="color:#990000;"&gt;f&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; x(01). &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;02 &lt;span style="color:#990000;"&gt;wsbdMinX&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(02). &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;02 &lt;span style="color:#990000;"&gt;f&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; x(01). &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;02 &lt;span style="color:#990000;"&gt;wsbdSegX&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(02). &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;02 &lt;span style="color:#990000;"&gt;f&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; x(01). &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;01 &lt;span style="color:#990000;"&gt;wsbdData9&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(08) &lt;span style="color:#009900;"&gt;typedef&lt;/span&gt;. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;01 &lt;span style="color:#990000;"&gt;wsbdData9Ed&lt;/span&gt; &lt;span style="color:#009900;"&gt;typedef&lt;/span&gt;. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;02 &lt;span style="color:#990000;"&gt;wsbdDia9&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(02). &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;02 &lt;span style="color:#990000;"&gt;wsbdMes9&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(02). &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;...&lt;/span&gt;02 &lt;span style="color:#990000;"&gt;wsbdAno9&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(04).&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Dispondo estas estruturas num arquivo à parte (um &lt;em&gt;copybook&lt;/em&gt;, que em nosso exemplo poderia ser o arquivo &lt;em&gt;tiposdef.cpy&lt;/em&gt;), podemos incluí-lo em qualquer ponto do programa e em qualquer programa. Aqui neste exemplo, definimos os campos com formatação de datas que são retornados pelos SGBDs mais comuns. Seu uso prático é descrito a seguir:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;WORKING-STORAGE SECTION&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#009900;"&gt;copy&lt;/span&gt; tiposdef.cpy.&lt;br /&gt;01 &lt;span style="color:#990000;"&gt;Data-VctoX wsbdDataX&lt;/span&gt;.&lt;br /&gt;01 &lt;span style="color:#990000;"&gt;Data-VctoXEd&lt;/span&gt; &lt;span style="color:#009900;"&gt;redefines&lt;/span&gt; &lt;span style="color:#990000;"&gt;Data-VctoX wsbdDataXEd&lt;/span&gt;.&lt;br /&gt;01 &lt;span style="color:#990000;"&gt;Data-Vcto9 wsbdData9&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;01 &lt;span style="color:#990000;"&gt;Data-PgtoX wsbdDataX&lt;/span&gt;.&lt;br /&gt;01 &lt;span style="color:#990000;"&gt;Data-PgtoXEd&lt;/span&gt; &lt;span style="color:#009900;"&gt;redefines&lt;/span&gt; &lt;span style="color:#990000;"&gt;Data-PgtoX wsbdDataXEd&lt;/span&gt;.&lt;br /&gt;01 &lt;span style="color:#990000;"&gt;Data-Pgto9 wsbdData9&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;EXEC SQL&lt;br /&gt;SELECT * FROM tabela (campos .... :&lt;span style="color:#990000;"&gt;Data-VctoX&lt;/span&gt;:&lt;span style="color:#990000;"&gt;Data-PgtoX&lt;/span&gt; ...) &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;WHERE campo-a = 'B200'&lt;br /&gt;END-EXEC&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Transformando a data de vencimento no padrão tupiniquim:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsbdDiaX&lt;/span&gt; &lt;span style="color:#009900;"&gt;of&lt;/span&gt; &lt;span style="color:#990000;"&gt;Data-VctoXEd&lt;/span&gt; &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsbdDia9&lt;/span&gt; &lt;span style="color:#009900;"&gt;of&lt;/span&gt; &lt;span style="color:#990000;"&gt;Data-Vcto9&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsbdMesX&lt;/span&gt; &lt;span style="color:#009900;"&gt;of&lt;/span&gt; &lt;span style="color:#990000;"&gt;Data-VctoXEd&lt;/span&gt; &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsbdMes9&lt;/span&gt; &lt;span style="color:#009900;"&gt;of&lt;/span&gt; &lt;span style="color:#990000;"&gt;Data-Vcto9&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsbdAnoX&lt;/span&gt; &lt;span style="color:#009900;"&gt;of&lt;/span&gt; &lt;span style="color:#990000;"&gt;Data-VctoXEd&lt;/span&gt; &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsbdAno9&lt;/span&gt; &lt;span style="color:#009900;"&gt;of&lt;/span&gt; &lt;span style="color:#990000;"&gt;Data-Vcto9&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Agora temos em &lt;span style="font-family:courier new;color:#990000;"&gt;Data-Vcto9&lt;/span&gt; nossa formatação tradicional.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Outros tipos podem ser criados dependendo aí da necessidade e da criatividade de cada desenvolvedor.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-4309912583802602955?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/Bh3k-AnWxpk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/4309912583802602955/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=4309912583802602955" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/4309912583802602955?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/4309912583802602955?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/Bh3k-AnWxpk/typedef-definindo-tipos.html" title="TYPEDEF - Definindo tipos" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2008/01/typedef-definindo-tipos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UHQnw8eip7ImA9WxRaEEw.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-271694224976727195</id><published>2008-01-03T20:56:00.000-03:00</published><updated>2008-12-11T14:07:13.272-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-11T14:07:13.272-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="API´s" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><title>API´s: usando o arquivo WINDOWS.CPY</title><content type="html">&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Quando trabalhamos com funções do Windows - as chamadas API´s - precisamos definir variáveis e utilizar algumas constantes que por vezes confundem os desenvolvedores Cobol, personagens que verdadeiramente não estão muito acostumados a determinadas convenções existentes no SDK (&lt;em&gt;System Development Kit&lt;/em&gt;) da Microsoft. O arquivo WINDOWS.CPY que vem junto ao Microfocus NetExpress, pode ser incluído via "&lt;em&gt;copy&lt;/em&gt;" nos programas para facilitar e auxiliar o desenvolvedor na definição de variáveis e na utilização de constantes ou estruturas necessárias para a utilização das API´s.&lt;br /&gt;&lt;br /&gt;Para utilizar o arquivo WINDOWS.CPY, vc precisa copiá-lo no início do seu programa. Antes mesmo da cláusula &lt;span style="font-family:courier new;color:#009900;"&gt;PROGRAM-ID&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;copy&lt;/span&gt; "windows.cpy".&lt;br /&gt;&lt;span style="color:#009900;"&gt;program-id&lt;/span&gt;. &lt;span style="color:#990000;"&gt;TesteAPI&lt;/span&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Caso utilize o arquivo WINDOWS.CPY em uma classe, coloque o "&lt;em&gt;copy&lt;/em&gt;" antes da cláusula &lt;span style="font-family:courier new;color:#009900;"&gt;CLASS-ID&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;copy&lt;/span&gt; "windows.cpy".&lt;br /&gt;&lt;span style="color:#009900;"&gt;class-id&lt;/span&gt;. &lt;span style="color:#990000;"&gt;TesteAPI&lt;/span&gt; &lt;span style="color:#009900;"&gt;inherits from&lt;/span&gt; &lt;span style="color:#990000;"&gt;Base&lt;/span&gt;.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Nos dois casos, o compilador trata de referenciar automaticamente o arquivo WINDOWS.CPY a partir da pasta onde ele se encontra, que é a pasta SOURCE, dentro da pasta de instalação do Microfocus NetExpress.&lt;br /&gt;&lt;br /&gt;Com o "copy" do arquivo WINDOWS.CPY fica mais fácil para o desenvolvedor definir determinadas variáveis que são encontradas em muitos exemplos na internet. Quando você encontrar um exemplo em C++ ou C# com uma definição de variável como a que mostro a seguir, com a utilização do arquivo WINDOWS.CPY é provável que você consiga definir as variáveis da mesma forma, diretamente no fonte Cobol. Isso porque o arquivo WINDOWS.CPY possui uma série de "&lt;em&gt;typedef´s&lt;/em&gt;" identificando os principais tipos de variáveis utilizada. &lt;em&gt;Typedef&lt;/em&gt; é um recurso que o compilador da Microfocus oferece para que o desenvolvedor possa criar estruturas de dados e utilizá-las no fonte Cobol, como uma definição básica. Esse recurso será tema de um artigo mais detalhado, em breve aqui no blog.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Veja a imagem a seguir das variáveis utilizadas na API "&lt;em&gt;SendMessage&lt;/em&gt;" e como ficariam as mesmas definições de variáveis no fonte Cobol:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5151386981651702306" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_D1cn94ra6Bw/R31nKqXr4iI/AAAAAAAAAhA/sfRnrFc3Uf4/s400/SMImage.jpg" border="0" /&gt; &lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Baseado nas informações da imagem mostrada, definiríamos as variáveis envolvidas na API "&lt;em&gt;SendMessage&lt;/em&gt;" da seguinte forma:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;working-storage section&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;wsHwnd&lt;/span&gt; &lt;span style="color:#990000;"&gt;HWND&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;wsMsg&lt;/span&gt; &lt;span style="color:#990000;"&gt;UINT&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;wsWParam&lt;/span&gt; &lt;span style="color:#990000;"&gt;WPARAM&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;wsLParam&lt;/span&gt; &lt;span style="color:#990000;"&gt;LPARAM&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;wsResult&lt;/span&gt; &lt;span style="color:#990000;"&gt;LRESULT&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;span style="font-family:georgia;font-size:85%;"&gt;Pode parecer um pouco estranho definir variáveis dessa forma em um fonte Cobol, mas a intenção da Microfocus foi facilitar a utilização dessas variáveis, tão comumente encontradas em programas ou funções escritas em C ou em outras linguagens semelhantes.&lt;br /&gt;&lt;br /&gt;Além dos diversos tipos de variáveis, a maioria das API´s também já estão pré-definidas como constantes no arquivo WINDOWS.CPY. Com isso, uma chamada a uma API pode ser feita declarando explicitamente o nome da mesma no fonte Cobol:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; &lt;span style="color:#990000;"&gt;wapi&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;SendMessage&lt;/span&gt; &lt;span style="color:#009900;"&gt;using by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsHwnd&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsMSG&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsWParam&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsLParam&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsResult&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;A utilização de "&lt;em&gt;typedef´s"&lt;/em&gt; ajuda a padronizar a definição de variáveis e estruturas. Como dito anteriormente, em um próximo artigo vou abordar esse assunto com detalhes, para exemplificar a utilização desse recurso em programas Cobol. &lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-271694224976727195?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/UMM2nyVz5bE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/271694224976727195/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=271694224976727195" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/271694224976727195?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/271694224976727195?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/UMM2nyVz5bE/apis-usando-o-arquivo-windowscpy.html" title="API´s: usando o arquivo WINDOWS.CPY" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_D1cn94ra6Bw/R31nKqXr4iI/AAAAAAAAAhA/sfRnrFc3Uf4/s72-c/SMImage.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2008/01/apis-usando-o-arquivo-windowscpy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QARXgzeyp7ImA9WB9VFEs.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-2486512745023086430</id><published>2007-11-30T07:25:00.000-03:00</published><updated>2007-11-30T20:29:04.683-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-30T20:29:04.683-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Runtime" /><title>INT, GNT, LBR, EXE ou DLL ?</title><content type="html">&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Se você desenvolve aplicações Window ou UNIX utilizando o Micro Focus COBOL certamente já encontrou diferentes formatos de arquivos executáveis, como &lt;em&gt;i&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;nt, gnt, lbr, exe, dll&lt;/em&gt;, entre outros. Se você tem dúvidas sobre as diferenças entre esses formatos, esse artigo pode esclarecer algumas delas.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;br /&gt;INT - Intermediate Code&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Esse tipo de código foi introduzido pela Micro Focus por dois motivos principais: tamanho e portabilidade. Para executar esse código intermediário é necessário um interpretador, que fica dentro do Cobol Runtime System. Para entender um código intermediário, imagine uma série de chamadas a sub-rotinas. O interpretador contém sub-rotinas que manipulam cada instrução do código intermediário. Cada instrução lida do código intermediário, faz uma chamada para uma rotina específica no interpretador, que manipula essa instrução. Depois que a instrução é executada, o interpretador retorna o comando ao código intermediário para pegar a próxima instrução.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Assim que um programa é compilado e um código intermediário é gerado, tudo o que é necessário para executá-lo é o COBOL Runtime System. Por isso, se o Runtime System foi portado para uma nova plataforma, a aplicação estará disponível para ser executada sem a necessidade de ser recompilada.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Pelo fato do código intermediário ser interpretado, a performance de aplicações que executam um quantidade considerável de operações pode ser relativamente lenta.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;br /&gt;GNT - Generated Code&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Arquivos do tipo &lt;em&gt;generated code&lt;/em&gt; contém código de máquina nativo, específico do processador que você está usando, diferentemente dos arquivos que usam o &lt;em&gt;intermediate code&lt;/em&gt;. Por isso, os compiladores criam otimizações no código gerado para executá-lo o mais rápido possível, fazendo com que a performance das aplicações seja significantemente mais rápida, visto que o Runtime System não precisa interpretar instruções quando as aplicações são executadas.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Apesar dos arquivos &lt;em&gt;generated code&lt;/em&gt; possuírem código nativo, eles também necessitam do COBOL Runtime System para serem carregados e executados. Porém, um intepretador não é necessário, pois o COBOL Runtime System oferece o suporte necessário para a execução do programa.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;br /&gt;LBR - Library files&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Enquanto a organização de aplicações em diversos módulos oferece um gerenciamento mais eficiente de memória, além de possibilitar que equipes de desenvolvimento trabalhem na mesma aplicação efetivamente, como resultado disso uma simples aplicação pode conter uma quantidade enorme de arquivos INT ou GNT a serem distribuídos. Isso traz algumas dificuldades para o gerenciamento da distribuição dessas aplicações, em comparação às aplicações &lt;em&gt;linkadas&lt;/em&gt; em um único executável. Dando importância a esse detalhe, a Micro Focus então introduziu o conceito de &lt;em&gt;library &lt;/em&gt;(lbr) &lt;em&gt;files&lt;/em&gt;. Uma ferramenta chamada Library Manager foi criada permitindo aos desenvolvedores distribuírem diversos arquivos GNT e INT dentro de um único arquivo LBR. Ao invés de múltiplos arquivos INT e GNT, o desenvolvedor tem que distribuir apenas um arquivo LBR (ou mais, se desejar) e o COBOL Runtime System.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;DLL - Dynamic Link Library&lt;br /&gt;&lt;/strong&gt;Em meados de 80, quando a IBM lançou o OS/2, sistema operacional que promovia muitas facilidades no gerenciamento de memória, também foi introduzido o conceito de &lt;em&gt;dynamic link libraries&lt;/em&gt; (DLL´s). Uma DLL é um arquivo executável &lt;em&gt;linkado&lt;/em&gt; que pode ser carregado dinamicamente por um programa quando necessário. E qual a importância desses arquivos para os desenvolvedores COBOL ? O uso de arquivos INT e GNT é perfeito se você desenvolve unicamente em COBOL e o COBOL Runtime System oferece todo o suporte adicional necessário para isso. Porém, se você deseja utilizar múltiplas linguagens de programação ou se você necessita chamar rotinas do sistema operacional que não são acessíveis utilizando o COBOL Runtime System, compilar programas para INT ou GNT não seria o mais conveniente, como você verá a seguir.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;A utilização de API´s do sistema operacional&lt;br /&gt;&lt;/strong&gt;O Windows e o OS/2 trouxeram aos desenvolvedores o conceito de &lt;em&gt;interface para programação de aplicações (Application Programming Interface - API&lt;/em&gt;). São funções que permitem escrever um programa utilizando uma linguagem de alto nível para acessar diretamente os recursos do sistema operacional.  Para oferecer acesso a essa enorme variedade de funções API aos desenvolvedores COBOL, a Micro Focus vem adicionando recursos à linguagem COBOL desde os anos 80, que possibilitam aos desenvolvedores fazerem chamadas diretas às API´s. Porém, o uso de arquivo INT e GNT traziam um problema para acessar essas API´s, pois todas elas se encontram em arquivos DLL. Por padrão, para acessar uma API você precisa &lt;em&gt;linkar&lt;/em&gt; a sua aplicação com um &lt;em&gt;import library&lt;/em&gt; para a DLL que contém a API. Uma &lt;em&gt;import library&lt;/em&gt; contém um código que localiza cada função em tempo de execução e a torna acessível para uma aplicação. Pelo fato de arquivos INT e GNT não serem &lt;em&gt;linkados&lt;/em&gt;, teoricamente não seria possível a esses programas localizarem a API desejada. Apesar da teoria, sabemos que a Micro Focus oferece mecanismos alternativos para acessar API´s a partir de arquivos INT ou GNT, mas o modo mais eficiente de acessar uma API seria realmente compilar o programa para um OBJ e &lt;em&gt;linká-lo&lt;/em&gt; com a &lt;em&gt;import library&lt;/em&gt; correspondente.&lt;br /&gt;&lt;br /&gt;Você também achará mais fácil utilizar arquivos DLL se estiver desenvolvendo aplicações que utilizam diferentes linguagens de programação.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;E qual formato executável deve ser utilizado ?&lt;br /&gt;&lt;/strong&gt;Diante de tantos formatos diferentes de arquivos executáveis que você pode criar utilizando o Micro Focus COBOL, pode ser difícil decidir qual deles utilizar. As linhas a seguir podem lhe ajudar na escolha, mas isso também pode depender de alguns detalhes em particular de cada aplicação.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Portabilidade versus performance&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Um código escrito em Micro Focus COBOL é praticamente portável sobre todas as plataformas existentes, considerando, é claro, que nenhuma chamada a uma API foi feita para um sistema operacional específico. Para isso, o código-fonte COBOL simplesmente deve ser compilado pelo Micro Focus COBOL para cada uma das plataformas.&lt;br /&gt;&lt;br /&gt;Arquivo INT são totalmente portáveis. Um arquivo INT compilado para uma aplicação desenvolvida originalmente em uma plataforma Windows pode ser portado para diversas outras plataformas, como Sun Solaris, HP/UX, Linux e muitas outras plataformas UNIX. Se essa noção de portabilidade parece ser familiar, deve ser porque o JAVA chamou muita atenção com o conceito de "&lt;em&gt;write once, run anywhere&lt;/em&gt;" (&lt;em&gt;escreva uma vez, execute em qualquer lugar&lt;/em&gt;). Esse conceito não é novo para a Micro Focus, que já possibilitava aos desenvolvedores fazerem isso há mais de 20 anos.&lt;br /&gt;&lt;br /&gt;O lado negativo de um arquivo INT é a performance. Pelo fato de ser interpretado, a performance nem sempre á tão boa quanto a de um arquivo GNT. O nível de performance pode variar, dependendo da funcionalidade da sua aplicação. Se sua aplicação gasta um pequeno tempo lendo ou gravando arquivos ou aguardando por alguma digitação do usuário, então a diferença de performance entre o arquivo INT e o arquivo GNT dificilmente deve comprometer a sua aplicação. Porém, se sua aplicação executa uma quantidade expressiva de cálculos e outras operações, então a diferença de performance pode ser muito significante.&lt;br /&gt;&lt;br /&gt;Se sua aplicação foi desenvolvida para ser distribuída em diversas plataformas e não faz uso de algum recurso específico de um sistema operacional, então o uso de arquivos INT é recomendável. Apenas você pode determinar se a performance na utilização de arquivos INT atende às suas necessidades.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Arquivos GNT ou DLL ? O que utilizar ?&lt;br /&gt;&lt;/strong&gt;Se você pretende distribuir sua aplicação em uma plataforma única ou se a performance é um ponto crítico em seu sistema, então não considere a criação de arquivos INT. A próxima decisão é saber quando utilizar arquivos GNT ou DLL.&lt;br /&gt;&lt;br /&gt;Se você já utiliza o Micro Focus COBOL há algum tempo e faz uso de arquivos GNT, então mantenha sua opção. Principalmente se você não necessita acessar API´s ou funções escritas em outras linguagens.&lt;br /&gt;&lt;br /&gt;Se você está migrando para o Micro Focus COBOL ou se possui uma aplicação que faz uso de API´s ou funções de outras linguagens, então você deve considerar o &lt;em&gt;link&lt;/em&gt; de sua aplicação em um arquivo EXE e seus sub-programas em arquivos DLL.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Minhas considerações&lt;br /&gt;&lt;/strong&gt;O texto escrito acima foi traduzido e resumido do seu original, no site da Micro Focus (&lt;a href="http://www.microfocus.com/"&gt;www.microfocus.com&lt;/a&gt;). O texto é de autoria de &lt;strong&gt;&lt;em&gt;Wayne Rippin&lt;/em&gt;&lt;/strong&gt;. É um texto do ano de 2002 e de lá pra cá muita coisa mudou no compilador da Micro Focus, nos equipamentos, nas linguagens. Eu, particularmente, já utilizei quase todos os tipos de arquivos descritos anteriormente. A opção atual em minha empresa é a utilização de um executável principal (EXE) e a chamada às minhas sub-rotinas é feita em arquivos GNT. As classes que crio em minhas aplicações (POO) também são geradas em arquivos GNT. Algumas bibliotecas de funções específicas dos meus sistemas encontram-se em arquivos DLL. O "mix" entre todas essas opções de arquivos é perfeitamente possível, como você pode observar. Resta ao desenvolvedor determinar que tipo de arquivo melhor se encaixa de acordo com as necessidades de cada aplicação. Eu diria até que seria extremamente válido experimentar cada um desses tipos e saborear aquele que melhor gosto teve para o desenvolvedor.&lt;br /&gt;&lt;br /&gt;Agora eu aguardo as considerações de vocês. As opiniões serão muito bem vindas.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-2486512745023086430?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/PzMYIqQGlgc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/2486512745023086430/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=2486512745023086430" title="6 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/2486512745023086430?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/2486512745023086430?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/PzMYIqQGlgc/int-gnt-lbr-exe-ou-dll.html" title="INT, GNT, LBR, EXE ou DLL ?" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>6</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2007/11/int-gnt-lbr-exe-ou-dll.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UHQns7eCp7ImA9WxRaEEw.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-8083031280148133968</id><published>2007-11-18T15:47:00.000-03:00</published><updated>2008-12-11T14:07:13.500-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-11T14:07:13.500-03:00</app:edited><title>NetExpress: a evolução da ferramenta</title><content type="html">&lt;a href="http://4.bp.blogspot.com/_D1cn94ra6Bw/R0CLwzwa9eI/AAAAAAAAAgo/3p--f9z1W5Q/s1600-h/Net.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5134257245845648866" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_D1cn94ra6Bw/R0CLwzwa9eI/AAAAAAAAAgo/3p--f9z1W5Q/s400/Net.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;color:#ff6600;"&gt;&lt;strong&gt;A partir da versão 3.1&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#cc9933;"&gt;COBOL/JAVA Interoperability and EJB Wrapping&lt;/span&gt;&lt;br /&gt;Facilidade de trabalhar com COBOL e módulos Java sem a necessidade de utilizar Java Native Interface (JNI)&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;Data Tools&lt;br /&gt;&lt;/span&gt;Data Tools suporta arquivos indexados superiors a 2GB (IDX Format 8)&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;Dialog System&lt;br /&gt;&lt;/span&gt;Maior número de Common Controls é suportado pelo produto. Geração através de Command Line do copyfile de uma Screenset&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;Internet Application Wizard&lt;br /&gt;&lt;/span&gt;Disponível a geração de aplicações ISAPI através do Internet Application Wizard.&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;Microsoft Terminal Server&lt;br /&gt;&lt;/span&gt;Net Express está homologado para trabalhar com Microsoft Windows NT Terminal Server e Microsoft Windows 2000 Terminal Services.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#ff6600;"&gt;&lt;strong&gt;A partir da versão 3.1 Sp1&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#cc9933;"&gt;OLE Automation&lt;/span&gt;&lt;br /&gt;Maior número de Data Types suportados pela programação OLE. Agora é possível trabalhar com campos COMP-3, COMP-X e COMP.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;OpenESQL&lt;br /&gt;&lt;/span&gt;Inclusão de ODBC Driver para XDB no produto Net Express. ODBC driver permite Autocommit para facilitar o processo de validação de código fonte.&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;Projects&lt;br /&gt;&lt;/span&gt;Geração de projetos no Net Express a partir do DOS prompt.&lt;br /&gt;&lt;span style="color:#cc9933;"&gt;SQL Option for DB2&lt;br /&gt;&lt;/span&gt;Net Express inclui um SQL Option for DB2 Database. Esta facilitadade permite a conectividade do produto com o Mainframe IBM.&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;NLS changes&lt;br /&gt;&lt;/span&gt;&lt;em&gt;No Run-time&lt;/em&gt; para o produto Dialog System. O tempo de execução entre o Front-end do produto e a aplicação COBOL fica muito reduzido.&lt;br /&gt;&lt;span style="color:#cc9933;"&gt;Screen Resolution Support&lt;br /&gt;&lt;/span&gt;Inclusão de auto-definição na resolução dos Front-ends Dialog System. Este suporte permite que o Front-end seja criado com uma definição de monitor e ser ajustado automaticamente para outras definições.&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;Internet Explorer 6.0 Support&lt;br /&gt;&lt;/span&gt;Suporte ao Microsoft Internet Explorer 6. A versão 5 do produto da Microsoft continua sendo suportada.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;color:#ff6600;"&gt;&lt;strong&gt;A partir da versão 4.0&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#cc9933;"&gt;Web Services&lt;br /&gt;&lt;/span&gt;Net Express agora permite o desenvolvimento de WebServices COBOL sem a necessidade de software de terceiros.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;COBOL/ J2EE Interoperability&lt;br /&gt;&lt;/span&gt;A versão 4.0 do produto permitei gerar EJBs a partir de uma aplicação COBOL existente.&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;Micro Focus Enterprise Server&lt;br /&gt;&lt;/span&gt;Enteprise Server permite a publicação de WebServices COBOL e COBOL/J2EE applications.&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;COBOL/ XML Support&lt;br /&gt;&lt;/span&gt;Nova sintaxe é implementada ao File Handler do Micro Focus COBOL. Possibilita a manipulação de arquivos XML através de comandos COBOL.&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;Microsoft .NET Interoperability&lt;br /&gt;&lt;/span&gt;Nova Interface Mapping Toolkit suporta o desenvolvimento de COM Objects a partir de uma aplicação COBOL existente.&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;Combined Documentation&lt;br /&gt;&lt;/span&gt;Toda a documentação do software agora está disponível em HTML format.&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;SQL Option for DB2&lt;br /&gt;&lt;/span&gt;SQL Option for DB2 agregou as funcionalidades do DB2 version 7.&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;Windows Server 2003 / XP Professional / 2000 SP 2&lt;br /&gt;&lt;/span&gt;Somente o Net Express versão 4.0 é homologado para o Windows XP Professional/ Windows 2000 SP 2 e Windows 2003 32 Bit Mode.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#ff6600;"&gt;&lt;strong&gt;A partir da versão 5.0&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#cc9933;"&gt;Rebuild&lt;br /&gt;&lt;/span&gt;Utilitário REBUILD tem uma melhora considerável na performance, utilizando melhor espaço em disco para reconstruir arquivos Indexados.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;Test Coverage&lt;br /&gt;&lt;/span&gt;Esta funcionalidade permite que a área de QA Testing tenha uma documentação em formato HTML ou Texto da execução de um programa COBOL.&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;ISO 2002 COBOL Support&lt;br /&gt;&lt;/span&gt;A arquitetura de escrita ISO 2002 COBOL foi incluida no compilador Net Express.&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;64-bit support&lt;br /&gt;&lt;/span&gt;Net Express IDE pode ser utilizado para desenvolvimento de aplicações nativas em Windows 64 Bits (x64 ou Itanium 2).&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;CICS extension&lt;br /&gt;&lt;/span&gt;Interface Mapping Toolkit tem suporte para extensão de aplicações CICS, permitindo criação de Service Interface baseado em um programa COBOL. Suporte a COMMAREA também foi implementado ao software.&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;Client/ server binding&lt;br /&gt;&lt;/span&gt;Aplicações baseadas no Enterprise Server, agora podem ser publicadas no Micro Focus Server for SOA e o limite de 300 clients para cada objeto não existe mais. Agora o acesso simultâneo é ilimitado.&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color:#cc9933;"&gt;Demonstrations&lt;br /&gt;&lt;/span&gt;Novos programas de exemplo foram implementados na versão 5.0 do produto. Agora é possível encontrar programas que demonstram os tópicos abaixo:&lt;/div&gt;&lt;div align="justify"&gt;1. .NET Managed COBOL&lt;br /&gt;2. Multithreading Applications&lt;br /&gt;3. WebBook e WinBook Forms&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;em&gt;Fonte: &lt;/em&gt;&lt;a href="http://www.mundocobol.com.br/"&gt;&lt;em&gt;www.mundocobol.com.br&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-8083031280148133968?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/ujDRgc8cDL4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/8083031280148133968/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=8083031280148133968" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/8083031280148133968?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/8083031280148133968?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/ujDRgc8cDL4/netexpress-evoluo-da-ferramenta.html" title="NetExpress: a evolução da ferramenta" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_D1cn94ra6Bw/R0CLwzwa9eI/AAAAAAAAAgo/3p--f9z1W5Q/s72-c/Net.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2007/11/netexpress-evoluo-da-ferramenta.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMARX4_fSp7ImA9WB9XFE4.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-1627907105123635425</id><published>2007-11-07T09:08:00.000-03:00</published><updated>2007-11-07T09:27:24.045-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-07T09:27:24.045-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Listview" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="Interface" /><category scheme="http://www.blogger.com/atom/ns#" term="Classes" /><title>Criando listas de imagens</title><content type="html">&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Muitos dos componentes do Windows como o &lt;em&gt;listview, toolbar, treeview&lt;/em&gt;, entre outros, utilizam listas de imagens para mostrar ícones ou bitmaps. Aprenda a criar listas de imagens com ícones em tempo de execução e faça uso desse recurso em suas aplicações.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;São instâncias da classe &lt;span style="font-family:courier new;color:#990000;"&gt;MaskedImageList&lt;/span&gt; que são passadas como parâmetro para os principais componentes do Windows que utilizam listas de imagens. Essas listas de imagens utilizam instâncias da classe &lt;span style="font-family:courier new;color:#990000;"&gt;Icondata&lt;/span&gt;, que carregam um arquivo de ícone em memória.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;O exemplo a seguir mostra como criar uma lista de imagens e como usá-la em um &lt;em&gt;listview&lt;/em&gt;. O exemplo considera que um &lt;em&gt;listview&lt;/em&gt; foi criado no programa, representado por uma variável na GS denominada &lt;span style="font-family:courier new;color:#990000;"&gt;umListview&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;(obj-ref)&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Defina na &lt;span style="font-family:courier new;color:#009900;"&gt;class-control&lt;/span&gt;, as classes que serão utilizadas:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;class-control&lt;/span&gt;.    &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#990000;"&gt;Icondata&lt;/span&gt; &lt;span style="color:#009900;"&gt;is class&lt;/span&gt; "icondata"    &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#990000;"&gt;MaskedImageList&lt;/span&gt; &lt;span style="color:#009900;"&gt;is class&lt;/span&gt; "mskimglt".&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Na &lt;span style="font-family:courier new;color:#009900;"&gt;working-storage section&lt;/span&gt;, crie as seguintes variáveis:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;working-storage section&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;umaLista&lt;/span&gt; &lt;span style="color:#009900;"&gt;object reference value null&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;77 &lt;span style="color:#990000;"&gt;umIcone&lt;/span&gt; &lt;span style="color:#009900;"&gt;object reference value null&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;77 &lt;span style="color:#990000;"&gt;wsNumeroDoIcone&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;77 &lt;span style="color:#990000;"&gt;wsAltura&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;77 &lt;span style="color:#990000;"&gt;wsLargura&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;wsNumeroDoItem&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;77 &lt;span style="color:#990000;"&gt;umItem&lt;/span&gt; &lt;span style="color:#009900;"&gt;object reference value null&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Depois de criado o &lt;em&gt;listview&lt;/em&gt;, criaremos a lista de imagens que vai armazenar os ícones que serão utilizados. A classe &lt;span style="font-family:courier new;color:#990000;"&gt;MaskedImageList&lt;/span&gt; cria a lista recebendo como parâmetros a largura e a altura dos ícones, em pixéis:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;CriarListaDeImagens&lt;/span&gt; &lt;span style="color:#009900;"&gt;section&lt;/span&gt;.    &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 16 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsLargura wsAltura&lt;/span&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;MaskedImageList&lt;/span&gt; "new" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsLargura wsAltura&lt;/span&gt;           &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaLista&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Para adicionar ícones à lista, precisamos criar instâncias da classe &lt;span style="font-family:courier new;color:#990000;"&gt;Icondata&lt;/span&gt;. Para isso, vamos utilizar o método "&lt;em&gt;fromFileZ&lt;/em&gt;". Essas instâncias serão adicionadas à lista de imagens pelo método "&lt;em&gt;AddIcon&lt;/em&gt;". Esse método adiciona um ícone à lista e retorna como parâmetro um índice que vai identificar o ícone na lista de imagens. Depois de criada a lista de imagens, ela é passada ao &lt;em&gt;listview&lt;/em&gt; como parâmetro do método "&lt;em&gt;setSmallImages&lt;/em&gt;". Como a lista de imagens foi criada com ícones de 16x16 pixéis, então devemos utilizar arquivos de ícones que possuam essas mesmas características:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;AdicionarIcones section&lt;/span&gt;.    &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;IconData&lt;/span&gt; "fromFileZ" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; z"printer.ico"           &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;umIcone&lt;/span&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaLista&lt;/span&gt; "addIcon" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;umIcone&lt;/span&gt; &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsNumeroDoIcone&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;IconData&lt;/span&gt; "fromFileZ" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; z"disk.ico"           &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;umIcone&lt;/span&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaLista&lt;/span&gt; "addIcon" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;umIcone&lt;/span&gt; &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsNumeroDoIcone&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umListview&lt;/span&gt; "setSmallImages" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaLista&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Para indicar ao &lt;em&gt;listview&lt;/em&gt; qual ícone utilizar em um determinado ítem, primeiro devemos pegar o ítem como uma instância da classe &lt;span style="font-family:courier new;color:#990000;"&gt;ListviewItem&lt;/span&gt; e utilizar o método "&lt;em&gt;SetImageIndex&lt;/em&gt;", passando o índice que representa o ícone escolhido:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;SetarIcones section&lt;/span&gt;.    &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 1 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsNumeroDoItem&lt;/span&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umListview&lt;/span&gt; "itemAtIndex" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsNumeroDoItem&lt;/span&gt;           &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;umItem&lt;/span&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 1 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsNumeroDoIcone&lt;/span&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#ffffff;"&gt;....&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umItem&lt;/span&gt; "setImageIndex" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsNumeroDoIcone&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Outros ícones podem ser adicionados a lista e outros ítens do &lt;em&gt;listview&lt;/em&gt; podem ser mudados, utilizando os métodos demonstrados acima. Você pôde notar que os comandos mostrados necessitaram uma quantidade razável de linhas de código. A &lt;strong&gt;Programação Orientada ao Objeto&lt;/strong&gt; possibilita que você crie a sua própria classe &lt;span style="font-family:courier new;color:#990000;"&gt;Listview&lt;/span&gt; e com isso, possa otimizar todos os procedimentos demonstrados nesse artigo.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Estou procurando representantes em outras cidades para que eu possa apresentar o &lt;strong&gt;Workshop - Programação Orientada ao Objeto com o Microfocus NetExpress&lt;/strong&gt;. Saiba mais sobre o &lt;strong&gt;Workshop&lt;/strong&gt; &lt;a href="http://netalexpress.blogspot.com/2007/09/workshop-programao-orientada-ao-objeto.html"&gt;clicando aqui&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-1627907105123635425?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/oFa-jEop8BE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/1627907105123635425/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=1627907105123635425" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/1627907105123635425?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/1627907105123635425?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/oFa-jEop8BE/criando-listas-de-imagens.html" title="Criando listas de imagens" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2007/11/criando-listas-de-imagens.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UHQng9fSp7ImA9WxRaEEw.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-3410083126088826243</id><published>2007-10-30T10:37:00.000-03:00</published><updated>2008-12-11T14:07:13.665-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-11T14:07:13.665-03:00</app:edited><title>Workshop em Porto Alegre</title><content type="html">&lt;div align="center"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;ALTERAÇÃO DE DATAS !!!&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt; &lt;/div&gt;&lt;div align="center"&gt;&lt;span style="font-size:85%;"&gt;Devido a grande procura de pessoas interessadas tivemos que alterar as datas da apresentação do workshop em Porto Alegre, para adequarmos o local à quantidade de pessoas. A apresentação que estava marcada originalmente para os dias 10 e 11 de novembro de 2007 mudou para os dias 1 e 2 de dezembro de 2007.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size:85%;"&gt;Mais informações pelos emails abaixo:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;a href="mailto:alexandre.cia@iron.com.br"&gt;&lt;span style="font-size:85%;"&gt;alexandre.cia@iron.com.br&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a href="mailto:fcgatti@gatti.com.br"&gt;&lt;span style="font-size:85%;"&gt;fcgatti@gatti.com.br&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5127107905489175042" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_D1cn94ra6Bw/RyclebfHggI/AAAAAAAAAgY/ZOgBX2YCy2w/s400/DataAlterada.jpg" border="0" /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;em&gt;&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;em&gt;&lt;span style="font-size:85%;"&gt;Clique na imagem para ampliá-la&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_D1cn94ra6Bw/Rx9y7B2INFI/AAAAAAAAAgA/KSWwZLa9h28/s1600-h/workshop_01.jpg"&gt;&lt;/a&gt;&lt;span style="font-family:trebuchet ms;color:#ff6600;"&gt;&lt;strong&gt;Leia mais sobre o Workshop &lt;/strong&gt;&lt;/span&gt;&lt;a href="http://netalexpress.blogspot.com/2007/09/workshop-programao-orientada-ao-objeto.html"&gt;&lt;span style="font-family:trebuchet ms;color:#ff6600;"&gt;&lt;strong&gt;clicando aqui&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:trebuchet ms;color:#ff6600;"&gt;&lt;strong&gt;.&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-3410083126088826243?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/0Tq5EsdrF8o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/3410083126088826243/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=3410083126088826243" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/3410083126088826243?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/3410083126088826243?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/0Tq5EsdrF8o/workshop-em-porto-alegre.html" title="Workshop em Porto Alegre" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_D1cn94ra6Bw/RyclebfHggI/AAAAAAAAAgY/ZOgBX2YCy2w/s72-c/DataAlterada.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2007/10/workshop-em-porto-alegre.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UHQnY5fSp7ImA9WxRaEEw.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-5695807085690721329</id><published>2007-10-26T08:59:00.000-03:00</published><updated>2008-12-11T14:07:13.825-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-11T14:07:13.825-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Componentes" /><category scheme="http://www.blogger.com/atom/ns#" term="API´s" /><category scheme="http://www.blogger.com/atom/ns#" term="Objetos" /><category scheme="http://www.blogger.com/atom/ns#" term="OOP" /><category scheme="http://www.blogger.com/atom/ns#" term="Interface" /><category scheme="http://www.blogger.com/atom/ns#" term="Classes" /><title>Uma StatusBar em tempo de execução</title><content type="html">&lt;a href="http://1.bp.blogspot.com/_D1cn94ra6Bw/RyHw2rfHgfI/AAAAAAAAAgQ/gblfDx3F0yI/s1600-h/Statusbar.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5125642673101177330" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_D1cn94ra6Bw/RyHw2rfHgfI/AAAAAAAAAgQ/gblfDx3F0yI/s400/Statusbar.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Você gosta daquelas barras de status com seções recheadas de ícones, textos de ajuda ou barras de progresso ? Aprenda a criar uma barra de status em tempo de execução e mude o visual de suas aplicações.&lt;br /&gt;&lt;br /&gt;Os exemplos que são colocados aqui no blog sempre levam em consideração a utilização dos recursos de vocabulários nas aplicações. Leia mais sobre o assunto no artigo "Aumentando o seu vocabulário".&lt;br /&gt;&lt;br /&gt;Defina o tipo de chamada das API´s:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;special-names&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#009900;"&gt;call-convention&lt;/span&gt; 66 &lt;span style="color:#009900;"&gt;is&lt;/span&gt; &lt;span style="color:#990000;"&gt;wapi&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Definas as classes que serão utilizadas:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;class-control&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#990000;"&gt;ProgressBar&lt;/span&gt; &lt;span style="color:#009900;"&gt;is class&lt;/span&gt; "progress"&lt;br /&gt;&lt;span style="color:#990000;"&gt;Window&lt;/span&gt; &lt;span style="color:#009900;"&gt;is class&lt;/span&gt; "window"&lt;br /&gt;&lt;span style="color:#990000;"&gt;CharacterArray&lt;/span&gt; &lt;span style="color:#009900;"&gt;is class&lt;/span&gt; "chararry"&lt;br /&gt;&lt;span style="color:#990000;"&gt;Icondata&lt;/span&gt; &lt;span style="color:#009900;"&gt;is class&lt;/span&gt; "icondata"&lt;br /&gt;.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Defina as seguintes variáveis na &lt;span style="font-family:courier new;color:#009900;"&gt;working-storage section&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;77 &lt;span style="color:#990000;"&gt;umaWindow&lt;/span&gt; &lt;span style="color:#009900;"&gt;object reference value null&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;umaStatusbar&lt;/span&gt; &lt;span style="color:#009900;"&gt;object reference value null&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;umaBarra&lt;/span&gt; &lt;span style="color:#009900;"&gt;object reference value null&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;umIconeImpressora&lt;/span&gt; &lt;span style="color:#009900;"&gt;object reference value null&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;umIconeOk&lt;/span&gt; &lt;span style="color:#009900;"&gt;object reference value null&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;umTexto&lt;/span&gt; &lt;span style="color:#009900;"&gt;object reference value null&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;handle8&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(08) &lt;span style="color:#009900;"&gt;comp-x value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;wHandle&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;sHandle&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;iHandle&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;wsSecao&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;wsLargura&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;wsTotal&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;x&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; s9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;y&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; s9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;w&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;h&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;hBarra&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;77 &lt;span style="color:#990000;"&gt;hWindow&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;78 &lt;span style="color:#ff0000;"&gt;SB-SETICON&lt;/span&gt; &lt;span style="color:#009900;"&gt;value&lt;/span&gt; 1039&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Na &lt;span style="font-family:courier new;color:#009900;"&gt;procedure division&lt;/span&gt;, a &lt;em&gt;section&lt;/em&gt; abaixo captura a &lt;em&gt;window&lt;/em&gt; principal da sua GS, criando assim uma instância da classe &lt;span style="font-family:courier new;color:#990000;"&gt;Window&lt;/span&gt;. Em nosso exemplo, a &lt;em&gt;window&lt;/em&gt; principal definida dentro da GS chama-se &lt;span style="font-family:courier new;color:#009900;"&gt;win-principal&lt;/span&gt;. Em seguida, o método "&lt;em&gt;addStatusbar&lt;/em&gt;" adiciona uma barra de status à &lt;em&gt;window&lt;/em&gt;. A partir daí, tres seções serão criadas na barra de status. A primeira seção irá conter um ícone e um texto. Na segunda seção, criaremos uma barra de progresso que poderá ser usada pela aplicação. Na terceira e última seção da barra de status colocaremos outro ícone e mais um texto de exemplo. Veja os comandos a seguir:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;CriarStatusBar&lt;/span&gt; &lt;span style="color:#009900;"&gt;section&lt;/span&gt;.&lt;br /&gt;&lt;span style="color:#009900;"&gt;move-object-handle&lt;/span&gt; &lt;span style="color:#990000;"&gt;win-principal&lt;/span&gt; &lt;span style="color:#990000;"&gt;handle8&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;move &lt;/span&gt;&lt;span style="color:#990000;"&gt;handle8&lt;/span&gt; &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wHandle&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;Window&lt;/span&gt; "fromHandleWithClass" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;wHandle Window&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaWindow&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;*&gt;--------------------------------------------------------&lt;br /&gt;*&gt; o método "addStatusBar" adiciona uma barra de status&lt;br /&gt;*&gt; à window&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaWindow&lt;/span&gt; "addStatusbar" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaStatusbar&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaStatusbar&lt;/span&gt; "create"&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;*&gt;--------------------------------------------------------&lt;br /&gt;*&gt; os comandos a seguir pegam a altura da barra de status&lt;br /&gt;*&gt; e somam com a altura da window, em pixéis, para que a&lt;br /&gt;*&gt; a barra de status não esconda nenhum objeto que já exista&lt;br /&gt;*&gt; na window, perto de sua base&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaWindow&lt;/span&gt; "getHeight" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;hWindow&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaStatusbar&lt;/span&gt; "getHeight" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;hBarra&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;add&lt;/span&gt; &lt;span style="color:#990000;"&gt;hBarra&lt;/span&gt; &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;hWindow&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaWindow&lt;/span&gt; "setHeight" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;hWindow&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;*&gt;--------------------------------------------------------&lt;br /&gt;*&gt; o método "setNumberOfParts" cria 3 seções na barra de status&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 3 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsTotal&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaStatusBar&lt;/span&gt; "setNumberOfParts" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsTotal&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;*&gt;--------------------------------------------------------&lt;br /&gt;*&gt; o método "setSectionWidth" ajusta o tamanho de uma seção&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 1 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsSecao&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 400 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsLargura&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaStatusBar&lt;/span&gt; "setSectionWidth" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsSecao wsLargura&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 2 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsSecao&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 400 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsLargura&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaStatusBar&lt;/span&gt; "setSectionWidth" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsSecao wsLargura&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 3 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsSecao&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 800 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsLargura&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaStatusBar&lt;/span&gt; "setSectionWidth" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsSecao wsLargura&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;*&gt;--------------------------------------------------------&lt;br /&gt;*&gt; o método "SetSectionText" coloca um texto em uma seção.&lt;br /&gt;*&gt; Note que o método necessita de uma instância da classe&lt;br /&gt;*&gt; CharacterArray, passada como parâmetro.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;CharacterArray&lt;/span&gt; "withValue" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; z"Relatório"&lt;br /&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;umTexto&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 1 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsSecao&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaStatusbar&lt;/span&gt; "setSectionText" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsSecao umTexto&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umTexto&lt;/span&gt; "finalize" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;umTexto&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;*&gt;--------------------------------------------------------&lt;br /&gt;*&gt; A classe Icondata cria uma instância a partir da informação&lt;br /&gt;*&gt; de um arquivo de ícone. Essas instâncias são utilizadas como&lt;br /&gt;*&gt; parâmetros em métodos de diversas classes&lt;br /&gt;*&gt; O método "getID" retorna o handle que representa o ícone&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;IconData&lt;/span&gt; "fromFileZ" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; z"printer.ico"&lt;br /&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;umIconeImpressora&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umIconeImpressora&lt;/span&gt; "getID" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;iHandle&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;*&gt;--------------------------------------------------------&lt;br /&gt;*&gt; Agora usamos a mensagem SB-SETICON para colocar um ícone&lt;br /&gt;*&gt; em uma seção da barra de status.&lt;br /&gt;*&gt; Note que a API "SendMessageA" utiliza o número da seção&lt;br /&gt;*&gt; a partir do zero. Ou seja, a primeira seção é a seção&lt;br /&gt;*&gt; zero, a segunda seção é a seção número um, e assim por diante.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 0 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsSecao&lt;/span&gt; &lt;span style="color:#999999;"&gt;*&gt; na verdade, representa a primeira seção&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaStatusbar&lt;/span&gt; "getID" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;sHandle&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; &lt;span style="color:#990000;"&gt;WAPI&lt;/span&gt; "SendMessageA" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;sHandle&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;SB-SETICON&lt;/span&gt; size 4&lt;br /&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsSecao&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;iHandle&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;*&gt;--------------------------------------------------------&lt;br /&gt;*&gt; A classe ProgressBar cria a barra de progressos, usando&lt;br /&gt;*&gt; como "parent window" a nossa barra de status.&lt;br /&gt;*&gt; Para posicionar a barra de progressos na seção correta,&lt;br /&gt;*&gt; precisamos pegar dados da seção, como linha, coluna,&lt;br /&gt;*&gt; largura e altura. Alguns ajustes foram feitos com essas&lt;br /&gt;*&gt; informações para centralizar a barra de progressos na seção&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;Progressbar&lt;/span&gt; "new" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaStatusbar&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaBarra&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 2 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsSecao&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaStatusbar&lt;/span&gt; "getSectionRect" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsSecao x y w h&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaBarra&lt;/span&gt; "create"&lt;br /&gt;&lt;span style="color:#009900;"&gt;add&lt;/span&gt; 4 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;y&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;add&lt;/span&gt; 2 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;x&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;subtract&lt;/span&gt; 8 &lt;span style="color:#009900;"&gt;from&lt;/span&gt; &lt;span style="color:#990000;"&gt;w h&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaBarra&lt;/span&gt; "setNativeXY" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;x y&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaBarra&lt;/span&gt; "setNativeWidthHeight" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;w h&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaBarra&lt;/span&gt; "show"&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;*&gt;--------------------------------------------------------&lt;br /&gt;*&gt; Abaixo, colocamos um outro ícone e um novo texto na&lt;br /&gt;*&gt; terceira seção&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;IconData&lt;/span&gt; "fromFileZ" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; z"gravar16.ico"&lt;br /&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;umIconeOk&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umIconeOk&lt;/span&gt; "getID" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;iHandle&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 2 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsSecao&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaStatus&lt;/span&gt; "getID" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;sHandle&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; &lt;span style="color:#990000;"&gt;WAPI&lt;/span&gt; "SendMessageA" &lt;span style="color:#009900;"&gt;using by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;sHandle&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;SB-SETICON&lt;/span&gt; &lt;span style="color:#009900;"&gt;size&lt;/span&gt; 4&lt;br /&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsSecao&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;iHandle&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;CharacterArray&lt;/span&gt; "withValue" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; z"Alexandre Cortez"&lt;br /&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;umTexto&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 3 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsSecao&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaStatusbar&lt;/span&gt; "setSectionText" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsSecao umTexto&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umTexto&lt;/span&gt; "finalize" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;umTexto&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;A partir daí, basta utilizar as rotinas acima para manipular cada uma das seções com outros ícones, outros textos e até mesmo utilizar a barra de progresso que foi criada.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-5695807085690721329?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/gD1yE3Gfqj0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/5695807085690721329/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=5695807085690721329" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/5695807085690721329?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/5695807085690721329?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/gD1yE3Gfqj0/uma-statusbar-em-tempo-de-execuo.html" title="Uma StatusBar em tempo de execução" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_D1cn94ra6Bw/RyHw2rfHgfI/AAAAAAAAAgQ/gblfDx3F0yI/s72-c/Statusbar.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2007/10/uma-statusbar-em-tempo-de-execuo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkAMSH0-eip7ImA9WB9RF0Q.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-3248883484239441106</id><published>2007-10-19T09:45:00.000-03:00</published><updated>2007-10-19T09:59:49.352-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-10-19T09:59:49.352-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Listview" /><title>Listview: mudando a cor de fundo</title><content type="html">&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Muitas pessoas me perguntam como alterar a cor de fundo de um Listview. O método "&lt;span style="font-family:courier new;"&gt;setBackgroundRGB&lt;/span&gt;" altera a cor de fundo da maioria dos componentes visuais do Windows. Veja como utilizá-lo:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Defina as seguintes variáveis na &lt;span style="font-family:courier new;color:#009900;"&gt;working-storage section&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;77 &lt;span style="color:#990000;"&gt;wsRed&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 99 &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;77 &lt;span style="color:#990000;"&gt;wsGreen&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 99 &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;77 &lt;span style="color:#990000;"&gt;wsBlue&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 99 &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Depois de criado o &lt;em&gt;Listview&lt;/em&gt;, utilize o método "&lt;span style="font-family:courier new;"&gt;setBackgroundRGB&lt;/span&gt;":&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 255 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsRed&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 255 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsGreen&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 215 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsBlue&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umListview&lt;/span&gt; "setBackgroundRGB" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsRed wsGreen wsBlue&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Os valores para &lt;span style="font-family:courier new;color:#990000;"&gt;wsRed&lt;/span&gt;, &lt;span style="font-family:courier new;color:#990000;"&gt;wsGreen&lt;/span&gt; e &lt;span style="font-family:courier new;color:#990000;"&gt;wsBlue&lt;/span&gt; podem ser encontrados em qualquer editor de desenhos, como o &lt;em&gt;Paintbrush&lt;/em&gt;, por exemplo.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-3248883484239441106?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/yLfsqXapPmM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/3248883484239441106/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=3248883484239441106" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/3248883484239441106?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/3248883484239441106?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/yLfsqXapPmM/listview-mudando-cor-de-fundo.html" title="Listview: mudando a cor de fundo" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2007/10/listview-mudando-cor-de-fundo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcDQ3w7fCp7ImA9WB9RFkk.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-4067044686559027064</id><published>2007-10-17T15:22:00.000-03:00</published><updated>2007-10-17T15:34:32.204-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-10-17T15:34:32.204-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="Classes" /><title>Clipboard: copie e cole !</title><content type="html">&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Uma classe simples de utilizar no NetExpress é a classe &lt;span style="font-family:courier new;color:#990000;"&gt;Clipboard&lt;/span&gt;. Com ela, você pode ler ou gravar informações na área de transferência do Windows. A classe só permite a gravação e a leitura de sequências de caracteres.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Defina as classes que serão utilizadas:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;class-control&lt;/span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#990000;"&gt;Clipboard&lt;/span&gt; &lt;span style="color:#009900;"&gt;is class&lt;/span&gt; "clipbrd" &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#990000;"&gt;CharacterArray&lt;/span&gt; &lt;span style="color:#009900;"&gt;is class&lt;/span&gt; "chararry"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Defina as variáveis da &lt;span style="font-family:courier new;color:#009900;"&gt;working-storage section&lt;/span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;77 &lt;span style="color:#990000;"&gt;umaString&lt;/span&gt; &lt;span style="color:#009900;"&gt;object reference value null&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;77 &lt;span style="color:#990000;"&gt;wsTexto&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; x(255) &lt;span style="color:#009900;"&gt;value spaces&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;A classe &lt;span style="font-family:courier new;color:#990000;"&gt;Clipboard&lt;/span&gt; trabalha com objetos (instâncias) da classe &lt;span style="font-family:courier new;color:#990000;"&gt;CharacterArray&lt;/span&gt;. Portanto, para gravar dados na área de transferência precisamos criar uma instância dessa classe:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; z"Este é um texto de exemplo." &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsTexto&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;CharacterArray&lt;/span&gt; "withValue" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsTexto&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaString&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;Clipboard&lt;/span&gt; "write" &lt;span style="color:#009900;"&gt;using&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaString&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaString&lt;/span&gt; "finalize" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaString&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Nesse momento, se o desenvolvedor estiver utilizando um editor de textos ou qualquer outro programa que permita colagem de dados da área de transferência, vai notar que a sequência de caracteres "&lt;em&gt;Este é um exemplo de texto&lt;/em&gt;" será mostrada.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Para ler dados da área de transferência, utilize os seguintes comandos:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;Clipboard&lt;/span&gt; "read" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaString&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaString&lt;/span&gt; "getValue" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsTexto&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaString&lt;/span&gt; "finalize" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaString&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Note que o método "&lt;span style="font-family:courier new;"&gt;getValue&lt;/span&gt;" espera que a variável de retorno tenha tamanho suficiente para armazenar a informação. Caso contrário, ocorrerá problemas de memória.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Em um próximo "post", vou mostrar a utilização de API´s para trabalhar com outros formatos de dados na área de transferência.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-4067044686559027064?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/9nwU5Rg5c-g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/4067044686559027064/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=4067044686559027064" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/4067044686559027064?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/4067044686559027064?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/9nwU5Rg5c-g/clipboard-copie-e-cole.html" title="Clipboard: copie e cole !" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2007/10/clipboard-copie-e-cole.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUFR3o6eyp7ImA9WB9SFU0.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-3242286568321491584</id><published>2007-10-04T09:04:00.000-03:00</published><updated>2007-10-04T09:16:56.413-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-10-04T09:16:56.413-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Componentes" /><category scheme="http://www.blogger.com/atom/ns#" term="API´s" /><category scheme="http://www.blogger.com/atom/ns#" term="Objetos" /><title>ProgressBar: Cadê o final ?</title><content type="html">&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Aprenda a animar uma barra de progressos, nos casos em que não se sabe a quantidade de informação a ser processada.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Para criar a barra de progressos, utilize o exemplo mostrado no artigo "&lt;a href="http://netalexpress.blogspot.com/2007/09/mostre-o-seu-progresso.html"&gt;Mostre o seu progresso&lt;/a&gt;".&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Defina as novas variáveis na &lt;span style="font-family:courier new;color:#009900;"&gt;working-storage section&lt;/span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;77 &lt;span style="color:#990000;"&gt;bHandle&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;77 &lt;span style="color:#990000;"&gt;wsMilisegundos&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;78 &lt;span style="color:#ff0000;"&gt;PBM-SETMARQUEE&lt;/span&gt;    &lt;span style="color:#009900;"&gt;value&lt;/span&gt; 1034.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;78 &lt;span style="color:#ff0000;"&gt;PBS-MARQUEE&lt;/span&gt;       &lt;span style="color:#009900;"&gt;value&lt;/span&gt; h"08".&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Na &lt;span style="font-family:courier new;color:#009900;"&gt;procedure division&lt;/span&gt;, depois de criada a barra de progressos,basta adicionar os seguintes comandos antes do processamentode qualquer informação:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaProgressBar&lt;/span&gt; "AddBasicApiFlags"           &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;using by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;PBS-MARQUEE&lt;/span&gt; size 4&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaProgressBar&lt;/span&gt; "getSystemHandle" &lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;returning &lt;/span&gt;&lt;span style="color:#990000;"&gt;bHandle&lt;/span&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 200 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsMilisegundos&lt;/span&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; &lt;span style="color:#990000;"&gt;WAPI&lt;/span&gt; "SendMessageA" &lt;span style="color:#009900;"&gt;using by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;bHandle&lt;/span&gt;         &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;PBM-SETMARQUEE&lt;/span&gt;         &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; 1         &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsMilisegundos&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Para pausar a animação da barra de progressos:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umaProgressBar&lt;/span&gt; "getSystemHandle" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;bHandle&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;   &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;move&lt;/span&gt; 0 &lt;span style="color:#009900;"&gt;to&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsMilisegundos&lt;/span&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; &lt;span style="color:#990000;"&gt;WAPI&lt;/span&gt; "SendMessageA" &lt;span style="color:#009900;"&gt;using by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;bHandle&lt;/span&gt;         &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;PBM-SETMARQUEE&lt;/span&gt;         &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; 0         &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;wsMilisegundos&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Esse procedimento não requer que um valor seja passado para o componente a cada informação processada. Assim que a API é chamada, o componente passa a mostrar a animação automaticamente. A variável &lt;span style="font-family:courier new;color:#990000;"&gt;wsMilisegundos&lt;/span&gt; especifica o tempo da animação. Quanto menor o valor passado, mais rápida será a animação.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-3242286568321491584?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/niWi6RrO2_Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/3242286568321491584/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=3242286568321491584" title="4 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/3242286568321491584?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/3242286568321491584?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/niWi6RrO2_Y/progressbar-cad-o-final.html" title="ProgressBar: Cadê o final ?" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>4</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2007/10/progressbar-cad-o-final.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QCQHczeyp7ImA9WB9SFEw.&quot;"><id>tag:blogger.com,1999:blog-5617370164251757176.post-9167203858031774953</id><published>2007-10-03T09:03:00.000-03:00</published><updated>2007-10-03T09:42:41.983-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-10-03T09:42:41.983-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Listview" /><category scheme="http://www.blogger.com/atom/ns#" term="API´s" /><category scheme="http://www.blogger.com/atom/ns#" term="Interface" /><title>Perfumes para o Listview</title><content type="html">&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Acrescente algumas funcionalidades ao seu Listview, enviando mensagens para alterar o comportamento do mouse, rastrear a seleção de ítens, mudar as barras de rolagem e mostrar o conteúdo automático das colunas.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Defina o tipo de chamada das API´s:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;special-names&lt;/span&gt;. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;call-convention&lt;/span&gt; 66 &lt;span style="color:#009900;"&gt;is&lt;/span&gt; &lt;span style="color:#990000;"&gt;wapi&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Na &lt;span style="font-family:courier new;color:#009900;"&gt;working-storage section&lt;/span&gt;, defina as variáveis utilizadas:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;77 &lt;span style="color:#990000;"&gt;ListviewHandle&lt;/span&gt; &lt;span style="color:#009900;"&gt;pic&lt;/span&gt; 9(09) &lt;span style="color:#009900;"&gt;comp-5 value zeros&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;78 &lt;span style="color:#ff0000;"&gt;LVM-SETEXTENDEDLISTVIEWSTYLE&lt;/span&gt; &lt;span style="color:#009900;"&gt;value&lt;/span&gt; 4150.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;78 &lt;span style="color:#ff0000;"&gt;LVS-EX-TRACKSELECT&lt;/span&gt; &lt;span style="color:#009900;"&gt;value&lt;/span&gt; h"00000008".&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;78 &lt;span style="color:#ff0000;"&gt;LVS-EX-ONECLICKACTIVATE&lt;/span&gt; &lt;span style="color:#009900;"&gt;value&lt;/span&gt; h"00000040".&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;78 &lt;span style="color:#ff0000;"&gt;LVS-EX-TWOCLICKACTIVATE&lt;/span&gt; &lt;span style="color:#009900;"&gt;value&lt;/span&gt; h"00000080".&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;78 &lt;span style="color:#ff0000;"&gt;LVS-EX-FLATSB&lt;/span&gt; &lt;span style="color:#009900;"&gt;value&lt;/span&gt; h"00000100".&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;78 &lt;span style="color:#ff0000;"&gt;LVS-EX-INFOTIP&lt;/span&gt; &lt;span style="color:#009900;"&gt;value&lt;/span&gt; h"00000400".&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Vamos considerar que o Listview será representado pela variável &lt;span style="font-family:courier new;color:#990000;"&gt;umListview&lt;/span&gt;, definida como masterfield dentro da GS.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Para rastrear o ponteiro do mouse e selecionar o ítem automaticamente:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umListview&lt;/span&gt; "GetSystemHandle" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;ListviewHandle&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; &lt;span style="color:#990000;"&gt;WAPI&lt;/span&gt; "SendMessageA" &lt;span style="color:#009900;"&gt;using by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;ListviewHandle&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;LVM-SETEXTENDEDLISTVIEWSTYLE&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;LVS-EX-TRACKSELECT&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;LVS-EX-TRACKSELECT&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Para mudar o ponteiro do mouse e deixar os ítens semelhantes a links:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umListview&lt;/span&gt; "GetSystemHandle" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;ListviewHandle&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; &lt;span style="color:#990000;"&gt;WAPI&lt;/span&gt; "SendMessageA" &lt;span style="color:#009900;"&gt;using by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;ListviewHandle&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;LVM-SETEXTENDEDLISTVIEWSTYLE&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;LVS-EX-ONECLICKACTIVATE&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;LVS-EX-ONECLICKACTIVATE&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Para selecionar um ítem em dois cliques:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umListview&lt;/span&gt; "GetSystemHandle" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;ListviewHandle&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; &lt;span style="color:#990000;"&gt;WAPI&lt;/span&gt; "SendMessageA" &lt;span style="color:#009900;"&gt;using by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;ListviewHandle&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;LVM-SETEXTENDEDLISTVIEWSTYLE&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;LVS-EX-TWOCLICKACTIVATE&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;LVS-EX-TWOCLICKACTIVATE&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Para mostrar um "&lt;em&gt;tooltip&lt;/em&gt;" sempre que a coluna for menor do que o seu conteúdo:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umListview&lt;/span&gt; "GetSystemHandle" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;ListviewHandle&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; &lt;span style="color:#990000;"&gt;WAPI&lt;/span&gt; "SendMessageA" &lt;span style="color:#009900;"&gt;using by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;ListviewHandle&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;LVM-SETEXTENDEDLISTVIEWSTYLE&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;LVS-EX-INFOTIP&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;LVS-EX-INFOTIP&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Para mostrar barras de rolagem no estilo "&lt;em&gt;flat&lt;/em&gt;":&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umListview&lt;/span&gt; "GetSystemHandle" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;ListviewHandle&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; &lt;span style="color:#990000;"&gt;WAPI&lt;/span&gt; "SendMessageA" &lt;span style="color:#009900;"&gt;using by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;ListviewHandle&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;LVM-SETEXTENDEDLISTVIEWSTYLE&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;LVS-EX-FLATSB&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;LVS-EX-FLATSB&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Todas os estilos acima podem ser "&lt;em&gt;desligados&lt;/em&gt;" passando o valor "&lt;em&gt;zero&lt;/em&gt;" no último parâmetro da API. Veja, por exemplo, como "&lt;em&gt;desligar&lt;/em&gt;" as barras de rolagem no estilo "&lt;em&gt;flat&lt;/em&gt;", voltando ao normal:&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;invoke&lt;/span&gt; &lt;span style="color:#990000;"&gt;umListview&lt;/span&gt; "GetSystemHandle" &lt;span style="color:#009900;"&gt;returning&lt;/span&gt; &lt;span style="color:#990000;"&gt;ListviewHandle&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;call&lt;/span&gt; &lt;span style="color:#990000;"&gt;WAPI&lt;/span&gt; "SendMessageA" &lt;span style="color:#009900;"&gt;using by value&lt;/span&gt; &lt;span style="color:#990000;"&gt;ListviewHandle&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;LVM-SETEXTENDEDLISTVIEWSTYLE&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;LVS-EX-FLATSB&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;by value&lt;/span&gt; 0&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Essa regra se aplica a todas os outros estilos descritos acima.&lt;br /&gt;&lt;br /&gt;Você está no Orkut ? &lt;a href="http://www.orkut.com/Community.aspx?cmm=38793472"&gt;Clique aqui e participe da comunidade que criei no Orkut para o NetAlexpress !&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5617370164251757176-9167203858031774953?l=netalexpress.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yFmH/~4/6YAZCu2g6ws" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netalexpress.blogspot.com/feeds/9167203858031774953/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5617370164251757176&amp;postID=9167203858031774953" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/9167203858031774953?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5617370164251757176/posts/default/9167203858031774953?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yFmH/~3/6YAZCu2g6ws/perfumes-para-o-listview.html" title="Perfumes para o Listview" /><author><name>Alexandre Cortez.</name><uri>http://www.blogger.com/profile/08086264302482503483</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netalexpress.blogspot.com/2007/10/perfumes-para-o-listview.html</feedburner:origLink></entry></feed>

