Funções WAPI no Harbour.

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Funções WAPI no Harbour.

Mensagem por Toledo »

O Nome do "Sistema" tem que ser o que aparece na barra de título da janela do seu programa.
BackupGD.jpg
Neste exemplo no nome seria "Backup Google Drive - PCToledo Sistemas"

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

Funções WAPI no Harbour.

Mensagem por rubens »

Ok..

Isso aí já tinha conseguido resolver também...
Mas alguma coisa aqui num tá funcionando 100%.

Quando finalizo jogo o foco no outro aplicativo ainda mantem uma parte do foco no aplicativo anterior.

Olha essa tela... Recebeu o foco da função... mas se pressiono ESC ele assume o programa anterior... já com teclas de navegação e enter responde o programa que recebeu o foco.

Nessa tela eu pressionei o ESC e buscou uma função programa anterior. se pressiono seta para cima ou para baixo move o cursor no browse.
Erro de Foco de janela.jpg
o Código

Código: Selecionar todos

FOCALIZA_APP('DATASAC')

Código: Selecionar todos

********************************************************************************
Function Focaliza_App( Aplicativo )
********************************************************************************
hWnd := SY_FindWindow(Aplicativo)
SY_SwitchToThisWindow(hWnd,.f.)
SY_showWindow( hWnd, 3 )
Return Nil

********************************************************************************
#pragma BEGINDUMP

#include "hbapi.h"
#include "hbapiitm.h"
#include "windows.h"

VOID SY_SwitchToThisWindow( HWND hWnd, BOOL fAltTab );
HB_FUNC( SY_FINDCONSOLEHANDLE ) //FindConsoleHandle
{
 HWND hwnd;
 AllocConsole();
  hwnd = FindWindowA("ConsoleWindowClass",NULL);
 hb_retnl( (LONG) hwnd );
}
HB_FUNC( SY_CLOSEWINDOW )
{
 hb_retl( CloseWindow( (HWND) hb_parnl(1) ) );
}

HB_FUNC( SY_FINDWINDOW )
{
 hb_retnl((ULONG) FindWindow( (LPCSTR)
 NULL, hb_parcx(1))) ;
}

HB_FUNC( SY_GETFOREGROUNDWINDOW )
{
 HWND hwnd;
 hwnd = GetForegroundWindow();
 hb_retnl( (LONG) hwnd );
}

HB_FUNC( SY_SHOWWINDOW )
{
 hb_retl( ShowWindow(
 (HWND) hb_parnl(1), hb_parni(2) ));
}

HB_FUNC( SY_SETFOREGROUNDWINDOW )
{
 hb_retl( SetForegroundWindow(
  (HWND) hb_parnl( 1 ) ) ) ;
}

HB_FUNC( SY_SWITCHTOTHISWINDOW )
{
 HWND hWnd;
 hWnd = (HWND) hb_parnl(1);
 hb_retl(SetForegroundWindow(hWnd));
}

#pragma ENDDUMP
Obrigado
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Funções WAPI no Harbour.

Mensagem por asimoes »

Rubens,
Bom dia,

Eu usso essa função:

Código: Selecionar todos

STATIC FUNCTION RestauraTela(cJanela)
#define WM_SYSCOMMAND                   274
#define SC_MAXIMIZE                       61488   // 0xF030
#define SC_RESTORE                       61728   
  wvg_SetForegroundWindow(hb_gtInfo( HB_GTI_WINHANDLE ))
  hwg_SendMessage( hb_gtInfo( HB_GTI_WINHANDLE ),WM_SYSCOMMAND,SC_RESTORE,0)  
RETURN Nil
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Funções WAPI no Harbour.

Mensagem por rubens »

ASimoes...

Eu uso a Minigui.
Deu erros na compilação daí fiz algumas mudanças e consegui compilar

Código: Selecionar todos

********************************************************************************
FUNCTION RestauraTela(cJanela)
#define WM_SYSCOMMAND         274
#define SC_MAXIMIZE           61488 // 0xF030
#define SC_RESTORE            61728 
 SetForegroundWindow(hb_gtInfo( HB_GTI_WINHANDLE ))
 sendMessage( hb_gtInfo( HB_GTI_WINHANDLE ),WM_SYSCOMMAND,SC_RESTORE,0) 
RETURN Nil
Só que continua o mesmo erro... quando pressione esc assume o aplicativo anterior (minigui)

Só umas dúvidas nessa função:
Não deveria usa a varável cJanela em algum lugar?
As funções HB_gtinfo() vão funcionar na minigui ?

Obrigado
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Funções WAPI no Harbour.

Mensagem por asimoes »

Rubens,

O esc é na caixa de dialog de confirmação?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Funções WAPI no Harbour.

Mensagem por rubens »

Eu tenho um form e neste form um grid. Se pressionar ESC ele verifica se e para sair do form ou do grid e continuar no form.
Daí quando executa a Focaliza_App( Aplicativo ) ele exibe a tela do outro aplicativo que é em dos. Mas é outro programa.
Só que o acionamento da tecla ESC continua sendo no programa Minigui (PDV.EXE). Mas as setas de movimentação não.

Tela do PDV. Quando grava a venda aciona o Focaliza_App( Aplicativo )
Tela PDV.png

Código: Selecionar todos

FOCALIZA_APP('DATASAC')
RestauraTela('DATASAC')
Daí abre o programa DATASAC
Tela DATASAC.png
Daí se eu usar as teclas de navegação. Beleza, funciona no programa DATASAC. observe na tela abaixo que movimentei 4 linhas do tbrowse para cima. Mas se pressiona a tecla ESC assiona o MSGYESNO() perguntando se quer confirmar a saída do sistema. Mas essa msgyesno() é do programa PDV.EXE. Se eu clico com o mouse no programa DATASAC e pressiono ESC aí não aciona o msgyesno(). Dá a impressão de que está mostrando o DATASAC mas não está focando nele. Estranho que as teclas de navegação funcionam.
Tela DATASAC - ESC.png
Não sei se o conflito é por ser dois programas harbour. Acredito que não por que são janelas distintas né. Tanto o DATASAC e o PDV São compilados com o o harbour 3.2.0 da minigui.

Código: Selecionar todos

	DEFINE WINDOW FORM_VENDA; 
		AT 0,0; 
		WIDTH GETDESKTOPWIDTH(); 
		HEIGHT GETDESKTOPHEIGHT();
		TITLE 'PDV - DATASAC V1.2';
		ICON IMAGENS+'ICONE.ICO';
		MODAL; 
		ON INTERACTIVECLOSE .F. 

       ....

		@ 110,0 GRID GRID_VENDAS;
			WIDTH GETDESKTOPWIDTH();
		  	HEIGHT GETDESKTOPHEIGHT()-300;
 		        HEADERS 	{'CÓDIGO BARRAS','DESCRIÇÃO'		,'QTDE'      ,'UN'      ,'UNITÁRIO'   ,'SUBTOTAL'};
 		        WIDTHS {220,N_TAM_COL_DESC,140,60,140,150};
 		        FONT 'VERDANA' SIZE 16 BOLD; 
			NOLINES;  
		        DYNAMICBACKCOLOR { BCOLOR , BCOLOR, BCOLOR, BCOLOR, BCOLOR, BCOLOR };
			DYNAMICFORECOLOR { FCOLOR , FCOLOR, FCOLOR, FCOLOR, FCOLOR, FCOLOR }; 
                        JUSTIFY {BROWSE_JTFY_LEFT,BROWSE_JTFY_LEFT,BROWSE_JTFY_RIGHT,BROWSE_JTFY_RIGHT,BROWSE_JTFY_RIGHT,BROWSE_JTFY_RIGHT};
                        ON LOSTFOCUS {|| LSAI := .T. }; 
  			ON GOTFOCUS {|| LSAI := .F. }

	   ON KEY DELETE 	ACTION APAGA_ITEM()
	   ON KEY ESCAPE 	ACTION CONFIRMAR_SAIDA()
	   ON KEY F7		ACTION ATUALIZAPDV()
	   ON KEY F9 		ACTION FECHA_VENDA()
	   ON KEY F10 		ACTION CANCELA_ITEM()

   END WINDOW
   
   FORM_VENDA.TBOX_CODIGO.SETFOCUS
   FORM_VENDA.MAXIMIZE
   FORM_VENDA.ACTIVATE

Código: Selecionar todos

*-------------------------------------------------------------------------------
STATIC FUNCTION CONFIRMAR_SAIDA()
LOCAL V_CONTEUDO_GRID := FORM_VENDA.GRID_VENDAS.ITEMCOUNT

IF LSAI
   IF V_CONTEUDO_GRID > 0 
      IF MSGYESNO('CANCELA VENDA ?','MENSAGEM')
         IF MSGYESNO('TEM CERTEZA ?','MENSAGEM')
            SELE IVT
            DELE ALL 
            PACK
            FORM_VENDA.GRID_VENDAS.DELETEALLITEMS
            FORM_VENDA.GRID_VENDAS.REFRESH
            LIMPA_PRODUTOS()
         ENDIF
      ENDIF
   ELSE
      IF MSGYESNO('CONFIRMA SAIDA DO SISTEMA ?','MENSAGEM')
         CLOSE ALL
      	FORM_VENDA.RELEASE
         FORM_MAIN.RELEASE
      ENDIF
   ENDIF
ELSE
	FORM_VENDA.TBOX_CODIGO.SETFOCUS 
ENDIF

RETURN(NIL)
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Funções WAPI no Harbour.

Mensagem por asimoes »

A janela do PDV em minigui é modal?

Eu vi que sim, passa ela para child para ver o que acontece.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Funções WAPI no Harbour.

Mensagem por asimoes »

Tem um exemplo na minigui D:\minigui\Samples\BASIC\MixedMode
Acho que pode te ajudar.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Funções WAPI no Harbour.

Mensagem por rubens »

Asimoes....

A solução lá é bem parecida com a que já estamos tentando...

Código: Selecionar todos

********************************************************************************
FUNCTION RestauraTela(cJanela)
#define WM_SYSCOMMAND         274
#define SC_MAXIMIZE           61488 // 0xF030
#define SC_RESTORE            61728 
 SY_SetForegroundWindow(hb_gtInfo( HB_GTI_WINHANDLE ))
 sendMessage( hb_gtInfo( HB_GTI_WINHANDLE ),WM_SYSCOMMAND,SC_RESTORE,0) 
RETURN Nil
Mudei para child e ficou do mesmo jeito... Por enquanto a solução é deixa o usuário alternar manualmente com alt+tab ou clicando com o mouse...

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Funções WAPI no Harbour.

Mensagem por asimoes »

Olá Rubens,

Como é feito a chamada do executável console?
Ele já está rodando, ou é feito um execute do programa em minigui.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Funções WAPI no Harbour.

Mensagem por rubens »

Bom dia.

É executado pelo executável mesmo. São dois programas independentes. Não tem vínculo um com o outro.

Vou fazer um teste mandando o foco para outro programa tipo o notepad para ver o que acontece..

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Funções WAPI no Harbour.

Mensagem por asimoes »

Olá Rubens,

Tem como postar o código da chamada do executável externo?

A função Focaliza_App é a melhor solução, mas eu gostaria de ver o trecho do código onde é chamada a função.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Funções WAPI no Harbour.

Mensagem por rubens »

Bom dia Asimoes...

Achei que tinha respondido aqui a sua solicitação...

Eu fiz teste chamando a calculadora e funcionou beleza sem a mensagem. Provavelmente deve estar no meu fonte mesmo, em algum formulário ou componente do formulário. Vou fazer um projetinho do zero e chamar o mesmo aplicativo para ver o que dá. De qualquer forma vou mostrar como está chamando o outro aplicativo.

Formulário de fechamento de venda. Tem uma imagem dele na minha segunda postagem.

Código: Selecionar todos

DEFINE WINDOW TEMPLATE AT 156 , 417 WIDTH 597 HEIGHT 545 TITLE 'FECHAMENTO DE COMPRA' ICON IMAGENS+'ICONE.ICO' MODAL BACKCOLOR {192,192,192}

     DEFINE LABEL LABEL_FECHAMENTO
            ROW    0
            COL    0
            WIDTH  592
            HEIGHT 48
            VALUE 'FECHAMENTO'
            FONTNAME 'VERDANA'
            FONTSIZE 30
            FONTBOLD .T.
            BACKCOLOR {0,0,255}
            FONTCOLOR {255,255,255}
            CENTERALIGN .T.
     END LABEL  

     DEFINE FRAME Frame_1
            ROW    60
            COL    10
            WIDTH  560
            HEIGHT 177
            FONTNAME 'Arial'
            FONTSIZE 12
            FONTBOLD .T.
            CAPTION "Detalhes do Fechamento"
            FONTCOLOR {0,0,255}
            OPAQUE .T.
     END FRAME  

     DEFINE LABEL Label_1
            ROW    130
            COL    20
            WIDTH  321
            HEIGHT 40
            VALUE "Desconto"
            FONTNAME 'Arial'
            FONTSIZE 30
            FONTBOLD .T.
            BACKCOLOR {192,192,192}
            FONTCOLOR {255,0,0}
            RIGHTALIGN .T.
     END LABEL  

     DEFINE LABEL Label_2
            ROW    180
            COL    20
            WIDTH  320
            HEIGHT 40
            VALUE "Total - Desconto"
            FONTNAME 'Arial'
            FONTSIZE 30
            FONTBOLD .T.
            BACKCOLOR {192,192,192}
            FONTCOLOR {0,0,255}
            RIGHTALIGN .T.
     END LABEL  

     DEFINE LABEL Label_3
            ROW    80
            COL    20
            WIDTH  321
            HEIGHT 40
            VALUE "Valor Total"
            FONTNAME 'Arial'
            FONTSIZE 30
            FONTBOLD .T.
            BACKCOLOR {192,192,192}
            FONTCOLOR {0,0,255}
            RIGHTALIGN .T.
     END LABEL  

     DEFINE LABEL Label_5
            ROW    361
            COL    21
            WIDTH  320
            HEIGHT 49
            VALUE "Troco"
            FONTNAME 'Arial'
            FONTSIZE 30
            FONTBOLD .T.
            BACKCOLOR {192,192,192}
            FONTCOLOR {0,0,255}
            RIGHTALIGN .T.
     END LABEL  

     DEFINE FRAME Frame_2
            ROW    341
            COL    11
            WIDTH  559
            HEIGHT 78
            FONTNAME 'Arial'
            FONTSIZE 12
            FONTBOLD .T.
            CAPTION "Troco"
            OPAQUE .T.
     END FRAME  

     DEFINE LABEL LblSubTotal
            ROW    80
            COL    360
            WIDTH  200
            HEIGHT 40
            VALUE ""
            FONTNAME 'Arial'
            FONTSIZE 30
            FONTBOLD .T.
            FONTCOLOR {0,0,255}
            RIGHTALIGN .T.
     END LABEL  

     DEFINE LABEL LblTotal
            ROW    185
            COL    360
            WIDTH  200
            HEIGHT 40
            VALUE ""
            FONTNAME 'Arial'
            FONTSIZE 30
            FONTBOLD .T.
            FONTCOLOR {0,0,255}
            RIGHTALIGN .T.
     END LABEL  

     DEFINE LABEL LblTroco
            ROW    361
            COL    361
            WIDTH  198
            HEIGHT 49
            VALUE ""
            FONTNAME 'Arial'
            FONTSIZE 30
            FONTBOLD .T.
            BACKCOLOR {0,0,255}
            FONTCOLOR {255,255,255}
            RIGHTALIGN .T.
     END LABEL  

     DEFINE LABEL Label_7
            ROW    480
            COL    12
            WIDTH  63
            HEIGHT 20
            VALUE "Cliente"
            FONTSIZE 12
            FONTBOLD .T.
            BACKCOLOR {0,0,255}
            FONTCOLOR {255,255,0}
            CENTERALIGN .T.
     END LABEL  

     DEFINE GETBOX gBoxDesconto
            ROW    130
            COL    360
            WIDTH  200
            HEIGHT 45
            VALUE 0.00
            IMAGE ''
            PICTURE P12
            VALID "NIL"
            VALIDMESSAGE "NIL"
            MESSAGE ''
            FONTNAME 'Arial'
            FONTSIZE 30
            FONTBOLD .T.
            TOOLTIP ''
            BACKCOLOR {{255,255,255},{0,0,255},{128,255,255}}
            FONTCOLOR {255,0,0}
            ONLOSTFOCUS CALCULA_FINAL( THIS.VALUE )
            RIGHTALIGN .T.
     END GETBOX  

     DEFINE COMBOBOX cBMoeda
            ROW    272
            COL    169
            WIDTH  169
            HEIGHT 200
            ITEMS {'Dinheiro','Debito','Credito','Convenio'}
            VALUE 1
            FONTNAME 'Arial'
            FONTSIZE 24
            TOOLTIP ''
            ONCHANGE {||MUDA_TROCO(THIS.VALUE)}
            FONTBOLD .T.
            TABSTOP .F.
     END COMBOBOX  

     DEFINE GETBOX gBoxDinheiro
            ROW    272
            COL    360
            WIDTH  200
            HEIGHT 45
            VALUE 0.00
            IMAGE ''
            PICTURE P12
            VALIDMESSAGE ''
            MESSAGE ''
            FONTNAME 'Arial'
            FONTSIZE 30
            FONTBOLD .T.
            TOOLTIP ''
            BACKCOLOR {{255,255,255},{0,0,255},{128,255,255}}
            FONTCOLOR {0,0,0}
            ONLOSTFOCUS CALCULA_TROCO(THIS.VALUE)
            RIGHTALIGN .T.
     END GETBOX  

     DEFINE BUTTONEX BtnGravar
            ROW    435
            COL    402
            WIDTH  162
            HEIGHT 64
            CAPTION "&Gravar"
            PICTURE "IMAGENS\img_gravar.bmp"
            ICON NIL
            FONTNAME 'Arial'
            FONTSIZE 18
            FONTBOLD .T.
            TOOLTIP ''
            HANDCURSOR .F.
     END BUTTONEX  

     DEFINE BUTTONEX BtF12
            ROW    430
            COL    12
            WIDTH  63
            HEIGHT 51
            PICTURE "IMAGENS\TECLAF11.bmp"
            ICON NIL
            ACTION PESQUISAR_CLIENTE()
            FONTNAME 'Arial'
            TOOLTIP ''
            HANDCURSOR .F.
     END BUTTONEX  

     DEFINE FRAME Frame_3
            ROW    250
            COL    10
            WIDTH  560
            HEIGHT 80
            FONTNAME 'Arial'
            FONTSIZE 12
            FONTBOLD .T.
            CAPTION "Forma de pagamento"
            OPAQUE .T.
     END FRAME  

END WINDOW

Função grava venda que chama a barra de progresso

Código: Selecionar todos

STATIC FUNCTION GRAVA_VENDA()

LOAD WINDOW FORMS\FORM_BARRAPROG AS FORM_BARRAPROG
FORM_BARRAPROG.CENTER
FORM_BARRAPROG.ACTIVATE

LIMPA_PRODUTOS()

RETURN(NIL)
Formulário Barra de Progresso

Código: Selecionar todos

DEFINE WINDOW TEMPLATE AT 225 , 450 WIDTH 538 HEIGHT 149 MODAL NOCAPTION ON INIT GRAVA_VENDAE()

     DEFINE LABEL LABEL_PROGRESS
            ROW    10
            COL    10
            WIDTH  500
            HEIGHT 44
            VALUE "Aguarde !!! Gravando Compra..."
            FONTNAME "ARIAL"
            FONTSIZE 20
            FONTBOLD .T.
            FONTCOLOR {0,0,255}
            CENTERALIGN .T.
     END LABEL  

     DEFINE PROGRESSBAR PBGRAVA
            ROW    70
            COL    10
            WIDTH  500
            HEIGHT 30
            RANGEMIN 0
            RANGEMAX 5
     END PROGRESSBAR  

END WINDOW
Funcão gravavendae() que finaliza a gravação da venda e chama a função FOCALIZA_APP('DATASAC'). O DATASAC já está aberto, neste momento ele já vai estar aberto. É aqui que o foco fica preso.

Código: Selecionar todos

********************************************************************************
FUNCTION GRAVA_VENDAE()


// VERIFICA CONDICAO DE VENDA 
nTPVENDA := GETPROPERTY('FECHA_VENDA','CBMOEDA','VALUE') 

IF nTPVENDA = 1       	// AVISTA DINHEIRO CHEQUE
	CVISTA_		:= 'V'
	CCODCOND		:= '001'
	CCODCON		:= '001'
ELSEIF nTPVENDA = 2  	// CARTAO DE DEBITO
	cVISTA_ 		:= 'V'
	cCODCOND		:= '021'
	cCODCON		:= '021'
ELSEIF nTPVENDA = 3		// CARTAO DE CREDITO
	cVISTA_ 		:= 'V'
	cCODCOND		:= '020'
	cCODCON		:= '020'
ELSEIF nTPVENDA = 4 		// CONVENIO

	IF EMPTY(cCODIGO) .OR. cCODIGO == '000001' .OR. cCODIGO == '000002'
		MSGINFO('Para condição CONVENIO, tem que selecionar o Cliente !!!','Sem cliente para convenio')
		DOMETHOD( 'FECHA_VENDA','BTNGRAVAR','SETFOCUS' )		
		DOMETHOD( 'FORM_BARRAPROG','RELEASE' )
		RETURN NIL
	ENDIF		

	CVISTA_		:= 'P'
	CCODCOND		:= '004'
	CCODCON		:= '004'
ENDIF

WHILE (.T.)

	SETPROPERTY( 'FORM_BARRAPROG','LABEL_PROGRESS','VALUE','Verificando se o Servidor está conectado!!!')
	SETPROPERTY( 'FORM_BARRAPROG','PBGRAVA','VALUE',1 )
	
   IF !VER_SERVIDOR()
   	IF MSGYESNO('Sem Conexao Com O Servidor !!! Tenta novamente ?')
   		LOOP
  		ELSE
  			DOMETHOD( 'FORM_BARRAPROG','RELEASE' )
  			DOMETHOD( 'FECHA_VENDA','RELEASE' )
			RETURN NIL
		ENDIF
   ELSE        
		SETPROPERTY( 'FORM_BARRAPROG', 'LABEL_PROGRESS','VALUE','Abrindo Arquivos no Servidor !!!')
		SETPROPERTY( 'FORM_BARRAPROG','PBGRAVA','VALUE',2 )
		cFILE 	:= cSERVIDOR + 'IORCAME.DBF'
      USE &cFILE ALIAS IORCSRV NEW SHARE
      DbSetIndex(cSERVIDOR+'IORCAME.CDX')
      cFILE 	:= cSERVIDOR + 'ORCAME.DBF'
      USE &CFILE ALIAS ORCSRV NEW SHARE
      DbSetIndex(cSERVIDOR+'ORCAME.CDX')
      EXIT
   ENDIF
ENDDO

SETPROPERTY( 'FORM_BARRAPROG', 'LABEL_PROGRESS','VALUE','Gravando Compra')
SETPROPERTY( 'FORM_BARRAPROG','PBGRAVA','VALUE',3 )

nDESCONTO:= GETPROPERTY('FECHA_VENDA','GBOXDESCONTO','VALUE')
nTOTAL	:= VAL( VIRGULA_TO_PONTO(GETPROPERTY( 'FECHA_VENDA','LBLTOTAL','VALUE')))
nSUBTOTAL:= VAL( VIRGULA_TO_PONTO(GETPROPERTY( 'FECHA_VENDA','LBLTOTAL','VALUE')))
nCOMISSAO:= 0.00

// VERIGICA SE TEM DESCONTO NA VENDA
IF nDESCONTO > 0.00
   NPERD		:= NDESCONTO / ( ( nSUBTOTAL ) / 100 )
   NCOMISSAO:= NCOMISSAO - ( NCOMISSAO * NPERD / 100 )
ENDIF


IF EMPTY( cCODIGO )
	cCODIGO 	:= '000001'
	cNOME		:= 'CONSUMIDOR/BALCAO'
ENDIF

IF cCODIGO == '000001' .AND. EMPTY( cNOME )
	cNOME := 'CONSUMIDOR/BALCAO'
ENDIF

cCODCLI_ := cCODIGO
cNOME		:= ALLTRIM(cNOME)
cFANTASIA:= cNOME 
cM1 		:= cCODCLI_+"-"+cNOME
cM2 		:= cENDCOB
IF EMPTY(cCGC) 
	cM3 	:= ''
ELSE
	cM3 	:= "CPF:"+cCGC+" "+cCIDCOB+"-"+cUFCOB
ENDIF

cM5		:= cBAICOB+'-'+cNUMCOB+'-'+PERS->CODCIDADE+'-'+TIRAPONTO(cCEPCOB)

SETPROPERTY( 'FORM_BARRAPROG', 'LABEL_PROGRESS','VALUE','Gerando Numero do pedido')
SETPROPERTY( 'FORM_BARRAPROG','PBGRAVA','VALUE',4 )
// GRAVANDO DADOS DO PEDIDO DE VENDA
cNUMERO_	:= NUMEROVEN() 
// NESTE PONTO PARA NAO DAR DUPLICIDADE

cCODFUN_ := '00000'+cNUMPDV

CNUMORCTEMP := CNUMERO_
cM4 			:= "PEDIDO:"+ cNUMERO_ + SPACE(10) + "VENDEDOR:"+CCODFUN_

SETPROPERTY( 'FORM_BARRAPROG', 'LABEL_PROGRESS','VALUE','Calculando Totais')
SETPROPERTY( 'FORM_BARRAPROG','PBGRAVA','VALUE',5 )
// SOMA O LUCRO TOTAL
SUM IVT->PRVENDA TO NPRVENDA
SUM IVT->LUCRO_  TO NLUCRO_

// SE A VENDA FOI MENOR DO QUE O VALOR ESPERADO
IF NTOTAL < NPRVENDA
   NLUCRO_ := NLUCRO_ - ( NTOTAL - NPRVENDA )
ENDIF

// SE O VALOR E MENOR DO QUE ZERO NAO CALCULA PORCENTAGEM
IF NPRVENDA > 0.00
   NLUCROP_	:= NLUCRO_ / ( nPRVENDA / 100 )
ENDIF

*---> GRAVANDO ORCAMENTO <---*
nDESCONTO_	:= nDESCONTO
nVALOR_		:= nTOTAL
nVLTOTAL_ 	:= nSUBTOTAL
dDATA_		:= DATASIS
cTIPO			:= cTIPOORC

SETPROPERTY( 'FORM_BARRAPROG', 'LABEL_PROGRESS','VALUE','Gravando Venda')
SETPROPERTY( 'FORM_BARRAPROG','PBGRAVA','VALUE',6 )

ORC->(DBAPPEND())
GRAVA_VAR( 'ORC' )

*---> GRAVANDO ITENS DO ORCAMENTO <---*


IVT->(DBGOTOP())

SETPROPERTY( 'FORM_BARRAPROG','PBGRAVA','RANGEMAX',0 )
SETPROPERTY( 'FORM_BARRAPROG','PBGRAVA','RANGEMAX',IVT->(RECCOUNT()))
DOMETHOD('FORM_BARRAPROG','PBGRAVA','REFRESH')
SETPROPERTY( 'FORM_BARRAPROG', 'LABEL_PROGRESS','VALUE','Gravando Itens da Compra')
																					  
NREG :=0 
WHILE !IVT->(EOF())     

	NREG ++
	
	SETPROPERTY( 'FORM_BARRAPROG','PBGRAVA','RANGEMAX',NREG )
  	// DADOS DO ARQUIVO IVENDAST
   * IGUAL_VAR( 'IVT' )
   SELE IVT 
	FOR NI:= 1 TO FCOUNT() ; &(TYPE(FIELD(NI))+FIELD(NI)) := &(FIELD(NI)) ; NEXT

	*---> GRAVANDO ITENS DO DOCUMENTO <---*
   IORC->(DBAPPEND())
   // GRAVA NO ARQUIVO IORCAME
   CNUMERO_ 	:= CNUMORCTEMP
   CCODPRO_  	:= IVT->CODPRO_
   NLUCRO_   	:= IVT->LUCRO_
   GRAVA_VAR( 'IORC' )

   IVT->(DBSKIP())
   
ENDDO

SETPROPERTY( 'FORM_BARRAPROG','PBGRAVA','RANGEMAX',11)
DOMETHOD('FORM_BARRAPROG','PBGRAVA','REFRESH')
SETPROPERTY( 'FORM_BARRAPROG','PBGRAVA','VALUE',7)

*---> GRAVANDO ORCAMENTO NO SERVIDOR<---*
IGUAL_VAR('ORC')
SELE ORCSRV
DBAPPEND()
GRAVA_VAR( 'ORCSRV')

SETPROPERTY( 'FORM_BARRAPROG','PBGRAVA','VALUE',8)
IORC->(DBGOTOP())
WHILE IORC->(!EOF())
	IGUAL_VAR('IORC')
	IORCSRV->(DBAPPEND())
	GRAVA_VAR('IORCSRV')
	IORC->(DBSKIP())
ENDDO

SETPROPERTY( 'FORM_BARRAPROG','PBGRAVA','VALUE',09)

DBCOMMITALL()
DbUnlockAll()

// FECHA CONEXAO COM ARQUIVOS DO SERVIDOR
SELE ORCSRV
USE
SELE IORCSRV
USE

SETPROPERTY( 'FORM_BARRAPROG','PBGRAVA','VALUE',10)

SELE IORC
ZAP

SELE ORC
ZAP 

SELE IVT
ZAP
SETPROPERTY( 'FORM_BARRAPROG', 'LABEL_PROGRESS','VALUE','Finalizando Compra')
SETPROPERTY( 'FORM_BARRAPROG','PBGRAVA','VALUE',11)
_TOTAL_COMPRA := 0.00
* MSGBOX( 'Venda Gravada Com Sucesso !!! Número: '+CNUMERO_ )


FOCALIZA_APP('DATASAC')
RestauraTela('DATASAC')


/* criar e enviar o cupom nesse ponto
*/ 


SETPROPERTY('FORM_VENDA','TBOX_TOTAL_COMPRA','VALUE',_TOTAL_COMPRA )
SETPROPERTY('FORM_VENDA','LABEL_DESCRICAO_PRODUTO','VALUE','CAIXA LIVRE')
DOMETHOD('FORM_VENDA',	'GRID_VENDAS'	,'DELETEALLITEMS')
DOMETHOD('FORM_VENDA',	'GRID_VENDAS'	,'REFRESH')
DOMETHOD('FORM_VENDA',	'IMGVENDA'		,'REFRESH')
DOMETHOD('FORM_VENDA',	'TBOX_CODIGO'	,'SETFOCUS' )
DOMETHOD('FORM_BARRAPROG'	,'RELEASE')
DOMETHOD('FECHA_VENDA'		,'RELEASE')

RETURN(NIL)
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Funções WAPI no Harbour.

Mensagem por asimoes »

Rubens,

Quando você muda o foco para o programa DATASAC o programa que chamou continua a execução, o fato de mudar o foco não para a execução.

Tem um release no final, será que não é ai o problema?

216 FOCALIZA_APP('DATASAC')
217 RestauraTela('DATASAC')
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder