Archive for 'Dicas'

Utilizando A API do Google Maps no ASP.NET

Este artigo destina-se a mostrar como utilizar a API do Google Maps integrada a um site ASP.NET, para que possamos exibir a localização de endereços diretamente na nossa página.

Read more

Auto complete flex

Olá! Quem já não precisou de um auto complete em uma aplicação. Foi pensando nisto que a Adobe desenvolveu um componente auto complete muito bom, neste exemplo vou mostrar como usá-lo. Segue abaixo o exemplo:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
  xmlns:adobe="com.adobe.flex.extras.controls.*">
<mx:XMLList id="xml">
    <usuario>
        <nome>João</nome>
    </usuario>
     <usuario>
        <nome>José</nome>
    </usuario>
    <usuario>
        <nome>Antonio</nome>
    </usuario>
    <usuario>
        <nome>Maria</nome>
    </usuario>
    <usuario>
        <nome>Aparecida</nome>
    </usuario>
</mx:XMLList>
<adobe:AutoComplete labelField="nome" dataProvider="{xml}"
   x="357" y="231" width="453"/>
<mx:DataGrid id="dg" width="453"  height="203" dataProvider="{xml}" x="357" y="261">
  <mx:columns>
    <mx:DataGridColumn dataField="nome" headerText="Nome"/>
  </mx:columns>
</mx:DataGrid>
</mx:Application>

Logo no inicio criamos um lista com XMLList, dentro dele existem vários objetos usuario com o atributo nome, é com este xml que nosso auto complete irá funcionar.  Então vem nosso componente AutoComplete que é disponibilizado pela Adobe. No atributo labelField colocamos o nome do atributo onde será feito a pesquisa.

Em seguida colocamos nossos objetos em um grid para que os mesmos possam ser visualizados.

Fonte do componete:  link

Até a próxima. Abraços.

Mudar cor do DataGridColumn

Olá! Hoje venho falar um pouco sobre o componente DataGridColumn que representa uma coluna do DataGrid. O exemplo abaixo popula um DataGrid e muda a cor de uma coluna com referêrencia no seu status, se for ativo ficar verde, se for inativo fica vermelho.  Segue o exemplo:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:XMLList id="xml">
    <usuario>
        <nome>João</nome>
        <status>Ativo</status>
    </usuario>
     <usuario>
        <nome>José</nome>
        <status>Ativo</status>
    </usuario>
    <usuario>
        <nome>Antonio</nome>
        <status>Inativo</status>
    </usuario>
</mx:XMLList>
<mx:DataGrid id="dg" width="526" dataProvider="{xml}" x="321" y="169">
  <mx:columns>
    <mx:DataGridColumn dataField="nome" headerText="Nome"/>
    <mx:DataGridColumn paddingLeft="5" dataField="status" headerText="Status" sortable="false">
      <mx:itemRenderer>
        <mx:Component>
          <mx:VBox horizontalScrollPolicy="off">
            <mx:Script>
              <![CDATA[
              ///Retorna uma cor determinada dependendo do status
              public function formataCorStatus(status:String):uint{
                switch(status){
                  case "Ativo":
                    return 0x009900; //cor verde
                  case "Inativo":
                    return 0xFF0000; //cor vermelha
                  default:
                    return 0x000000; //cor preta
                }
              }
              ]]>
            </mx:Script>
            <mx:HBox>
              <mx:Label text="{data.status}" color="{formataCorStatus(data.status)}"/>
            </mx:HBox>
          </mx:VBox>
        </mx:Component>
      </mx:itemRenderer>
    </mx:DataGridColumn>
  </mx:columns>
</mx:DataGrid>
</mx:Application>

A função formataCorStatus que é responsável por pegar  os dados da campo status e verificar se o mesmo é ativo ou inativo, ela retorna um uint que é o valor númerico referente a um cor para ser colocado no atributo color do objeto Label. Repare que a função formataCorStatus está dentro do VBox que fica dentro do Componet, isto é feito para que o objeto Label consiga enxergar a função.

Foi necessário usar um objeto Label para que a cor não fosse atribuida a todas as linhas da coluna, para se colocar um objeto Label em um DataGrid também foi preciso de um itemRenderer. Lembrando que está é somente uma das maneiras de se conseguir este resultado.

Ate++.

Expressões regulares Flex

Olá, hoje vou dar uma dica sobre expressões regulares no flex. É comum acontecer a necessidade de se executar uma substituição em um texto, no caso do flex usamos o replace para fazer isto ex: 

meuTexto.replace ([, “”);

O código acima acha o primeiro conchete do texto e substitui por vazio, esta é uma forma de retirar o conchete de um texto. Mas digamos que temos mais de um conchete no nosso texto, então teriamos que repetir o replace várias vezes ? É ai que entra a expressão regular para achar todos os conchetes do texto.

Para criar uma expressão regular usamos a classe RegExp ela recebe um valor ex:

var expressao:RegExp = /\[/g; 

A primeira barra é o inicio da expressão, a barra invertida a seguir é para que a expressão reconheça o conchete como um texto, não como um carecter especial da expressão, logo depois temos o caracter que desejamos retirar no caso o [, e a /g diz a expressão para procurar por todo o texto.

Pronto agora vamos ao exemplo de como utilizar a expressão acima.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" 
  creationComplete="init();">
<mx:Script>
  <![CDATA[
  
    private function init():void{
      var texto:String = "[teste] [de] [retirada] [de] [conchetes]";
      //Atenção para utilizar o trace rode o projeto em modo debug, 
      //ao fim da execução olhe na janela console, lá estará a impressão do texto
      trace(retiraConchetes(texto));
    }
  
    private function retiraConchetes(str:String):String{
      //  retira o [  
      var expressao:RegExp = /\[/g;  
      str = str.replace(expressao, "");
      
      //  retira o ]  
      expressao = /\]/g;  
      str = str.replace(expressao, "");
      
      return str;
    }
  ]]>
</mx:Script>
</mx:Application>

No exemplo acima usamos a expressão criada no replace para que ela encontre todos os conchetes.

Abraços e até à próxima

Migrar dados de tabelas usando cursor no SQL Server

Olá! Hoje venho com um exemplo para aqueles que já precisaram migrar seus dados de uma tabela para outra. Uma das formas de se fazer isto e usando um cursor, a lógica é simples, ele irá rodar em um tabela e em cada loop do cursor serão inserido os dados em outra tabela. Vamos ao código:

  --declara variaveis para pegar valores dos campos  
  DECLARE @V_Campo1 bigint;
  DECLARE @V_Campo2 nvarchar(80);
  DECLARE @V_Campo3 nvarchar(256);


  --Declara o cursor, é já executa o select para preenche-lo
  DECLARE C_MeuCursor CURSOR FOR
  SELECT
    Campo1,
    Campo2,
    Campo3
  FROM
    MinhaTabelaOrigem;


  --Abre o cursor
  OPEN C_MeuCursor;

  --Pega os dados do select, note que os dados são pegos na mesma ordem do select.
  FETCH NEXT FROM C_MeuCursor INTO
    @V_Campo1,
    @V_Campo2,
    @V_Campo3;

  --Executa o loop enquanto houver registros
  WHILE (@@fetch_status = 0)
    BEGIN

    --em cada loop insere na tabela de destino as variaveis que foram carregadas pelo cursor.
    --Note que aqui deverá ser usado as variaveis que foram declaradas.
    INSERT INTO MinhaTabelaDestino(Codigo, Nome, Endereco)
    VALUES(@V_Campo1, @V_Campo2, @V_Campo3);

    --Caso o campo selecionado permita nulos trate o mesmo com a função ISNULL(@V_Campo1, 0) 
    --para que o processo não pare no meio

    --Depois de executar a operação desejada, passa para o próximo registro.
    FETCH NEXT FROM C_MeuCursor INTO
      @V_Campo1,
      @V_Campo2,
      @V_Campo3;
    END;

  --Fecha o cursor e retira ele da memória
  CLOSE C_MeuCursor;
  DEALLOCATE C_MeuCursor;

Logo no inicio eu declarado o cursor, o select poderá ser em mais de uma tabela so é preciso definir os campos que deseja selecionar, no nosso caso foi executado em uma tabela só. Em seguida temos o loop, dependendo de quantos registros foram encontrados temos quantas vezes o loop irá rodar.

Dentro do loop nos chamamos o insert que irá passar os dados para outra tabela. Usamos as variáveis que carregamos com o cursor. Do mais cada parte do código já está com os comentários. Por hoje e só.

Espero que tenha ajudado. Até++

Passando um método como parâmetro no flex

Olá a todos, novamente venho mostrar uma dica que poderá ser usada em ocasiões específicas. Quem está acostumado a programar sempre usa metódos ou funções com passagens de parâmetros, objetos, string, int, long e por ai vai. Mas além de parâmetros em alguns casos também seria interessante passar o método todo e não somente um objeto, e isto é possivel no flex com as3.  Abaixo segue o código de exemplo:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
 layout="absolute" creationComplete="init();">
  <mx:Script>
    <![CDATA[
      import mx.controls.Alert;

      private function init():void{
        //Passa um metodo como parametro
        recebeMetodo(meuMetodo);
      }

      private function meuMetodo():void{
        Alert.show("Executou meu metodo");
      }

      private function recebeMetodo(fnc:Function):void{
        //Nesta linha e como se estive sendo chamando meuMetodo();
        fnc();
      }
    ]]>
  </mx:Script>
</mx:Application>

No exemplo à cima logo no inicio chamamos o método “recebeMetodo” ele recebe como parâmetro uma Function, no nosso caso foi passo “meuMetodo” que simplemente joga uma mensagem na tela, mais poderia realizar qualquer operação tal com atualizar toda a tela.

Para efeito prático, imagine duas telas onde uma telas precisa chamar o método que esta na outra.

Por hoje e só, até à próxima.



				

Encontrando domínio do email AS3

Olá a todos!  Por estes dias estive trabalhando com servidores de email, e surgiu a necessidade de buscar o domínio do email, então desenvolvi uma função para realizar este trabalho. Achei interessante postar aqui como uma breve dica espero que seja útil.

private function buscaDominio(email:String):String{
  var array:Array = email.split("@");
  
  if(array[1] != null){
    return array[1]
  }
  else{
    return "";
  }
}

Abraços, e até a próxima.

Versões beta do Office 2010 e Silverlight 4 já estão disponíveis para download

A Microsoft anunciou hoje no segundo dia do PDC09, o lançamento das versões beta do Microsoft Office 2010, Microsoft Silverlight 4 e Microsoft SharePoint Server 2010, além de novas oportunidades e recursos para que desenvolvedores criem aplicações que aproveitem todo o potencial do Windows e da internet.

A Microsoft também disponibiliza a versão Beta do Office Web Apps para clientes corporativos e do Microsoft Office Mobile 2010, levando toda a familiaridade do Office para a Web e o celular. Estes aplicativos Web irão oferecer aos clientes a fidelidade Office Format (capacidade de abrir, editar e salvar documentos do Office) e uma interface de usuário consistente entre o desktop e o navegador. Já o Office 2010 Mobile chegará ao público por meio do Windows Mobile Marketplace, para usuários do Windows Phone. Destaque para a possibilidade de criar e organizar documentos com menos tempo e esforço, além de armazenar seus documentos online para posterior acesso e edição de arquivos como os de Word, a partir de qualquer navegador Web.

O download da versão beta do Office 2010 está disponível Clique aqui para baixar

Para baixar a versão beta do Silverlight 4 acesse aqui

Para saber mais detalhes dos anúncios de hoje, acompanhar as notícias, imagens e assistir o evento ao vivo, acesse aqui

Fonte: http://msdn.microsoft.com/pt-br/dd430909.aspx

Microsoft abre inscrições de seu programa de bolsas de estágio e doutorado

A Microsoft, por meio de sua divisão de pesquisa e desenvolvimento Microsoft Research, abriu no último dia 17 as candidaturas em seu Programa Latino-Americano de Bolsas de Estudos para Doutorado e de Estágios para o ano letivo 2009/2010. Entre outros objetivos, como o fomento a iniciativas de P&D, o programa tem a finalidade de atrair para dentro da empresa estudantes talentosos interessados em trabalhar junto com pesquisadores da Microsoft Research e identificar potenciais candidatos às vagas nos laboratórios da companhia.

Qualquer estudante das universidades credenciadas na América Latina pode submeter aplicações diretamente à Microsoft. No entanto, conforme publicado na página oficial do programa será dada preferência àqueles indicados pela própria instituição de ensino, bem como aos que estiverem no segundo ou terceiro ano do Doutorado.

Os candidatos podem ser das áreas de ciências da computação e engenharia elétrica ou da computação e precisam possuir proficiência em inglês. Além disso, devem ter histórico acadêmico excelente e elevado potencial de pesquisa em temas relacionados à Tecnologia da Informação (TI).

Aceitas até o dia 31 de outubro, as inscrições devem ser obrigatoriamente realizadas online - o resultado do processo seletivo será conhecido até 8 de fevereiro de 2010.

Mais informações, bem como orientações e a ficha de inscrição para o programa podem ser obtidas aqui.

 

Fonte: http://blogs.msdn.com/itnews/archive/2009/08/31/microsoft-abre-inscri-es-de-seu-programa-de-bolsas-de-est-gio-e-doutorado.aspx

Envio de e-mail em .NET

O envio de e-mails é uma tarefa comum do dia-a-dia. Nossa comunicação com colegas de trabalho, com clientes, parentes e amigos. É uma ferramenta assíncrona, que permite que vejamos e guardemos textos, imagens e outros arquivos aos quais precisaremos no futuro, ou algo divertido ou belo que gostamos e tenhamos vontade de manter.

Um dos usos muito comuns que temos para o e-mail é para feedbacks e comunicação com clientes. Empresas costumam destinar uma sessão dos seus sites para esse tipo de comunicação, onde preenchemos um pequeno cadastro, geralmente contendo apenas o nome de quem pretende entrar em contato, e-mail para retorno, uma lista de assuntos para escolhermos e a mensagem. Isto é mais útil e seguro do que simplesmente divulgar um e-mail para contato, levando-se em conta o fato dos milhões de bots que escaneiam a internet em busca de endereços de e-mail, para envio de spam. Baseado neste modelo que é quase padrão, criaremos uma página “fale conosco”, fazendo envio automático de e-mails em ASP.NET.

De início, crie um novo projeto web no Visual Studio 2008. Dê a ele o nome de EnviodeEmails, que  será também o nome do nosso projeto ASP.NET. Dentro desta solução, criaremos dois projetos, um será o projeto web, e o outro será onde teremos nossas regras, chamado de RegrasDeNegocio, com a classe Negocio. Por questões de desempenho e segurança (visto que teremos de mexer com nome de usuário e senha na conexão com o provedor de email), o código de manipulação de dados será efetuado em outra camada que não a de apresentação.

Projetos no Solution Explorer
Projetos no Solution Explorer

O .NET Framework  possui classes nativas específicas para envio de e-mail. Estas classes podem ser encontradas no namespace System.Net.Mail. Usaremos também o namespace System.Net para criar um objeto de credenciais de rede, necessário para autenticação no servidor de e-mail. Após esta breve explicação, mãos à obra.

Criei um formulário simples, com três caixas de texto (nome do remetente, email do remetente e mensagem, sendo esta última multiline). Uma dropdownlist com alguns itens que serão o assunto do e-mail, uma checkbox para caso o remetente queira receber uma cópia do e-mail, um label que exibirá uma mensagem após o envio do e-mail e o botão de envio. Coloquei também um script manager e um update panel, para dar um efeito visual instantâneo. Observe abaixo como ficou a tela:

Form ASP.NET com os controles já posicionados.
Form ASP.NET com os controles já posicionados.

Vejamos como fica o code-behind da nossa página, o arquivo faleconosco.aspx.cs:

Código da página ASP.NET

Código da página ASP.NET(clique para ampliar)

Observe que a nossa classe negócio possui um método abstrato, cujos parâmetros são: email do remetente, nome do remetente, assunto, mensagem e se deseja receber uma cópia ou não. A chamada a esse método é executada dentro de um bloco try-catch no botão de envio na tela, que captura qualquer erro que possa ocorrer, e exibe no label para o usuário uma mensagem caso haja algum problema no envio do e-mail, ou uma mensagem de confirmação caso haja sucesso no envio.

Visual da página após envio de email com sucesso.

Visual da página após envio de email com sucesso.

Vamos agora dar uma olhada no código da classe Negocio, onde está de fato o código para o envio de email:

Código da classe negócio, contento o método envio de e-mail.

Código da classe negócio, contento o método envio de e-mail(Clique para ampliar).

No código acima, utilizei o endereço de SMTP e a porta de conexão do Gmail. Este endereço e porta podem variar de acordo com o seu provedor de email.

Espero que tenham gostado. Dúvidas e sugestões, o artigo está aberto a comentários.

Abraços e keep coding!