sábado, 6 de agosto de 2011

Controle de instância de Form Child

Saudações, pessoal! 

Grande parte dos desenvolvedores de projetos do tipo Windows Forms Application, utilizam a propriedade IsMdiContainer para criar um formulário principal. A partir deste form, é que todos os forms filhos (Child) são acionados e abertos dentro do contêiner. Um problema comum neste contexto, é que a cada clique na objeto que abre o form filho, uma nova janela é aberta na janela principal. Veja um exemplo no trecho de código abaixo em linguagem VB.NET.

Private Sub JanelaFilhaToolStripMenuItem_Click(ByVal sender As System.Object, _
                                               ByVal e As System.EventArgs) _
                                               Handles JanelaFilhaToolStripMenuItem.Click
    Dim filho As New Form2()
    filho.MdiParent = Me
    filho.Show()
End Sub




Perceba na imagem acima que a cada vez que o usuário clica no menu “Janela Filha”, um novo Form é aberto no contexto da janela principal. Para evitar que este incidente ocorra, é necessário uma pequena alteração no trecho anterior.

Dim filha As Form2
Private Sub JanelaFilhaToolStripMenuItem_Click(ByVal sender As System.Object, _
                                               ByVal e As System.EventArgs) _
                                               Handles JanelaFilhaToolStripMenuItem.Click
    If filha Is Nothing Then
        filha = New Form2()
        filha.MdiParent = Me
        filha.Show()
    Else
        filha.WindowState = FormWindowState.Normal
    End If
End Sub

Testando a aplicação, perceba que somente uma instância do formulário filho será aberta, ainda que o mesmo esteja minimizado na barra de tarefas do contêiner.
Esta é mais uma dica rápida e espero que seja útil.

quarta-feira, 13 de julho de 2011

Usando um formulário como caixa de diálogo

E aí, pessoal!

Esse texto é mais uma dica simples e objetiva, que tem por finalidade transformar um formulário (Windows Forms) em uma caixa de diálogo, semelhante a um MessageBox. Para escrever o projeto utilizou-se o Visual Studio 2010 em linguagem VB.NET.

Abra o Visual Studio e crie um novo projeto (File > New > Project) do tipo Windows Forms Application em linguagem VB.NET.



Com o projeto devidamente criado, acrescente um novo formulário ao projeto (Project > Add Windows Forms) e mantenha o nome sugerido pelo Visual Studio.



No Form2, acrescente dois botões e configure-os de acordo com as imagens abaixo (Perceba que alteramos a propriedade Text dos botões para “Sim” e “Não”).




Volte para o Form1, acesse o editor de código fonte do formulário (F7 ou dê um duplo-clique sobre o centro do Form1) e escreva as linhas de código abaixo.

Private Sub Form1_Load(ByVal sender As System.Object, _
                           ByVal e As System.EventArgs) _
        Handles MyBase.Load
        Dim f As New Form2
        f.Text = "Mensagem personalizada"
        If f.ShowDialog = Windows.Forms.DialogResult.Yes Then
            MessageBox.Show("O usuário clicou em ""Sim"".")
        Else
            MessageBox.Show("O usuário clicou em ""Não"" ou fechou o Form.")
        End If
    End Sub

Pronto. Compile a aplicação pressionando a tecla de atalho F5 e confira o resultado.




Fico por aqui e até a próxima!

sexta-feira, 10 de junho de 2011

Usar a paleta de cores no .NET

E aí, programadores!

Este texto é mais uma dica rápida, simples e objetiva, que demonstra como utilizar uma paleta de cores do Windows no contexto de uma aplicação .NET. No exemplo, a cor de fundo do formulário (propriedade BackColor) será alterada pela cor selecionada na paleta. Para exemplificar, iremos usar o Visual Studio 2010 Ultimate e linguagem VB.NET.

Abra o Visual Studio e crie um novo projeto (File > New > Project) do tipo Windows Forms Application em linguagem VB.NET.


Acesse a Toolbox (caso não esteja aparecendo na IDE, clique no menu View > Toolbox), na guia Common Controls e arraste o controle Button para o formulário Form1.


Para escrevermos a rotina que irá abrir a paleta de cores, dê um duplo-clique sobre o botão Button1 e escreva o trecho de código abaixo.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    ' Instanciar um objeto da classe ColorDialog
    Dim paleta As New ColorDialog()
    ' Abrir a paleta de cores e verificar se o usuário clicou no botão OK
    If paleta.ShowDialog() = Windows.Forms.DialogResult.OK Then
        ' Alterar a cor de fundo do formulário atual
        Me.BackColor = paleta.Color
    End If
End Sub

O código é simples e está comentado para facilitar no entendimento. Para testar, salve e execute a aplicação pressionando a tecla de atalho F5. O resto é exibido na imagem abaixo.


Por hora é só. 
Até a próxima!

terça-feira, 7 de junho de 2011

Usando o assistente de criação de CSS

Olá, pessoal!

Dentre as inúmeras funcionalidades e recursos que compõem o Visual Studio, tem uma ferramenta que é muito utilizada pelos designers (e programadores que também atuam com layout de páginas) que é o assistente de criação de style CSS (Cascading Style Sheet)

Para obter mais informações sobre CSS, acesse o endereço http://maujor.com/

Para demonstrar, vamos utilizar o Visual Studio 2010 Ultimate e um projeto do tipo Web Site. Abra o Visual Studio e crie um novo projeto (File > New > Web Site) do tipo ASP.NET Empty Web Site.


Adicione uma página Default.aspx, clicando com o botão direito do mouse sobre o projeto, e em seguida Add New Item. Selecione o item Web Form, mantenha o nome original do arquivo e clique em Add.


Com a página criada, digite um texto qualquer para utilizarmos como exemplo.


Para acessar o assistente, clique no menu Format > New style. A janela do assistente é iniciada conforme a imagem abaixo.


Configure um novo style conforme a figura a seguir, em seguida clique no botão Apply (clique em Yes na caixa de diálogo) e depois em OK.


Para aplicarmos o novo estilo no texto “Programação On-Line”, clique no menu View > Apply Styles. A janela é automaticamente aberta e ocupa uma parte da IDE do Visual Studio.


Selecione o texto em que se deseja aplicar o style, e clique na classe .TituloPagina do arquivo CSS conforme a figura e veja o resultado, após o clique.


O exemplo é bem simples, mas serve para ilustrar o uso do utilitário de criação e formatação de estilos. Com ele, além de alterar uma fonte de um texto, também é possível ajustar o BackGround da página, alinhar a posição dos elementos HTML e ASP.NET e formatar o layout de uma Table.

Fico por aqui e espero ter ajudado.

segunda-feira, 6 de junho de 2011

Carregar um TreeView via código

E aí, pessoal!

O TreeView é um controle de extrema utilidade, e que serve para exibir informações no formato de árvore hierárquica. Neste artigo, veremos como criar os nós (pai e filho) de forma programática usando a linguagem C#.

Abra o Visual Studio (utilizou-se a versão 2010 Ultimate na edição do artigo) e crie um novo projeto (File > New > Project) do tipo Windows Forms Application em linguagem C#.


Com o projeto criado e um formulário adicionado automaticamente (Form1), acesse a Toolbox e arraste o controle TreeView para o centro da janela.


Ajuste o controle para que se adeque às bordas do formulário. Em seguida, dê um duplo-clique sobre o Form1 para que o Visual Studio escreva a assinatura do evento Load do form. Copie o código abaixo e cole no evento deste evento.

private void Form1_Load(object sender, EventArgs e)
{
    treeView1.Nodes.Add("Informática");
    treeView1.Nodes[0].Nodes.Add("Netbook");
    treeView1.Nodes[0].Nodes.Add("Computador");
    treeView1.Nodes[0].Nodes[0].Nodes.Add("Netbook LG X140l-1140 Rosa Intel® Atom™");
    treeView1.Nodes[0].Nodes[1].Nodes.Add("Computador Compaq All-in-one Cq1-1210br");
    treeView1.ExpandAll();
}

O código acima cria um nó principal chamado “Informática”, e em seguida cria dois nós-filhos do nó principal ("Netbook" e "Computador"). Por fim, acrescentamos mais dois nós-filhos dos nós anteriores, para caracterizar uma árvore genealógica. Compile a aplicação e veja o resultado que deve ser semelhante ao da imagem abaixo.


Espero que seja útil e até a próxima!

sexta-feira, 3 de junho de 2011

Select em objeto DataTable

Saudações, jovens!

Neste texto, veremos como efetuar uma seleção de registros em um objeto DataTable previamente alimentado de forma programática. Para demonstrar, iremos criar o DataTable dinamicamente e sem a presença de uma base de dados. O projeto será criado no Visual Studio 2010 em linguagem VB.NET.
Abra o Visual Studio e crie um novo projeto do tipo Web Site (File > New > Web Site) em linguagem VB.NET.


Vamos aproveitar a página Default.aspx para demonstrar o exemplo. Acesse a Toolbox, na guia Data e arraste o controle GridView para dentro da página. Segue abaixo o fonte HTML da página com a grade devidamente formatada.

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
            Width="432px">
            <Columns>
                <asp:BoundField DataField="Nome" HeaderText="Nome" />
                <asp:BoundField DataField="Email" HeaderText="E-mail" />
            </Columns>
        </asp:GridView>
    </div>
    </form>
</body>
</html>

Percebam que acrescentamos duas colunas no GridView (Nome e E-mail), justamente para servir de base para a seleção que iremos fazer no DataTable. Abaixo do GridView, acrescente um controle TextBox e um Button que será usado na pesquisa. O código abaixo já contempla a grade e os dois controles.

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
            Width="432px">
            <Columns>
                <asp:BoundField DataField="Nome" HeaderText="Nome" />
                <asp:BoundField DataField="Email" HeaderText="E-mail" />
            </Columns>
        </asp:GridView>
        <br />
        <asp:TextBox ID="TextBox1" runat="server">
        </asp:TextBox>&nbsp;<asp:Button ID="Button1" runat="server" Text="Pesquisar" />
    </div>
    </form>
</body>
</html>

Neste momento, o layout da página Default.aspx deve ser semelhante a imagem abaixo.


Clique no menu View > Code para termos acesso ao editor de código fonte da página (code-behind). Transcreva o trecho abaixo para a página.

Imports System.Data

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            PreencherDataTable()
            GridView1.DataSource = Session("contato")
            GridView1.DataBind()
        End If
    End Sub

    Private Sub PreencherDataTable()
        Dim _dt As New DataTable
        _dt.Columns.Add("Nome", GetType(String))
        _dt.Columns.Add("Email", GetType(String))
        _dt.Rows.Add("Tecla", "contato.programacao@gmail.com")
        _dt.Rows.Add("Lula", "lula.pt@gmail.com")
        _dt.Rows.Add("Kassab", "kassab.dem@gmail.com")
        Session("contato") = _dt
    End Sub
End Class

O código descreve a criação do objeto DataTable, a carga de alguns registros hipotéticos e a atribuição de toda a estrutura do objeto a variável de sessão Session(“contato”). Por fim, criamos o vinculo do GridView com a Session. Resta escrever a parte que dá nome ao artigo, que é o filtro com o método Select do DataTable. Ainda na aba Design, dê um duplo-clique sobre o botão pesquisar e escreva o código abaixo no escopo do evento Click.

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim _dt As New DataTable
        If TextBox1.Text.Trim() = "" Then
            GridView1.DataSource = Session("contato")
            GridView1.DataBind()
        Else
            Dim _drFiltro() As DataRow = _
                DirectCast(Session("contato"), DataTable).Select("Nome LIKE '%" + TextBox1.Text + "%'")
            _dt.Columns.Add("Nome", GetType(String))
            _dt.Columns.Add("Email", GetType(String))

            For Each _dr As DataRow In _drFiltro
                _dt.Rows.Add(_dr(0).ToString(), _dr(1).ToString())
            Next
            GridView1.DataSource = _dt
            GridView1.DataBind()
        End If
    End Sub

O exemplo é simples, e serve para entender o funcionamento do método Select do objeto. A nível de estudo, fizemos um filtro através do campo Nome do DataTable e recarregamos o GridView com o resultado da pesquisa. Para testar, execute a aplicação e veja o resultado.


Fico por aqui e até a próxima!

domingo, 29 de maio de 2011

Query em SQL Server retornar um documento XML

O Microsoft SQL Server dispõe de um vários recursos interessantes que facilitam a vida do desenvolvedor, um deles é permitir que o resultado de uma query seja formatada como um documento XML. O documento pode resultar em um elemento por registro (com as colunas exibidas como atributos) ou exibir as colunas como elementos. Iremos demonstrar as duas formas acima.

Abra o Microsoft SQL Server Management Studio (2005 ou 2008) e faça a autenticação no servidor SQL usando as credencias de acesso.


Selecione uma base de dados na guia Object Explorer e crie uma nova janela de consulta.


Como exemplo, vamos selecionar os registros da tabela Employees de forma tradicional.


Aproveitando a consulta acima, acrescente as palavras-chave FOR XML AUTO para que o resultado seja apresentado na forma de um documento XML.


Perceba na primeira imagem, que a consulta anterior retornava 9 linhas, enquanto que a segunda resultou somente uma. Isso ocorre porque o documento XML foi escrito na forma horizontal, ou seja, todas as linhas em somente uma. Clique sobre a linha resultante e veja o resultado em um editor XML interno do próprio Management.


As colunas da consulta foram retornadas em forma de atributos XML. Vamos acrescentar a palavra-chave ELEMENTS para que a estrutura do documento acrescente elementos, ao invés de atributos.



Esta dica é útil quando se utiliza o SGBD Microsoft SQL Server e documentos XML no escopo da aplicação.

Espero que tenham gostado, e até a próxima!

sábado, 28 de maio de 2011

Exportar MSFlexGrid para um arquivo CSV

Saudações, pessoal!

O arquivo com o formato CSV (campo separado por vírgula) é uma excelente alternativa para utilização de um arquivo de texto com conteúdo organizado. Com a separação das colunas usando a vírgula (ou outro caractere separador), é possível importar/exportar um arquivo CSV no Microsoft Excel ou qualquer outro editor de planilhas eletrônicas (Open Office, BR Office, Google Docs etc).

Este projeto permite que o conteúdo de uma grade MSFlexGrid possa ser exportado para um arquivo CSV, e em seguida aberto no Microsoft Excel para visualizar os dados organizados por colunas. O projeto foi escrito em linguagem Visual Basic 6.0 e necessita da base de dados Northwind (versão Microsoft Access) que pode ser baixado no link abaixo.http://sites.google.com/site/programacaoonline/download na seção Arquivos Diversos.

Grade carregada com os registros da tabela Products


Arquivo CSV aberto no NotePad do Windows


Arquivo CSV aberto no Excel da Microsoft


Baixe o projeto no link abaixo:
GridParaCSV_Tecla.rar

Até mais!

quinta-feira, 26 de maio de 2011

Visualizar planilha do Excel dentro do Form em VB6

Que tal, permitir que o usuário da sua aplicação em VB6, possa visualizar um arquivo do Excel dentro do formulário? A idéia é interessante e muito simples de se executar, nada que o controle WebBrowser do Visual Basic não consiga fazer. Para demonstrar, irei utilizar uma planilha criada e pré-formatada no próprio Excel.

Abra o Visual Basic e crie um novo projeto do tipo Standard EXE.


O VB cria um formulário (Form1) de forma automática, o qual iremos utilizar para demonstrar o exemplo proposto. Adicione a referência “Microsoft Internet Controls” ao projeto, para que o controle WebBrowser esteja disponível para utilização. Clique no menu Project > Components e marque a opção conforme abaixo.


Com o controle no projeto, aumente as dimensões do Form1 e arraste o controle WebBrowser da Toolbox para a janela.


 Já temos o formulário com o controle redimensionado, só nos resta escrever “uma única linha” de código para que a planilha seja exibida no WebBrowser. Dê um duplo-clique sobre uma área do Form1 e escreva o trecho de código abaixo no evento Load.

Private Sub Form_Load()
    WebBrowser1.Navigate "C:\Products.xls"
End Sub

Compile a aplicação e clique no botão “Abrir” da caixa de diálogo que aparecerá ao executar o projeto. Se tudo correr bem, o resultado obtido será conforme o da imagem abaixo.


É tudo muito simples, mas dá pra "atender a necessidade do usuário".
Até a próxima!

Exportando um DataGridView para Excel com VB.NET

O projeto à seguir exemplifica como extrair o conteúdo de um controle DataGridView para um arquivo Excel 2007 (*.xlsx). Para baixar o código fonte, acesse o link abaixo:
Download DGViewParaExcel.rar



Após a geração da planilha, o leiaute com a formatação simples é representada na imagem abaixo. 



Por enquanto é só, até mais!