Anterior Sumário Próximo OpenBASE! o Banco de Dados inteligente. Fale conosco!

Opções associadas aos controles das Caixas de Diálogo

Apresentamos a seguir algumas das opções associadas aos controles definidos em Caixas de Diálogo. Veja os tópicos dedicados a cada controle para obter maiores detalhes.

Opção Valid

A opção Valid, associada aos controles do tipo [Def]PushButton, ListBox, ComboBox e EditBox, serve para invocar uma função lógica, passando para ela, opcionalmente, como parâmetros, as variáveis associadas aos controles da Caixa de Diálogo ou quaisquer outros itens fora da DialogBox.

O objetivo da função invocada pela cláusula Valid é, obviamente, fazer a validação das informações e processá-las corretamente, retornando ao processamento da Caixa de Diálogo. Se a função acionada retornar um valor lógico verdade ("return (.t.)"), o Quadro de Diálogo será encerrado. Porém, se a função invocada retornar um valor lógico falso ("return(.f.)"), o Quadro de Diálogo permanece aberto e disponível na tela, permitindo, assim, enviar avisos, do tipo MessageBox ou Message na barra de status, para que o usuário tome as devidas providências, por exemplo, corrigir ou completar um dado que foi digitado incorretamente.

A cláusula Valid poderá ser utilizada, também, para executar procedimentos associados a eventos como, por exemplo, acionar um PushButton ou selecionar o item de uma lista.

Exemplo

O exemplo que segue executa a função lógica "mostra_bmp" quando acionados os botões "Imagem1" e "Imagem2", mostrando uma figura para cada botão acionado. Uma Caixa de Mensagem informa o arquivo que contém a imagem a ser mostrada. Compile este exemplo e modifique-o conforme você desejar.

$nolib

prog

func mostra_bmp(l)

set sigquit off

bt=1

varc = ""

Dialog 00,00,40,22

  caption "Exemplo do comando Valid"

  style WS_OVERLAPPEDWINDOW

  image NULL varc 02,01,36,16

  DefPushButton "Imagem&1" bt 02,20,10,-12 valid mostra_bmp(varc,bt)

  PushButton "Imagem&2" bt 14,20,10,-12 valid mostra_bmp(varc,bt)

  PushButton "&Sair" bt 26,20,08,-12 IDCANCEL

EndDialog

quit

func mostra_bmp

parameters varc(c),bt(n)

if bt = 1

  varc="\windows\clouds.bmp"

  c=MessageBox(varc,"Vou mostrar a imagem em...","O","I")

elseif bt = 2

  varc="\windows\forest.bmp"

  c=MessageBox(varc,"Vou mostrar a imagem em...","O","I")

else

  varc=""

endif

return .t.

Opção When

A opção when <func> (<p1>, ... <pn>), associada ao comando EditText, permite disponibilizar, condicionalmente, um controle do tipo EditBox, dependendo do valor retornado pela função lógica <func>. Esta opção pode ser utilizada, com proveito, para controle de entrada de dados e preenchimento de formulários eletrônicos.

Exemplo

$nolib

prog

cbnom,cbsex,cbend,cbtel=.f.

func fval(l)

func mbox(l)

varnom,varsex,varend,vartel = ""

botao=1

Dialog 00,00,36,14

  style WS_OVERLAPPEDWINDOW

  font "Courier New"

  ltext "Marque campos a preencher:" NULL 01,00,26,01

  checkbox "Nome" cbnom 05,02,10,01

  checkbox "Sexo" cbsex 05,03,10,01

  checkbox "Endereço" cbend 05,04,10,01

  checkbox "Telefone" cbtel 05,05,10,01

  Rtext "Nome:" NULL 02,07,10,01

  EditText NULL varnom 12,07,20,1  when fval(cbnom)

  Rtext "Sexo:" NULL 02,08,10,01

  EditText NULL varsex 12,08,01,1  pic "!" when fval(cbsex)

  Rtext "Endereco:" NULL 02,09,10,01

  EditText NULL varend 12,09,20,1  pic rep("!",40) when fval(cbend)

  Rtext "Fone:" NULL 02,10,10,01

  EditText NULL vartel 12,10,10,1  when fval(cbtel)

  DefPushButton "&OK" botao 12,12,06,-12;

    valid mbox(botao,varnom,varsex,varend,vartel)

  PushButton "&Reset" botao 20,12,06,-12;

    valid mbox(botao,varnom,varsex,varend,vartel)

  PushButton "&Quit" NULL 28,12,06,-12 IDCANCEL

EndDialog

if botao = 2

  quit

endif

return

func  fval

parameters cbx(l)

return cbx

func mbox

parameters botao(n),varnom,varsex,varend,vartel

if botao = 2

  varnom,varsex,varend,vartel = ""

  ret=MessageBox ("Vou limpar as variáveis ...","","O","I")

  RefreshControl (6)

  RefreshControl (8)

  RefreshControl (10)

  RefreshControl (12)

  return (.t.)

endif

mens="nome="+varnom+chr(10)+;

     "sexo="+varsex+chr(10)+;

     "end.="+varend+chr(10)+;

     "tel.="+vartel

ret=MessageBox (mens,"Para você ver as variáveis...","O","I")

return (.t.)

Observações

No exemplo do programa acima, são apresentadas Caixas de Verificação, uma para cada campo a ser preenchido. O programa permite preencher apenas aqueles campos cuja CheckBox correspondente foi marcada. A seguir, podemos visualizar a tela do programa:

Anterior Sumário Próximo OpenBASE! o Banco de Dados inteligente. Fale conosco!