Adicionando botões de ação ao formulário

Os botões de ação ou botões de comando são usados para disparar ações a serem executadas. O Windows está cheio deles. No Visual  FoxPro não é diferente. Quando estamos programando um formulário para inserção e manutenção de dados numa tabela poderemos ter vários botões com ações como essas: Novo, Gravar, Editar, Desfazer, Excluir, Primeiro, Anterior, Próximo, Último e assim por diante, conforme a necessidade do projeto. Cada ação requer a especificação de código para executar a tarefa a qual o botão se propõe.

Nessa etapa do nosso estudo, vamos lidar com os botões de ação para começarmos a dar vida aos  nossos  formulários. De nada adianta termos belas interfaces, se essas não puderem realizar o trabalho esperado sobre os dados.

O Visual FoxPro possui algumas classes prontas chamadas Foundation Classes ou simplesmente FFC. Algumas dessas classes são interessantes e funcionam bem. Inclusive há classes prontas para a maioria das ações que citei anteriormente. Entretanto, como o objetivo deste texto é conduzi-lo ao aprendizado programático, mostrando como fazer, vamos desenvolver nosso próprio código. Assim você terá a oportunidade de aumentar seus conhecimentos.

Adicionar um botão ao formulário é tarefa simples. Basta clicar sobre “Command Button” na barra de ferramenta Form Controls e em seguida posicionar o cursor no local onde deseja adicionar o botão ao formulário e clicar.

A seguir está a descrição dos objetos Buttons que teremos em nosso formulário e quais propriedades e métodos devemos alterar ou escrever.

Botões a serem inseridos no formulário

Tabela 13

BOTÃO: Novo
PROPRIEDADE VALOR A ATRIBUIR
Caption \<Novo
Name bntNovo
Picture imagens\new.bmp
Height 27
Left 3
PicturePosition 1
Top 179
Width 78
EVENTO/MÉTODO CÓDIGO A EXECUTAR
Click Event

Tabela 14

BOTÃO: Gravar
PROPRIEDADE VALOR A ATRIBUIR
Caption \<Gravar
Name bntGravar
Picture imagens\save.bmp
Height 27
Left 80
PicturePosition 1
Top 179
Width 78
EVENTO/

MÉTODO

CÓDIGO A EXECUTAR
Click Event

Tabela 15

BOTÃO: Editar
PROPRIEDADE VALOR A ATRIBUIR
Caption \<Editar
Name bntEditar
Picture Imagens\wzedit.bmp
Height 27
Left 157
PicturePosition 1
Top 179
Width 78
EVENTO/MÉTODO CÓDIGO A EXECUTAR
Click Event

Tabela 16

BOTÃO: Desfazer
PROPRIEDADE VALOR A ATRIBUIR
Caption \<Desfazer
Name bntDesfazer
Picture imagens\wzundo.bmp
Height 27
Left 234
PicturePosition 1
Top 179
Width 78
EVENTO/MÉTODO CÓDIGO A EXECUTAR
Click Event

Tabela 17

BOTÃO: Excluir
PROPRIEDADE VALOR A ATRIBUIR
Caption E\<xcluir
Name bntExcluir
Picture imagens\wzundo.bmp
Height 27
Left 311
PicturePosition 1
Top 179
Width 78
EVENTO/MÉTODO CÓDIGO A EXECUTAR
Click Event

Tabela 18

BOTÃO: Primeiro Registro
PROPRIEDADE VALOR A ATRIBUIR
Caption
Name bntPrimeiro
Picture imagens\wztop.bmp
Height 27
Left 390
PicturePosition 1
Top 179
ToolTip Text Primeiro Registro
Width 26
EVENTO/MÉTODO CÓDIGO A EXECUTAR
Click Event

Tabela 19

BOTÃO: Registro Anterior
PROPRIEDADE VALOR A ATRIBUIR
Caption
Name bntAnterior
Picture imagens\wzback.bmp
Height 27
Left 416
PicturePosition 1
Top 179
ToolTip Text Registro Anterior
Width 26
EVENTO/MÉTODO CÓDIGO A EXECUTAR
Click Event

Tabela 20

BOTÃO: Próximo Registro
PROPRIEDADE VALOR A ATRIBUIR
Caption
Name bntProximo
Picture imagens\wznext.bmp
Height 27
Left 442
PicturePosition 1
Top 179
ToolTip Text Próximo Registro
Width 26
EVENTO/MÉTODO CÓDIGO A EXECUTAR
Click Event

Tabela 21

BOTÃO: Último Registro
PROPRIEDADE VALOR A ATRIBUIR
Caption
Name bntUltimo
Picture imagens\wzend.bmp
Height 27
Left 468
PicturePosition 1
Top 179
ToolTip Text Último Registro
Width 26
EVENTO/MÉTODO CÓDIGO A EXECUTAR
Click Event

Tabela 22

BOTÃO: Fechar
PROPRIEDADE VALOR A ATRIBUIR
Caption Fecha\<r
Name bntFechar
Picture imagens\wzclose.bmp
Height 27
Left 496
PicturePosition 1
Top 179
Width 78
EVENTO/MÉTODO CÓDIGO A EXECUTAR
Click Event

Talvez você esteja pensando muitas coisas nesse momento, mas com certeza uma delas deve ser: Como faço para atribuir essas configurações e escrever o código de cada evento/método?

Pois bem, vamos lá!

Primeiro você deve clicar sobre o objeto que deseja atribuir as propriedades ou o código. Depois clique com o botão direito e escolha Properties. Para seguir uma seqüência lógica, comece pelo botão Novo. Após clicar em Properties, você terá a janela de propriedades aberta, como mostra a figura 37:

Figura 37 – Propriedades do botão novo.

Agora é só definir o valor de cada propriedade conforme indica a tabela 13.

O código do evento Click, conforme tabela 13 deve ser digitado no evento clique do botão Novo. Para isso você deve acessa a aba Methods e localizar o Click Event, dê dois cliques sobre o mesmo e abrirá o editor de programas para você digitar o código:

Figura 38 – Editor de Programas, editando evento Click do botão

Agora defina todas as propriedades para os botões e também o código do evento Click conforme ilustra as tabelas de número 13 a 22.

Além do código do evento Click de cada botão, nosso formulário ainda contém código nos métodos relacionados na tabela 10. A seguir estão relacionados os métodos e os seus respectivos códigos.

Tabela 23

MÉTODO CÓDIGO DO MÉTODO
 

BloquearRegistro

CoordenaBotoes()
CoordenaControles()
CoordenaNavegacao()
CriticarDados()
PosicionarPrimeiroCampo()
TratarErro() O código a seguir é o código básico para tratamento de erros do nosso formulário
*| AUTOCOM3 TECNOLOGIA E SOFTWARES LTDA (c) 2018 Todos os direitos reservados.
*|
*| Data da última revisão deste codigo: 11/07/2019 09:40:12 AM

=AERROR(dados)
EXTERNAL ARRAY gaerrors

DO CASE

CASE dados(1) = 1884 && Unicidade violada
MESSAGEBOX(“a chave DO índice foi violada.”,0+16,”ERRO”) RETURN

CASE dados(1) = 1585 OR dados(1) = 1494

IF dados(1) = 1585
cmsgerro = “registro modificado por outro usuário”
ELSE ENDIF
cmsgerro = “registro modificado por outro usuário”
lnnrbotao = MESSAGEBOX( ;
cmsgerro + CHR(13)+CHR(13)+[Pressione: ]+CHR(13);
+[ OK para forçar a gravação;]+CHR(13);
+[ Cancelar para desfazer.]+CHR(13)+[], ;
32+1+0, ;
[Erro atualizando o banco de dados])

IF lnnrbotao = 1 && Ok if tableupdate(0,.t.)
THISFORM.coordenabotoes(“padrao”)
RETURN
ELSE
= MESSAGEBOX( ;
[Não foi possivel gravar as alterações!!!];
+CHR(13)+CHR(13);
+[A operação será cancelada.], ;
48+0+0, ;
[Erro atualizando o banco de dados])
ENDIF

ENDIF

THISFORM.coordenabotoes(“padrao”) RETURN

OTHERWISE
= MESSAGEBOX( ;
[Erro número: ] + ALLTRIM(STR(dados(1)));
+CHR(13)+CHR(13);
+dados(2)+CHR(13)+CHR(13);
+[O programa será cancelado!];
+CHR(13)+[], ;
48+0+0, ;
[Erro inesperado])
ON ERROR
ON SHUTDOWN
CANCEL
CLEAR EVENTS
ENDCASE

*| Fim

Agora a tabela 24 traz a lista de valores a serem configurados para propriedades do formulário.

EVENTO CÓDIGO DO EVENTO
Init


Tabela 24 – Atribuição de valor a Propriedade

PROPRIEDADE VALOR A ATRIBUIR
PrimeiroCampoFoco Thisform.txtNomeUsuario.SetFocus()

Apesar  de  todo  o  código  fonte  disponível  para  os  métodos  do  formulário  já  estarem disponíveis nas tabelas acima, você ainda nem aprendeu como inserir os métodos no formulário. Façamos isso nesse momento.

Continua em Desenvolvendo em VFP – Parte 10

Print Friendly, PDF & Email

Sobre o Autor