Funções WAPI no Harbour.
Moderador: Moderadores
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Funções WAPI no Harbour.
O Nome do "Sistema" tem que ser o que aparece na barra de título da janela do seu programa.
Neste exemplo no nome seria "Backup Google Drive - PCToledo Sistemas"
Abraços,
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
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
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Funções WAPI no Harbour.
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.
o Código
Obrigado
Rubens
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.
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
Rubens
"Eu e minha casa servimos ao Senhor e você
"
Funções WAPI no Harbour.
Rubens,
Bom dia,
Eu usso essa função:
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)
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)
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Funções WAPI no Harbour.
ASimoes...
Eu uso a Minigui.
Deu erros na compilação daí fiz algumas mudanças e consegui compilar
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 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ó 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ê
"
Funções WAPI no Harbour.
Rubens,
O esc é na caixa de dialog de confirmação?
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)
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)
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Funções WAPI no Harbour.
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 )
Daí abre o programa DATASAC
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.
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.
Rubens
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 )
Código: Selecionar todos
FOCALIZA_APP('DATASAC')
RestauraTela('DATASAC')
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)
"Eu e minha casa servimos ao Senhor e você
"
Funções WAPI no Harbour.
A janela do PDV em minigui é modal?
Eu vi que sim, passa ela para child para ver o que acontece.
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)
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)
Funções WAPI no Harbour.
Tem um exemplo na minigui D:\minigui\Samples\BASIC\MixedMode
Acho que pode te ajudar.
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)
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)
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Funções WAPI no Harbour.
Asimoes....
A solução lá é bem parecida com a que já estamos tentando...
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
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 NilRubens
"Eu e minha casa servimos ao Senhor e você
"
Funções WAPI no Harbour.
Olá Rubens,
Como é feito a chamada do executável console?
Ele já está rodando, ou é feito um execute do programa em minigui.
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)
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)
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Funções WAPI no Harbour.
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
É 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ê
"
Funções WAPI no Harbour.
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.
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)
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)
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Funções WAPI no Harbour.
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.
Função grava venda que chama a barra de progresso
Formulário Barra de Progresso
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.
Rubens
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)
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
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)
"Eu e minha casa servimos ao Senhor e você
"
Funções WAPI no Harbour.
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')
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)
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)