O controle Splitter é um controle do formulário Windows no VB .NET e é utilizado para redimensionar os controles filhos de uma janela em tempo de execução. Um exemplo bastante conhecido é a janela do Explorer do Windows ; nela temos uma linha que separa duas janelas , podemos arrastar esta linha que separa as janelas alterando o tamanho relativo de cada uma delas. Basta passar com o mouse sobre a linha e quando a seta dupla do mouse aparecer basta arrastar e soltar a linha para o tamanho que deseja configurar. (veja figura ao lado). O controle Splitter é um controle Simples , mas geralmente é usado com dois controles (TreeView e ListView) que são encaixados lado a lado. Geralmente não precisamos usar nenhuma das propriedades do controle Splitter para que a funcionalidade do redimensionamento funcione. As propriedades mais importantes deste controle são: |
|
Membro | Descrição |
BackColor | Define a cor de plano do fundo do controle |
Dock | Configura a direção do controle. Se configurado para um lado será usado para alterar a altura dos dois controles ; se for configurado para parte superior/inferior irá alterar a largura dos controles. |
minSize | Define um tamanho mínimo para o controle. |
A seguir vou mostrar como podemos usar o controle Splitter juntamente com os controles TreeView w ListView simulando um Explorer que iremos criar no VB .NET.
1- Inicie um novo projeto do tipo Windows Application no Visual Studio .NET
2- Insira um controle TreeView no formulário padrão e configure sua propriedade Dock para Left, conforme abaixo:
3- Agora insira um controle Splitter no formulário configurando sua propriedade Dock para Left, conforme abaixo:
4- Inclua um controle ListView no formulário e configure sua propriedade Dock para Fill.
5- Pronto ! Você já pode executar o projeto e configurar a largura de cada janela redimensionando os controles TreeView e ListView através do controle Splitter.
Criando um aplicativo similar ao Explorer
Vamos aproveitar o formulário que configuramos acima , e, usando algum código , criar um Explorer. Devemos então exibir as unidades disponíveis no controle TreeView . Quando um diretório for selecionado seus arquivos deverão ser exibidos no controle ListView.
Vamos inserir o código para carregar os drivers do sistema no controle TreeView no evento Load do formulário - form1.vb :
O método GetLogicalDrives da classe Directory retorna um relação com os nomes das unidades disponíveis na sua máquina (em um array). Usamos um objeto TreeNode para incluir as informações no controle TreeView e incluímos um nó com a palavra "teste".
Quando um diretório for selecionado devemos adicionar os arquivos contidos nele no controle ListView e quando um nó do controle TreeView for expandido os diretórios contidos neste nó deverão ser incluídos no TreeView. Para incluir estas funcionalidades iremos usar os eventos BeforeExpand e AfterSelect do controle TreeView.
Vejamos o código associado a cada evento:
O evento BeferoExpand:
Private
Sub TreeView1_BeforeExpand(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewCancelEventArgs)
Handles TreeView1.BeforeExpand
'vamos verificar se existe um nó 'artificial' Dim onode As TreeNode = CType(e.Node, TreeNode)
If onode.Nodes(0).Text = "teste" Then 'remove o nó que criamos onode.Nodes(0).Remove() 'inclui os nós verdadeiros PegaNoFilhos(onode) End If End Sub |
O evento AfterSelect:
Private
Sub
TreeView1_AfterSelect(ByVal
sender As
Object,
ByVal e
As System.Windows.Forms.TreeViewEventArgs)
Handles
TreeView1.AfterSelect
Dim sArquivos() As String TrysArquivos = Directory.GetFiles(TreeView1.SelectedNode.FullPath) Catch excecao As Exception 'não vamos fazer nada aqui End Try If Not IsNothing(sArquivos) Then Dim Arquivo As String Dim oitem As ListViewItem ListView1.Items.Clear() 'inclui os arquivos no listview For Each Arquivo In sArquivos oitem = ListView1.Items.Add(Arquivo) Next End If End Sub |
Abaixo o código da rotina PegaNoFilhos :
Private
Sub PegaNofilhos(ByVal
node As
TreeNode)
Dim sDiretorios()
As
String
= Directory.GetDirectories(node.FullPath)
Dim Diretorio
As
String
Dim onode
As
TreeNode
'inclui o diretorio 'artificial' teste1 For Each Diretorio In sDiretorios onode = node.Nodes.Add(Diretorio) onode.Nodes.Add("teste1") Next End Sub |
A rotina não esta completa , deixo para você terminar ; o objetivo do artigo é mostrar como usar o controle splitter. Acabei dando um pequeno exemplo de sua utilização. Ao executar o projeto teremos:
Até o próximo artigo VB.NET ...
José Carlos Macoratti