| Carlos: profilLIBs Gráfica para (x)Har...BlogSeznamySíť | Nápověda |
LIBs Gráfica para (x)Harbour ooHG/MinGui/MiniGuiExPara programar em Visual Clipper. |
|||||
|
|
3.3.2009 Eventos, um pouco mais O objetivo deste “post” é aprofundar um pouco mais o estudo de eventos, com um exemplo simples. A idéia é simples, quero colocar zeros (000) antes do numeral digitado, isso é interessante para chaves (índices). Para isso devo interagir com o evento ON LOSTFOCUS do objeto TEXTBOX, ou seja, “ao perder o foco” da “caixa de textos”. Vamos criar um formulário novo e colocar 2 Label e 2 TextBox * ---------------------- Inicio do código ---------------* * http://www.powerinformatica.com.br * Carlos Alberto Nunes Susviela * Origem: http://oohg-br.spaces.live.com/blog * * Estudando um pouco de eventos ( 2 ) * #include "oohg.ch" Declare window FrmPrincipal // Visivel em todo o sistema Function Main SET NAVIGATION EXTENDED // Usa ENTER para troca de campos // quem vem do clipper vai gostar disso Define Window frmPrincipal ; Title "Estudando Eventos - 2 " ; WIDTH 640 HEIGHT 480 ; // Tamanho da Janela Main Define STATUSBAR STATUSITEM "http://oohg-br.spaces.live.com/blog/" WIDTH 80 End STATUSBAR *-------------------------------------------Label @ 46,31 LABEL lblCodigo ; WIDTH 120 ; HEIGHT 24 ; VALUE 'Código....:' ; FONT 'MS Sans Serif' ; SIZE 10 @ 90,30 LABEL lblNome ; WIDTH 120 ; HEIGHT 24 ; VALUE 'Nome Cliente.:' ; FONT 'MS Sans Serif' ; SIZE 10 *------------------------------------------- TextBox @ 41,163 TEXTBOX txtCodigo ; HEIGHT 24 ; WIDTH 120 ; Font 'MS Sans Serif' ; size 10 ; MAXLENGTH 6 ; ON LOSTFOCUS ZerosToCodigo(6) // Ao perder o foco executa // a funcao que coloca zeros // a esquerda do codigo @ 78,163 TEXTBOX txtNome ; HEIGHT 24 ; WIDTH 279 ; Font 'MS Sans Serif' ; size 10 ; MAXLENGTH 50 *------------------------------------------- Button @ 380,500 BUTTON btnSair ; ACTION btnSairClick() ; WIDTH 80 HEIGHT 27 ; CAPTION "&Sair" ; TOOLTIP 'Clique aqui para sair do Programa' End Window frmPrincipal.center() frmPrincipal.Activate() // Aqui é onde, Realmente inicia o programa Return * Função a ser disparada quando for clicado o botão btnSair *-----------------------------------------------------------------------------* Function btnSairClick() *-----------------------------------------------------------------------------* if MsgYesNo("Deseja Sair do Sistema ?" , "Aviso...!" ) FrmPrincipal.release // termina o formulario(libera) EndIf Return Nil * Função a ser disparada cada vez que o objeto TextoBox perde o foco (saiu) *-----------------------------------------------------------------------------* Function ZerosToCodigo(sTamanho) *-----------------------------------------------------------------------------* Local sCodigo := Alltrim(FrmPrincipal.txtCodigo.value) Local szeros := Replicate("0", sTamanho - Len(sCodigo)) FrmPrincipal.txtCodigo.value := sZeros + sCodigo Return Nil * ---------------------- Fim do código -----------------* Conclusão: Como se pode perceber basta saber qual evento usar que podemos fazer muita coisa com essa lib. Exercícios: Ao perder o foco do TextBox onde se digita o nome do cliente, valide o mesmo para que não seja permitido deixar o campo vazio, ou seja force a digitação do nome do cliente. Dica: você vai precisar da propriedade “SetFocus” para colocar o cursor novamente no campo Nome do Cliente. Assim: FrmPrincipal.txtCodigo.Setfocus Carlos Alberto Nunes Susviela www.PowerInformatica.com.br 22.12.2008 Um formulário com tempo de duração Para não perder o costume de publicar alguma coisa. Essa função mostra uma mensagem por um determinado tempo, muito util quando queremos mostrar mensagens do tipo, "Registro excluído com sucesso..!" *************************************************** * Funcao.....: Mensagem(cMsg, [nTempo]) * Proposito..: Mostrar uma mensagem por nTempo * Parametros.: cMsg mensagem a ser exibida * nTempo tempo de exibição * Retorna....: * Observacao.: * Function Mensagem(cMsg, nTempo) DEFINE WINDOW frmMensagem AT 0,0 WIDTH 400 HEIGHT 100 TITLE 'Mensagem do Sistema...' MODAL NOSYSMENU @ 20,10 LABEL lblMensagem VALUE AllTrim(cMsg) WIDTH 300 CENTERALIGN BOLD END WINDOW frmMensagem.Center ACTIVATE WINDOW frmMensagem NOWAIT IF Empty(nTempo) nTempo:=3 ENDIF DO WHILE nTempo>=0 DO EVENTS Inkey(.5) nTempo:=nTempo-.5 ENDDO frmMensagem.RELEASE Return Nil Carlos Alberto Nunes Susviela POWER Informática. 5.8.2008 Testar a resolução do clientePara saber a resolução usada no computador do cliente use a seguinte função: *************************************************** * Funcao.....: ValidaResolucao() * Proposito..: Validar a resolução minima do sistema * Parametros.: * Retorna....: .T. se a resolução é maior que 800x600 * Observacao.: * Function ValidaResolucao() if getdesktopwidth()<800 .or. getdesktopheight()<600 msginfo('800 x 600 ou maior requerida','Erro: Resolução de Vídeo') Return .F. endif Return .T. Carlos Alberto Nunes Susviela Santana do Livramento - RS Power Informática. 20.4.2008 Prompt de Comando Aqui...Quem trabalha com programação sempre precisa desse atalho.Ai vai uma dica para criar um atalho para o Prompt de Comandos "Aqui..."
Depois é só clicar com o botão direito do mouse na pasta e escolher CMD, pronto você já esta na pasta.
Carlos Susviela
11.4.2008 Excluindo arquivos de uma pastaApagando todos os aquivos de índices de uma subpasta do seu sistema
Essa semana tentei excluir todos os arquivos de uma pasta de um dos meus sistemas e por incrivel que possa parecer a coisa não é tão simples assim. Tudo porque o comando Delete File não aceita coringas (*).
Para minha sorte estou escrito em vários grupos sobre xBase e nossa comunidade é bastante ativa e e menos de uma hora várias soluções para o "problema" estavam disponíveis basntando avaliar qual delas servia melhor ao meu caso em específico.
Dentre elas destaquei essa:
Estou publicando para que sirva de apôio para a nossa comunidade, e como documentação para futuras pesquisas;
Obs. Esse post não é exclusivo para ooHG, pode ser aplicado para xBase & Cia Ltda.
Carlos Susviela
|
||||
|
|