Botao para cancelar processamento

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Botao para cancelar processamento

Mensagem por rubens »

Olá...

Tenho uma função que varre um dbf. Tem como colocar um botão para cancelar esse processamento?

No clipper/harbour faço assim

Código: Selecionar todos

Use clientes 
DbGoTop()
While !eof()
	If LastKey()=27
		If Alert('Deseja cancelar processamento?',{'Sim','Nao'})=1
			Exit
		EndIf
	Endif
	? Nome
	DbSkip()
EndDo
...
Return Nil
Como ficaria na minigui? Imagino que um on key escape no formulário resolveria, mas teria como criar um botão para isso ?

Obrigado
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Botao para cancelar processamento

Mensagem por Toledo »

Amigo, segue um exemplo:

Código: Selecionar todos

#include "minigui.ch"

Memvar lPara
*------------------------
Function main()
*------------------------
Public lPara:=.F.

if !file('democli.dbf')

  aStru := {;
           {'CODIGO','C',3,00},;
           {"NOME" ,"C",40,00}}

  DBCREATE( 'democli.dbf' , aStru)
Endif

use democli

for x=1 to 30
  append blank 
  REPLACE CODIGO WITH STRZERO(X,3)
  REPLACE NOME WITH 'CLIENTE '+STRZERO(X,3) 
  COMMIT
next 
DbGoTop()

DEFINE WINDOW FMain AT 10,10 ;
	WIDTH 550 HEIGHT 185 MAIN ;
	TITLE "Demo Parar Processamento" ;
	NOMAXIMIZE NOSIZE

      @ 10,20 BUTTON Button_1 CAPTION "Iniciar Processamento" WIDTH 150 HEIGHT 28;
              ACTION {|| Iniciar_proc()}
      @ 40,10 FRAME Frame_1 CAPTION 'Cliente' WIDTH 519 HEIGHT 61
      @ 63,20 LABEL oNome VALUE "" WIDTH 490 HEIGHT 24 ;
              FONT "ARIAL" SIZE 10 BOLD
      @ 110,350 BUTTON Button_2 CAPTION "Parar o Processamento"  WIDTH 160 HEIGHT 28;
              ACTION {|| (lPara:=.T.)}

END WINDOW

FMain.Button_1.Enabled:=.t.
FMain.Button_2.Enabled:=.f.

FMain.Center
FMain.Activate
CLOSE ALL
Return Nil
   
*-----------------------
Function Iniciar_proc()
*-----------------------
lPara:=.F.
FMain.Button_1.Enabled:=.f.
FMain.Button_2.Enabled:=.t.

DbGoTop()
Do While !eof()
   do EVENTS
   If lPara
      lPara:=.F.
      If MsgYesNo('Deseja parar o processamento?')
         FMain.oNome.Value:="Processamento encerrado..."
         Exit
      EndIf
   Endif
   FMain.oNome.Value:=Nome
   inkey(0.25)
   DbSkip()
   If eof()
     DbGoTop()
   Endif
EndDo

FMain.Button_1.Enabled:=.t.
FMain.Button_2.Enabled:=.f.

Return NIL
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Botao para cancelar processamento

Mensagem por rubens »

Ok... Toledo...
Obg... através das pesquisas tinha visto um colega sugerir a criação de uma variável mas não tinha conseguido visualizar como. Agora sim ficou claro..

Obrigado..
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Responder