Desenvolvendo aplicações com Gambas

Ação "Adicionar"

Este já é um pouco mais complicado. Queremos que o usuário, ao pressionar o botão, possa escrever uma linha de texto que carregue-se no ListBox.

Gambas não proporciona por padrão um diálogo do tipo "InputBox", sendo assim vamos criar o nosso próprio InputBox. Criamos um novo formulário, mas agora queremos dispor de um construtor. Por que?. Porque no momento de cria-lo trocaremos algumas propriedades como título, alguma mensagem de texto e um valor por padrão para a entrada de texto. Este é o desenho que propomos:

Inputbox

    O formulário não tem muita complicação. Dispõe de um label e uma caixa de texto (TextBox) e dois botões. Como qualquer caixa de diálogo que se presa, é conveniente que possamos cancelar com a tecla Escap (Esc) e aceitar com a tecla Enter:

    Os Controles Button tem duas opções adequadas para esta situação. São "Defoult" e "Cancel". Para o botão "Aceitar", colocamos "Defoult" a True e "Cancel" a "False" para o botão "Cancelar", colocamos ao contrario.

Desta aneira, quando abre-se o formulário, ao pressionarmos a tecla <ENTER> será equivalente a pressionar o botão "Aceitar" se pressionarmos a tecla <ESC> simulará o botão "Cancelar".

Temos o seguinte problema, como retornar o valor que o usuário introduziu na caixa de texto para a janela principal. Temos que destacar que em Gambas não há variável global, sendo assim teremos que procurar outra solução. Criamos então um módulo no qual ponhamos uma variável PUBLIC, assim podemos acessa-la de qualquer ponto da aplicação.

Criamos um módulo (botão direito em "Modules | New | Modules..." ) o chamamos de Mcomum, por exemplo. Esta seria a implementação do módulo:

' Gambas module file
PUBLIC texto AS String

Assim sem mais. Agora temos uma variável visível a partir de qualquer ponto do programa que pode ser acessada com: Mcomum.texto

A seguir é implementar o formulário que fará as vezes do "InputBox". Esta seria sua implementação:

' Gambas class file
PUBLIC SUB _new(Titulo AS String, Mensagem AS String, OPTIONAL Texto AS String)

ME.Caption = Titulo
Label1.Caption = Mensagem

' uma String é avaliada como False si estiver "vazia"
IF Texto THEN TextBox1.Text = Texto

END

PUBLIC SUB Button1_Click() ' Este e o botão Aceitar

MComun.texto = TextBox1.Text
ME.Close(0)

END

PUBLIC SUB Button2_Click() ' Este é o botão Cancelar

ME.Close(0)

END

O procedimento _new é o construtor. Como nos interessa que o texto do label, o título e o texto a editar sejam diferentes a cada vez, os ajustamos ao criar a janela.

O botão "Modificar" insere o texto do TextBox na variável Text do módulo Mcomum e fecha o formulário. O Botão "Cancelar" simplesmente fecha a janela

Como a variável Mcomum.Texto é comum, temos que lembrar de "limpa-la" cada vez que a utilizemos. Vamos ver agora mesmo.

O procedimento para o botão "Adicionar" do formulário principal é o seguinte. É bastante explicativo:

PUBLIC SUB Adicionar_Click()
' Declaramos nosso "Inputbox"
f AS FInputBox

' Criamos el InputBox, passando-lhe o título, mensagem a mostrar
' e un valor por padrão: a data e a hora momento e uma flexa

f = NEW FInputBox("Editar", "Escreva a linha que deseja adicionar:", CStr(Now) & " -> ")
' O mostremos
f.ShowModal()

' Se poressionarmos agora Aceitar introduzimos o texto, ficará na variável MComun.texto
IF MComum.texto THEN 'Uma cadeia vazia e False
' El controle listBox tem um método para adicionar texto: .Add
ListBox1.Add(MComum.texto)
' "Esvaziamos" a variável comum
MComum.texto = ""

END IF

END
 << Anterior     Próximo >>  


Sobre este documento e o autor

Como mencionado anteriormente, a aplicação foi desenvolvida utilizando a versão 1.0-1 do Gambas (utilizando os pacotes pré compilados para Debian "Sid"). No momento que escrevo este documento a versão 1.0.3 acaba de ser publicada, e no momento que ler este documento Provavelmente há uma versão mais moderna. Convém ler a lista de troca de uma versão para outra pois pode haver alguma incompatibilidade.

Qualquer comentário sugerindo a melhora deste documento é bem vinda meu E-Mail é forodejazz (arroba) gmail (punto) com

Nota legal: Este documento é livre, pode copia-lo, vende-lo, distribui-lo, modifica-lo, traduzi-lo para outras linguagens e inclusive vende-lo, porem sempre conservando esta nota e citando a procedência do documento. Em qualquer caso, o autor agradeceria que o notificasse, em um dado momento, ser retribuído economicamente por seu esforço (se colar, colou ;-)

Notas

  1. Há um bom tutorial para iniciantes e documentação em Casterliano em http://gambas.gnulinex.org

  2. Os eventos devem ser tratados como procedimentos, isto é, uma função que não retorna valor algum.

  3. Não sou expert na terminologia usada em programação orientada a objetos, sendo que, provavelmente estarei algum termino incorreto. Minhas desculpas ;-)


Este conteúdo foi publicado por Antonio Sousa, respeitando as licenças  de publicações . Se for detectado algum erro na atribuição do tutorial relacionado com seus direitos de atribuição contate gambastutor@yahoo.com.br e procederemos as modificações


TUTORIAIS

   
Hosted by www.Geocities.ws

1