jhilbert Posted August 7, 2008 Report Share Posted August 7, 2008 Olá Pessoal, Mais uma vez venho solicitar a ajuda em relação ao retorno do FOCO na Dialog... É o seguinte... Tenho uma dialog que nela são realizadas as vendas... quando finalizada a operação um BUTTON chama uma dialog para Relatórios... e nessa dialog... comando a impressão e é mostrado o preview... ai que está o problema (SE na dialog de relatorios colocar o SETFOCUS para retornar para a tela de venda o meu preview fica por tras da tela de venda ai tenho que usar ALT+TAB.. se não as vezes perde o foco na tela de venda... Segue as rotinas com as dialogs de venda/ relatorios e um relatorio de exemplo... Funçà o da tela de venda............ ********************************** FUNCTION TransOP2(cOrig,oLbx,oDlg) LOCAL oDlgMan,oDlgBped,oCbxMan,oLbxMan,lSairOp2:=.f. PRIVATE oBarras,oQuant,oCliNome,oNumtran,oVenNome,oPronome,oPromarca,oProcor,oRef,oTitem,oTprod,oTdesc,oTvend,ocBarras,oQtat PRIVATE oBtop1,oBtop2,oBtop3,oBtop4,oBtop5,oBtop6,oBtop7,cSTpedido,cCodigo,status,cMens PRIVATE cNumtran,cCliecod,cDTope,cTPope,cRadop,cTprod,cTdesc,cTvend,cTitem,cVencod,cVenNome,cSitboleto PRIVATE cCBboleto,cLetra,cDTvencim,cVL_parc,cVL_juros,cVL_pago,cDTpago,cSitparc,cOpe,cTpv PRIVATE cCBarras,cPronome,cPromarca,cProcor,cRef,cQtat,cQuant,cPrv,cPrv2,cPrf,cVL_total PRIVATE cClinome,cApelido,cEnd,cPessoa,cCidnome,cCidcod,cBairro,cUf,cLimite,cLimiteF,cDebito,cCredito,cSaldo,cTparc,cVLent,cNparc,cDiaB,cTppag,cFone PRIVATE cParc1,cParc2,cParc3,cParc4,cParc5,cParc6,cParc7,cParc8,cParc9,cParc10,cParc11,cParc12 PRIVATE cParc13,cParc14,cParc15,cParc16,cParc17,cParc18,cParc19,cParc20,cParc21,cParc22,cParc23,cParc24 PRIVATE cDarc1,cDarc2,cDarc3,cDarc4,cDarc5,cDarc6,cDarc7,cDarc8,cDarc9,cDarc10,cDarc11,cDarc12 PRIVATE cDarc13,cDarc14,cDarc15,cDarc16,cDarc17,cDarc18,cDarc19,cDarc20,cDarc21,cDarc22,cDarc23,cDarc24 PUBLIC cDesc ************************** cMens := "Número da Operação do Pedido" cSTpedido := .f. status := .F. cTitem := 0 cOpe := 2 cTpv := 1 cQuant := 0 cPrv2 := 0 cLimite := 0 cLimiteF := 0 cFone := SPACE(11) ************************** IF (!Use_arq("Ittemp",.T.,.F.,.T.,"itt")) SELECT mov oDlg:SetFocus() RETURN .t. ENDIF **** IF cOrig="V" .OR. cOrig="O" itt->(dbGoBottom()) cTpv := 1 cNumtran := StrZero(NOVOCOD(cCodigo,8),8) cCliecod := SPACE(08) cClinome := SPACE(40) cDTope := cDTSistem cDTvencim := cDTpago:= SPACE(10) cTpope := SPACE(02) iif( cOrig="V",cRadop:= 2,cRadop:= 3) cTprod := cTdesc:= cTvend:= cTitem:= cVL_parc:= cVL_juros:= cVL_pago:= 0.00 cVencod := "001" Avende(cVencod) cVenNome2 := cVenNome cSitparc := cSitboleto:= SPACE(01) cCBboleto := SPACE(20) cLetra := cTppag:= SPACE(02) cCBarras := SPACE(13) cPronome := SPACE(50) cPromarca := cProcor:= SPACE(20) cRef := SPACE(10) cQtat := cPrf:= cPrv:= cDesc:= cVL_total:= 0.00 **************** ELSEIF cOrig="P" cStage := "1" cTpv := 4 cNumtran := SPACE(8) cDTope := cDTSistem cCliecod := SPACE(08) cClinome := SPACE(40) cDTvencim := cDTpago:= SPACE(10) cTpope := "VP" cRadop := 2 cTprod := cTdesc:= cTvend:= cTitem:= cVL_parc:= cVL_juros:= cVL_pago:= 0.00 cVencod := "001" Avende(cVencod) cVenNome2 := cVenNome cSitparc := cSitboleto:= SPACE(01) cCBboleto := SPACE(20) cLetra := cTppag:= SPACE(02) cCBarras := SPACE(13) cPronome := SPACE(50) cPromarca := cProcor:= SPACE(20) cRef := SPACE(10) cQtat := cPrf:= cPrv:= cDesc:= cVL_total:= 0.00 ****** DEFINE DIALOG oDlgBped RESOURCE "BOXINF3" COLORS CLR_LWHITE,CLR_LGREEN OF oWnd oDlgBped:Cargo:=.F. oDlgBped:cCaption:= "Busca Pedidos..." REDEFINE VBOX label "Informação" ID 101 OF oDlgBped Esquerda Color CLR_AZUL,CLR_LGRAY FONT oFont14 REDEFINE ICON oIco ID 102 RESOURCE "islup" OF oDlgBped REDEFINE SAY oSay VAR cMens ID 103 OF oDlgBped COLORS CLR_BLACK,CLR_LGRAY font oFont15b REDEFINE vget oNumtran VAR cNumtran PICTURE "99999999" ID 104 OF oDlgBped color get_Iler,get_Fler font oFont15b FileAction "Lupa" Action BuscaPedido(oDlgBped) Valid ((AchaPedido(cNumtran)) .OR. Empty(cNumtran)) REDEFINE vBtnBmp oBtop1 ID 500 BitMaps {"BTOK",3} OF oDlgBped Action ( oDlgBped:Cargo:=.T., oDlgBped:End()) ToolTip "Confirmação Pedido!" NoBorder CentraBmp REDEFINE vBtnBmp oBtop2 ID 502 BitMaps {"BTCAN",3} OF oDlgBped Action ( oDlgBped:End()) ToolTip "Cancela Opção!" NoBorder CentraBmp ACTIVATE DIALOG oDlgBped CENTERED if oDlgBped:Cargo if Empty(cNumtran) itt->(DbCloseArea()) cStage:="0" SELECT mov oDlg:SetFocus() RETURN .t. endif ** // Abertura de ARQUIVOS IF (!Use_arq("itembol",.T.,.T.,.T.,"ite")) itt->(DbCloseArea()) cStage:="0" SELECT mov oDlg:SetFocus() RETURN .t. ENDIF SELECT ite ite->(dbSetOrder("numero")) ite->(dbGoTop()) if dbSeek( cNumtran ) INFO2("Pedido "+cNumtran+" com VENDA FINALIZADA."+CRLF+"Ou não encontrado!! Cancelando...","Informa!","ISINF") itt->(DbCloseArea()) ite->(DbCloseArea()) cStage:="0" SELECT mov oDlg:SetFocus() RETURN .t. else ite->(DbCloseArea()) endif else itt->(DbCloseArea()) cStage:="0" SELECT mov oDlg:SetFocus() RETURN .t. endif SELECT itt itt->(dbSetOrder("numero")) itt->(dbGoTop()) if dbSeek( cNumtran ) cCliecod:= itt->cliecod while !EOF() IF itt->numtran=cNumtran .AND. cOrig="P" cTprod+= (itt->prv*itt->quant) cTdesc+= (itt->desc*itt->quant) cTvend:= cTprod-cTdesc cTitem++ SKIP ELSE EXIT ENDIF enddo else INFO4("Boleto não encontrado!","Aviso!","ISSTO") itt->(DbCloseArea()) cStage:="0" SELECT mov oDlg:SetFocus() RETURN .t. endif ELSEIF Blq_Reg() && Inicializa variaveis para alteracao Igual_var() ELSE cStage:="0" itt->(DbCloseArea()) SELECT mov oDlg:SetFocus() RETURN .t. ENDIF SELECT itt itt->(dbSetOrder("numero")) itt->(ordScope(0,cNumtran)) itt->(ordScope(1,cNumtran)) itt->(dbGoTop()) ******************************************** ** // Define janela p/interacao com OPERACAO DEFINE DIALOG oDlgMan RESOURCE "TELATRA3" COLORS CLR_LWHITE,CLR_LGREEN OF oWnd oDlgMan:Cargo:=.F. oDlgMan:cCaption:= Iif(cOrig="V","Venda","Orçamento")+" de Produtos" DEFINE FONT oFont15b name "Arial" size 0,-15 BOLD SET FONT OF oDlgMan TO oFont15b *** REDEFINE SAY ID 112 OF oDlgMan COLORS CLR_BLACK,CLR_LGREEN font oFont15b REDEFINE vget cDTope PICTURE '99/99/9999' ID 101 OF oDlgMan color get_Iler,get_Fler font oFont15b WHEN .F. REDEFINE SAY ID 4001 OF oDlgMan COLORS CLR_BLACK,CLR_LGREEN font oFont15b REDEFINE vget cOperador PICTURE '@!' ID 4002 OF oDlgMan color get_Iler,get_Fler font oFont15b WHEN .F. REDEFINE SAY ID 113 OF oDlgMan COLORS CLR_BLACK,CLR_LGREEN font oFont15b REDEFINE COMBOBOX oCbxMan VAR cVenNome ITEMS PEGA(cVennome,"vendedor","vennome"); ID 102 OF oDlgMan; ON CHANGE ( cVenNome2:= cVenNome, oCbxMan:Refresh() ) ; VALID ( If( ! oCbxMan:Find( oCbxMan:oGet:GetText() ),; oCbxMan:Add( oCbxMan:oGet:GetText() ),), .t. ) REDEFINE VBOX label "Operação" ID 114 OF oDlgMan Esquerda Color CLR_AZUL,CLR_LGRAY FONT oFont14 REDEFINE RADIO oRad VAR cRadop ID 104,105,106 OF oDlgMan COLOR CLR_BLACK,CLR_LGRAY WHEN cStage="0" SELECT itt itt->(dbGoTop()) REDEFINE LISTBOX oLbxMan ; FIELDS itt->cbarras,itt->ref,itt->pronome,STR(itt->quant,9,2),STR(itt->prv,9,2),STR(itt->vl_total,9,2) ; SIZES 95,75,265,65,70,70 ; HEADERS "Cod_Barras","Referência","Discriminação","Quant","Prc_Unit","Vl_Total" ; FONT oFont12b ; ID 103 OF oDlgMan *** CORLBCLI(oLbxMan,"{ .F., .F., .F., .T., .T., .T. }") REDEFINE SAY ID 115 OF oDlgMan COLORS CLR_BLACK,CLR_LGREEN font oFont15b REDEFINE vget oTitem VAR cTitem PICTURE '999999.99' ID 107 OF oDlgMan color get_Iler,get_Fler font oFont22b WHEN .F. REDEFINE SAY ID 116 OF oDlgMan COLORS CLR_BLACK,CLR_LGREEN font oFont15b REDEFINE vget oTprod VAR cTprod PICTURE '999,999.99' ID 108 OF oDlgMan color get_Iler,get_Fler font oFont22b WHEN .F. REDEFINE SAY ID 117 OF oDlgMan COLORS CLR_BLACK,CLR_LGREEN font oFont15b REDEFINE vget oTdesc VAR cTdesc PICTURE '999,999.99' ID 109 OF oDlgMan color get_Iler,get_Fler font oFont22b WHEN .F. REDEFINE SAY ID 118 OF oDlgMan COLORS CLR_BLACK,CLR_LGREEN font oFont15b REDEFINE vget oTvend VAR cTvend PICTURE '999,999.99' ID 110 OF oDlgMan color get_Iler,get_Fler font oFont22b WHEN .F. REDEFINE VBOX label "Código de Barras" ID 4003 OF oDlgMan Esquerda Color CLR_AZUL,CLR_LGRAY FONT oFont14 REDEFINE VGET oBarras VAR cCbarras PICTURE "9999999999999" ID 4004 OF oDlgMan color get_Iler,get_Fler font oFont15b WHEN (!Empty(cVenNome) .AND. (cStage="1" .OR. cStage="0") ) update FileAction "Lupa" Action BuscaPro("2",oDlgMan,oLbxMan,1) VALID (Empty(cCbarras) .OR. (Achapro(cCbarras,"2",oDlgMan,oLbxMan,1))) REDEFINE vBtnBmp oBtop3 ID 542 BitMaps {"BTALP",3} OF oDlgMan Action (oDlgMan:End()) WHEN .f. update ToolTip "Altera (quantidade/Preço) do Produto em venda/Orçado!" NoBorder CentraBmp REDEFINE vBtnBmp oBtop4 ID 527 BitMaps {"BTEXP",3} OF oDlgMan Action (Proins ("E",oDlgMan,oLbxMan )) WHEN !Empty(cVenNome) .AND. (cStage="1" .AND. cTitem>0 ) update ToolTip "Exclui Produto da Lista de Venda/Orçamento!" NoBorder CentraBmp REDEFINE vBtnBmp oBtop5 ID 525 BitMaps {"BTFIO",3} OF oDlgMan Action (Finaliza (cTpv,cRadop,OLbxMan,oDlgMan ) ) WHEN !Empty(cVenNome) .AND. (cStage="1" .AND. cTitem>0 ) update ToolTip "Finaliza Operação de Venda/Orçamento!" NoBorder CentraBmp REDEFINE vBtnBmp oBtop6 ID 528 BitMaps {"BTERE",3} OF oDlgMan Action (PrintVenda("P",cNumtran,cTitem,oDlgMan) ) WHEN cStage="5" update ToolTip "Emisão de Relatórios (Recibo,Carnês,Duplicatas...)" NoBorder CentraBmp REDEFINE vBtnBmp oBtop7 ID 501 BitMaps {"BTSAI",3} OF oDlgMan Action (lSairOp2:=.t., oDlgMan:Cargo:=.T., oDlgMan:End()) WHEN cTitem=0 .OR. cStage="5" update ToolTip "Sair de tela de Venda/Orçamento!" NoBorder CentraBmp ACTIVATE DIALOG oDlgMan CENTER VALID lSairOp2 on init ( ShowWindow( oDlgMan:hWnd, 3 ) ) ****************************** ** // UpDate no Banco de dados IF oDlgMan:Cargo IF cOrig="A" SELECT mov Repl_Var(cData) ENDIF ClrBuffer("&cArq","mov") ENDIF cStage:="0" itt->(ordScope(0,)) itt->(ordScope(1,)) itt->(DbCloseArea()) SELECT mov mov->(DbCommit()) mov->(DbUnLock()) mov->(dbSetOrder("dtmov")) mov->(ordScope(0,cDTSistem)) mov->(ordScope(1,cDTSistem)) mov->(dbGoTop()) oLbx:UpStable() oLbx:Refresh() oDlg:SetFocus() RETURN NIL Função da Tela de Relatorios...... ************************************************** FUNCTION PrintVenda(cOrig,cNumtran,cTitem,oDlgMan) LOCAL oDlgPes,oRad,cRad:=cEPrint,oVal,oBtprv1,oBtprv2,cValues:=1,cVlpro:=0 *** if cOrig="T" SELECT ite ite->(ordScope(0,)) ite->(ordScope(1,)) ite->(dbGoTop()) else SELECT itt itt->(ordScope(0,)) itt->(ordScope(1,)) itt->(dbGoTop()) endif *** IF cOpe=4 IF (!Use_arq("parcela",.T.,.T.,.T.,"par")) RETURN .t. ENDIF ELSE IF (!Use_arq("itembol",.T.,.T.,.T.,"ite")).OR.(!Use_arq("boleto",.T.,.T.,.T.,"bol")).OR.; (!Use_arq("parcela",.T.,.T.,.T.,"par")).OR.(!Use_arq("clientes",.T.,.T.,.T.,"cli")) RETURN .t. ENDIF ENDIF ** DEFINE DIALOG oDlgPes RESOURCE "TELAPRI1" COLORS CLR_LWHITE,CLR_LGREEN OF oWnd // Define janela p/interacao oDlgPes:Cargo:=.F. oDlgPes:cCaption:= "Relatórios de Venda" DEFINE FONT oFont15b name "Arial" size 0,-15 BOLD SET FONT OF oDlgPes TO oFont15b *** REDEFINE VBOX label "Tipo de Impressão" ID 108 OF oDlgPes Esquerda Color CLR_AZUL,CLR_LGRAY FONT oFont14 REDEFINE RADIO ORad VAR cRad ID 105,106,107 OF oDlgPes COLOR CLR_BLACK,CLR_LGRAY REDEFINE VBOX label "Relatórios" ID 109 OF oDlgPes Esquerda Color CLR_AZUL,CLR_LGRAY FONT oFont14 REDEFINE RADIO oVal VAR cValues ID 101,102,103,104 OF oDlgPes COLOR CLR_BLACK,CLR_LGRAY REDEFINE vBtnBmp oBtPrv1 ID 500 BitMaps {"BTOK",3} OF oDlgPes Action ( oDlgPes:Cargo:= .T., oDlgPes:End() ) ToolTip "Confirma opção selecionada!" NoBorder CentraBmp && incluir function de verificacao de cliente REDEFINE vBtnBmp oBtPrv2 ID 502 BitMaps {"BTCAN",3} OF oDlgPes Action ( FechaArqs1(), oDlgPes:End(),oDlgMan:SetFocus() ) ToolTip "Cancela opção selecionada!" NoBorder CentraBmp ACTIVATE DIALOG oDlgPes CENTER on init ( ShowWindow( oDlgPes:oWnd, 1 ) ) IF oDlgPes:Cargo DO CASE CASE cValues=1 if cRad=1 if cRadop=3 MiniOrcamento(cNumtran,cTitem,cClinome,cEnd,cCidnome,cUf,cBairro,cFone) else MiniRecibo(cNumtran,cTitem,cClinome,cEnd,cCidnome,cUf,cBairro,cFone) endif elseif cRad=2 if cRadop=3 TxtOrcamento(1,cNumtran,cTitem,cClinome,cEnd,cCidnome,cUf,cBairro,cFone) else TxtRecibo(1,cNumtran,cTitem,cClinome,cEnd,cCidnome,cUf,cBairro,cFone) endif else if cRadop=3 RelOrcamento(cNumtran,cTitem,cClinome,cEnd,cCidnome,cUf,cBairro,cFone) else RelRecibo(cNumtran,cTitem,cClinome,cEnd,cCidnome,cUf,cBairro,cFone) endif endif CASE cValues=2 if cRadop#2 INFO4("Emissão de Duplicata somente na Venda a Prazo!","Informa!","ISINF") FechaArqs1() oDlgPes:End() CursorArrow() endif if cRad=1 INFO4("Relatório não disponÃvel para esta Impressora!","Informa!","ISINF") elseif cRad=2 TxtDuplicata(1) && Promissória Franklin Joias && TXTDup12(oDlgMan,.T.) && Promissoria Casa Shopping e Boticario else RelDuplic() && Promissória endif CASE cValues=3 if cRad=1 INFO4("Relatório não disponÃvel para esta Impressora!","Informa!","ISINF") elseif cRad=2 TxtCarne(1) && Carne COM moldura && TXTCarne1(1) && Carne SEM moldura else RelCarne() && Carne endif CASE cValues=4 INFO4("Relatório não disponÃvel para esta Impressora!","Informa!","ISINF") ENDCASE FechaArqs1() oDlgPes:End() ENDIF CursorArrow() if cOrig="T" SELECT ite ite->(dbSetOrder("numero")) ite->(ordScope(0,cNumtran)) ite->(ordScope(1,cNumtran)) ite->(dbGoTop()) else SELECT itt itt->(dbSetOrder("numero")) itt->(ordScope(0,cNumtran)) itt->(ordScope(1,cNumtran)) itt->(dbGoTop()) endif RETURN nil Exemplo de relatorio.... **************************************************************************** Function RelRecibo(cNumtran,cTitem,cClinome,cEnd,cCidnome,cUf,cBairro,cFone) **************************************************************************** PRIVATE filtro:=SPACE(20) ******************** rot1 := 'TRA_002' pag := 0 filtro := "ite->(numtran)=cNumTran" iif(cRadop=2, rot2:="VENDA A PRAZO",rot2:="VENDA À VISTA") iif(cRadop=2, btitulo := {||r_0002()},btitulo := {||r_0002a()}) ***** CursorWait() SELECT ite ite->(dbSetOrder("numero")) ite->(dbGoTop()) **** if !rel_ini() return nil endif **** if dbSeek( cNumTran ) do while ite->(!Eof()) if &filtro Box (linha,lmargem+0.3, linha+lsalto,lmargem+2.7) Box (linha,lmargem+2.7, linha+lsalto,lmargem+4.7) Box (linha,lmargem+4.7, linha+lsalto,lmargem+13.0) Box (linha,lmargem+13.0,linha+lsalto,lmargem+14.7) Box (linha,lmargem+14.7,linha+lsalto,lmargem+16.5) Box (linha,lmargem+16.5,linha+lsalto,nhori-0.5) say_e(linha,lmargem+0.3, linha+lsalto,lmargem+2.7, ite->cbarras,oFnt_rel8) say_e(linha,lmargem+2.7, linha+lsalto,lmargem+4.7, ite->ref ,oFnt_rel8) Say_e(linha,lmargem+4.7, linha+lsalto,lmargem+13.0,RTRIM(SUBSTR(ite->pronome,1,30))+" "+RTRIM(SUBSTR(ite->promarca,1,10))+" "+RTRIM(SUBSTR(ite->procor,1,10)),ofnt_rel8) cVlpro:= (ite->(prv)-ite->(desc)) && Com Desconto por Produto && cVlpro:= ite->(prv) && Desconto Geral Say_d(linha,lmargem+13.0,linha+lsalto,lmargem+14.7,Tran(cVlpro ,"999,999.99") ,ofnt_rel8) Say_d(linha,lmargem+14.7,linha+lsalto,lmargem+16.5,Tran(ite->quant ,"99999999.99"),ofnt_rel8) Say_d(linha,lmargem+16.5,linha+lsalto,nhori-0.5, Tran(ite->vl_total,"9,999,999.99") ,ofnt_rel8) linha = linha + lsalto ite->(dbskip(1)) if linha > nvert -1.5 rel_continua() SysRefresh() endif else ite->(dbskip(1)) LOOP endif enddo SELECT bol bol->(dbSetOrder("numero")) bol->(dbGoTop()) if dbSeek( cNumTran ) if linha > nvert -1.5 rel_continua() SysRefresh() endif box_d(linha,lmargem+13.0,linha+lsalto,nhori-0.5) Box (linha,lmargem+13.0,linha+lsalto,lmargem+16.5) Box (linha,lmargem+16.5,linha+lsalto,nhori-0.5) Say_d(linha,lmargem+13.0,linha+lsalto,lmargem+16.5,"TOTAL DA VENDA(=)",ofnt_rel9b) Say_d(linha,lmargem+16.5,linha+lsalto,nhori-0.5, Tran(cTprod,"9,999,999.99"),ofnt_rel8b) linha = linha + lsalto if linha > nvert -1.5 rel_continua() SysRefresh() endif Box (linha,lmargem+13.0,linha+lsalto,lmargem+16.5) Box (linha,lmargem+16.5,linha+lsalto,nhori-0.5) Say_d(linha,lmargem+13.0,linha+lsalto,lmargem+16.5,"TOTAL DE DESCONTOS(-)",ofnt_rel9b) Say_d(linha,lmargem+16.5,linha+lsalto,nhori-0.5, Tran(cTdesc,"9,999,999.99") ,ofnt_rel8) linha = linha + lsalto if linha > nvert -1.5 rel_continua() SysRefresh() endif if cRadop=2 Box (linha,lmargem+13.0,linha+lsalto,lmargem+16.5) Box (linha,lmargem+16.5,linha+lsalto,nhori-0.5) Say_d(linha,lmargem+13.0,linha+lsalto,lmargem+16.5,"VALOR DE ENTRADA(-)",ofnt_rel9b) Say_d(linha,lmargem+16.5,linha+lsalto,nhori-0.5, Tran(cVlent,"9,999,999.99") ,ofnt_rel8) linha = linha + lsalto if linha > nvert -1.5 rel_continua() SysRefresh() endif box_d(linha,lmargem+13.0,linha+lsalto,nhori-0.5) Box (linha,lmargem+13.0,linha+lsalto,lmargem+16.5) Box (linha,lmargem+16.5,linha+lsalto,nhori-0.5) Say_d(linha,lmargem+13.0,linha+lsalto,lmargem+16.5,"TOTAL A PAGAR(=)",ofnt_rel9b) Say_d(linha,lmargem+16.5,linha+lsalto,nhori-0.5, Tran(cTparc,"9,999,999.99") ,ofnt_rel9b) else box_d(linha,lmargem+13.0,linha+lsalto,nhori-0.5) Box (linha,lmargem+13.0,linha+lsalto,lmargem+16.5) Box (linha,lmargem+16.5,linha+lsalto,nhori-0.5) Say_d(linha,lmargem+13.0,linha+lsalto,lmargem+16.5,"TOTAL A PAGAR(=)",ofnt_rel9b) Say_d(linha,lmargem+16.5,linha+lsalto,nhori-0.5, Tran(cTvend,"9,999,999.99") ,ofnt_rel10b) endif linha = linha + lsalto else rel_fim() Info4("Boleto não encontrado!","Aviso!!","ISSTOP") RETURN nil endif if cRadop=2 SELECT par par->(dbSetOrder("numero")) par->(dbGoTop()) if dbSeek( cNumTran ) box_d(linha,lmargem+0.3, linha+lsalto,lmargem+9.0) Box (linha,lmargem+0.3, linha+lsalto,lmargem+1.5) Box (linha,lmargem+1.5, linha+lsalto,lmargem+3.5) Box (linha,lmargem+3.5, linha+lsalto,lmargem+5.5) Box (linha,lmargem+5.5, linha+lsalto,lmargem+9.0) say_e(linha,lmargem+0.3, linha+lsalto,lmargem+1.5, "Parcela",oFnt_rel9b) say_e(linha,lmargem+1.5, linha+lsalto,lmargem+3.5, "Vencimento",oFnt_rel9b) Say_e(linha,lmargem+3.5, linha+lsalto,lmargem+5.5, "Valor R$",ofnt_rel9b) Say_e(linha,lmargem+5.5, linha+lsalto,lmargem+9.0, "Situação",ofnt_rel9b) box_d(linha,lmargem+9.0, linha+lsalto,lmargem+9.3) box (linha,lmargem+9.0, linha+lsalto,lmargem+9.3) *** && segunda coluna parcelas box_d(linha,lmargem+9.3, linha+lsalto,nhori-0.5) Box (linha,lmargem+9.3, linha+lsalto,lmargem+10.5) Box (linha,lmargem+10.5,linha+lsalto,lmargem+12.5) Box (linha,lmargem+12.5,linha+lsalto,lmargem+14.5) Box (linha,lmargem+14.5,linha+lsalto,nhori-0.5) say_e(linha,lmargem+9.3, linha+lsalto,lmargem+10.5,"Parcela",oFnt_rel9b) say_e(linha,lmargem+10.5,linha+lsalto,lmargem+12.5,"Vencimento",oFnt_rel9b) Say_e(linha,lmargem+12.5,linha+lsalto,lmargem+14.5,"Valor R$",ofnt_rel9b) Say_e(linha,lmargem+14.5,linha+lsalto,nhori-0.5, "Situação",ofnt_rel9b) linha := linha + lsalto do while par->(!Eof()) if par->(numtran)=cNumTran SysRefresh() Box (linha,lmargem+0.3, linha+lsalto,lmargem+1.5) Box (linha,lmargem+1.5, linha+lsalto,lmargem+3.5) Box (linha,lmargem+3.5, linha+lsalto,lmargem+5.5) Box (linha,lmargem+5.5, linha+lsalto,lmargem+9.0) say_e(linha,lmargem+0.3, linha+lsalto,lmargem+1.5, Tran(par->letra,"99"),oFnt_rel10) say_e(linha,lmargem+1.5, linha+lsalto,lmargem+3.5, Tran(par->dtvencim,"99/99/9999"),oFnt_rel10) Say_d(linha,lmargem+3.5, linha+lsalto,lmargem+5.5, Tran(par->vl_parc,"999,999.99") ,ofnt_rel10) Say_e(linha,lmargem+5.5, linha+lsalto,lmargem+9.0, iif(par->(sitparc)="D","Devedor","Quitado"),ofnt_rel10) *** par->(dbskip()) if par->(numtran)=cNumTran box_d(linha,lmargem+9.0, linha+lsalto,lmargem+9.3) box (linha,lmargem+9.0, linha+lsalto,lmargem+9.3) Box (linha,lmargem+9.3, linha+lsalto,lmargem+10.5) Box (linha,lmargem+10.5,linha+lsalto,lmargem+12.5) Box (linha,lmargem+12.5,linha+lsalto,lmargem+14.5) Box (linha,lmargem+14.5,linha+lsalto,nhori-0.5) say_e(linha,lmargem+9.3, linha+lsalto,lmargem+10.5,Tran(par->letra,"99"),oFnt_rel10) say_e(linha,lmargem+10.5,linha+lsalto,lmargem+12.5,Tran(par->dtvencim,"99/99/9999"),oFnt_rel10) Say_d(linha,lmargem+12.5,linha+lsalto,lmargem+14.5,Tran(par->vl_parc,"999,999.99") ,ofnt_rel10) Say_e(linha,lmargem+14.5,linha+lsalto,nhori-0.5, iif(par->(sitparc)="D","Devedor","Quitado"),ofnt_rel10) par->(dbskip()) else box_d(linha,lmargem+9.0, linha+lsalto,lmargem+9.3) box (linha,lmargem+9.0, linha+lsalto,lmargem+9.3) Box (linha,lmargem+9.3, linha+lsalto,lmargem+10.5) Box (linha,lmargem+10.5,linha+lsalto,lmargem+12.5) Box (linha,lmargem+12.5,linha+lsalto,lmargem+14.5) Box (linha,lmargem+14.5,linha+lsalto,nhori-0.5) say_e(linha,lmargem+9.3, linha+lsalto,lmargem+10.5,"**" ,oFnt_rel10) say_e(linha,lmargem+10.5,linha+lsalto,lmargem+12.5,"**********" ,oFnt_rel10) Say_d(linha,lmargem+12.5,linha+lsalto,lmargem+14.5,"**********" ,ofnt_rel10) Say_e(linha,lmargem+14.5,linha+lsalto,nhori-0.5, "*******" ,ofnt_rel10) endif linha := linha + lsalto if linha > nvert -1.5 rel_continua() SysRefresh() endif else par->(dbskip(1)) loop endif enddo */ else rel_fim() Info4("Parcelas não encontradas!","Aviso!!","ISSTOP") RETURN nil endif endif linha := linha + lsalto say_e(linha,lmargem+0.3, linha+lsalto,lmargem+14.0, "Ass:_______________________________________",oFnt_rel10) linha := linha + lsalto linha := linha + lsalto say_c(linha,lmargem+6.0, linha+lsalto,lmargem+14.0, "*** CUPOM SEM VALIDADE FISCAL ***",oFnt_rel10) linha := linha + lsalto say_c(linha,lmargem+6.0, linha+lsalto,lmargem+14.0, "**** OBRIGADO, VOLTE SEMPRE ****",oFnt_rel10) else rel_fim() Info4("Recibo não encontrado!","Aviso!!","ISSTOP") RETURN nil endif rel_fim() Return nil Valeu a todos!!! JHILBERT FW7.04/BCC5.51/xHarbour0.9971/PellesC/xDEv0.65/vLIB id=code>id=code> Quote Link to comment Share on other sites More sharing options...
jhilbert Posted August 7, 2008 Author Report Share Posted August 7, 2008 Olá Pessoal, Mais uma vez venho solicitar a ajuda em relação ao retorno do FOCO na Dialog... É o seguinte... Tenho uma dialog que nela são realizadas as vendas... quando finalizada a operação um BUTTON chama uma dialog para Relatórios... e nessa dialog... comando a impressão e é mostrado o preview... ai que está o problema (SE na dialog de relatorios colocar o SETFOCUS para retornar para a tela de venda o meu preview fica por tras da tela de venda ai tenho que usar ALT+TAB.. se não as vezes perde o foco na tela de venda... Segue as rotinas com as dialogs de venda/ relatorios e um relatorio de exemplo... Funçà o da tela de venda............ ********************************** FUNCTION TransOP2(cOrig,oLbx,oDlg) LOCAL oDlgMan,oDlgBped,oCbxMan,oLbxMan,lSairOp2:=.f. PRIVATE oBarras,oQuant,oCliNome,oNumtran,oVenNome,oPronome,oPromarca,oProcor,oRef,oTitem,oTprod,oTdesc,oTvend,ocBarras,oQtat PRIVATE oBtop1,oBtop2,oBtop3,oBtop4,oBtop5,oBtop6,oBtop7,cSTpedido,cCodigo,status,cMens PRIVATE cNumtran,cCliecod,cDTope,cTPope,cRadop,cTprod,cTdesc,cTvend,cTitem,cVencod,cVenNome,cSitboleto PRIVATE cCBboleto,cLetra,cDTvencim,cVL_parc,cVL_juros,cVL_pago,cDTpago,cSitparc,cOpe,cTpv PRIVATE cCBarras,cPronome,cPromarca,cProcor,cRef,cQtat,cQuant,cPrv,cPrv2,cPrf,cVL_total PRIVATE cClinome,cApelido,cEnd,cPessoa,cCidnome,cCidcod,cBairro,cUf,cLimite,cLimiteF,cDebito,cCredito,cSaldo,cTparc,cVLent,cNparc,cDiaB,cTppag,cFone PRIVATE cParc1,cParc2,cParc3,cParc4,cParc5,cParc6,cParc7,cParc8,cParc9,cParc10,cParc11,cParc12 PRIVATE cParc13,cParc14,cParc15,cParc16,cParc17,cParc18,cParc19,cParc20,cParc21,cParc22,cParc23,cParc24 PRIVATE cDarc1,cDarc2,cDarc3,cDarc4,cDarc5,cDarc6,cDarc7,cDarc8,cDarc9,cDarc10,cDarc11,cDarc12 PRIVATE cDarc13,cDarc14,cDarc15,cDarc16,cDarc17,cDarc18,cDarc19,cDarc20,cDarc21,cDarc22,cDarc23,cDarc24 PUBLIC cDesc ************************** cMens := "Número da Operação do Pedido" cSTpedido := .f. status := .F. cTitem := 0 cOpe := 2 cTpv := 1 cQuant := 0 cPrv2 := 0 cLimite := 0 cLimiteF := 0 cFone := SPACE(11) ************************** IF (!Use_arq("Ittemp",.T.,.F.,.T.,"itt")) SELECT mov oDlg:SetFocus() RETURN .t. ENDIF **** IF cOrig="V" .OR. cOrig="O" itt->(dbGoBottom()) cTpv := 1 cNumtran := StrZero(NOVOCOD(cCodigo,8),8) cCliecod := SPACE(08) cClinome := SPACE(40) cDTope := cDTSistem cDTvencim := cDTpago:= SPACE(10) cTpope := SPACE(02) iif( cOrig="V",cRadop:= 2,cRadop:= 3) cTprod := cTdesc:= cTvend:= cTitem:= cVL_parc:= cVL_juros:= cVL_pago:= 0.00 cVencod := "001" Avende(cVencod) cVenNome2 := cVenNome cSitparc := cSitboleto:= SPACE(01) cCBboleto := SPACE(20) cLetra := cTppag:= SPACE(02) cCBarras := SPACE(13) cPronome := SPACE(50) cPromarca := cProcor:= SPACE(20) cRef := SPACE(10) cQtat := cPrf:= cPrv:= cDesc:= cVL_total:= 0.00 **************** ELSEIF cOrig="P" cStage := "1" cTpv := 4 cNumtran := SPACE(8) cDTope := cDTSistem cCliecod := SPACE(08) cClinome := SPACE(40) cDTvencim := cDTpago:= SPACE(10) cTpope := "VP" cRadop := 2 cTprod := cTdesc:= cTvend:= cTitem:= cVL_parc:= cVL_juros:= cVL_pago:= 0.00 cVencod := "001" Avende(cVencod) cVenNome2 := cVenNome cSitparc := cSitboleto:= SPACE(01) cCBboleto := SPACE(20) cLetra := cTppag:= SPACE(02) cCBarras := SPACE(13) cPronome := SPACE(50) cPromarca := cProcor:= SPACE(20) cRef := SPACE(10) cQtat := cPrf:= cPrv:= cDesc:= cVL_total:= 0.00 ****** DEFINE DIALOG oDlgBped RESOURCE "BOXINF3" COLORS CLR_LWHITE,CLR_LGREEN OF oWnd oDlgBped:Cargo:=.F. oDlgBped:cCaption:= "Busca Pedidos..." REDEFINE VBOX label "Informação" ID 101 OF oDlgBped Esquerda Color CLR_AZUL,CLR_LGRAY FONT oFont14 REDEFINE ICON oIco ID 102 RESOURCE "islup" OF oDlgBped REDEFINE SAY oSay VAR cMens ID 103 OF oDlgBped COLORS CLR_BLACK,CLR_LGRAY font oFont15b REDEFINE vget oNumtran VAR cNumtran PICTURE "99999999" ID 104 OF oDlgBped color get_Iler,get_Fler font oFont15b FileAction "Lupa" Action BuscaPedido(oDlgBped) Valid ((AchaPedido(cNumtran)) .OR. Empty(cNumtran)) REDEFINE vBtnBmp oBtop1 ID 500 BitMaps {"BTOK",3} OF oDlgBped Action ( oDlgBped:Cargo:=.T., oDlgBped:End()) ToolTip "Confirmação Pedido!" NoBorder CentraBmp REDEFINE vBtnBmp oBtop2 ID 502 BitMaps {"BTCAN",3} OF oDlgBped Action ( oDlgBped:End()) ToolTip "Cancela Opção!" NoBorder CentraBmp ACTIVATE DIALOG oDlgBped CENTERED if oDlgBped:Cargo if Empty(cNumtran) itt->(DbCloseArea()) cStage:="0" SELECT mov oDlg:SetFocus() RETURN .t. endif ** // Abertura de ARQUIVOS IF (!Use_arq("itembol",.T.,.T.,.T.,"ite")) itt->(DbCloseArea()) cStage:="0" SELECT mov oDlg:SetFocus() RETURN .t. ENDIF SELECT ite ite->(dbSetOrder("numero")) ite->(dbGoTop()) if dbSeek( cNumtran ) INFO2("Pedido "+cNumtran+" com VENDA FINALIZADA."+CRLF+"Ou não encontrado!! Cancelando...","Informa!","ISINF") itt->(DbCloseArea()) ite->(DbCloseArea()) cStage:="0" SELECT mov oDlg:SetFocus() RETURN .t. else ite->(DbCloseArea()) endif else itt->(DbCloseArea()) cStage:="0" SELECT mov oDlg:SetFocus() RETURN .t. endif SELECT itt itt->(dbSetOrder("numero")) itt->(dbGoTop()) if dbSeek( cNumtran ) cCliecod:= itt->cliecod while !EOF() IF itt->numtran=cNumtran .AND. cOrig="P" cTprod+= (itt->prv*itt->quant) cTdesc+= (itt->desc*itt->quant) cTvend:= cTprod-cTdesc cTitem++ SKIP ELSE EXIT ENDIF enddo else INFO4("Boleto não encontrado!","Aviso!","ISSTO") itt->(DbCloseArea()) cStage:="0" SELECT mov oDlg:SetFocus() RETURN .t. endif ELSEIF Blq_Reg() && Inicializa variaveis para alteracao Igual_var() ELSE cStage:="0" itt->(DbCloseArea()) SELECT mov oDlg:SetFocus() RETURN .t. ENDIF SELECT itt itt->(dbSetOrder("numero")) itt->(ordScope(0,cNumtran)) itt->(ordScope(1,cNumtran)) itt->(dbGoTop()) ******************************************** ** // Define janela p/interacao com OPERACAO DEFINE DIALOG oDlgMan RESOURCE "TELATRA3" COLORS CLR_LWHITE,CLR_LGREEN OF oWnd oDlgMan:Cargo:=.F. oDlgMan:cCaption:= Iif(cOrig="V","Venda","Orçamento")+" de Produtos" DEFINE FONT oFont15b name "Arial" size 0,-15 BOLD SET FONT OF oDlgMan TO oFont15b *** REDEFINE SAY ID 112 OF oDlgMan COLORS CLR_BLACK,CLR_LGREEN font oFont15b REDEFINE vget cDTope PICTURE '99/99/9999' ID 101 OF oDlgMan color get_Iler,get_Fler font oFont15b WHEN .F. REDEFINE SAY ID 4001 OF oDlgMan COLORS CLR_BLACK,CLR_LGREEN font oFont15b REDEFINE vget cOperador PICTURE '@!' ID 4002 OF oDlgMan color get_Iler,get_Fler font oFont15b WHEN .F. REDEFINE SAY ID 113 OF oDlgMan COLORS CLR_BLACK,CLR_LGREEN font oFont15b REDEFINE COMBOBOX oCbxMan VAR cVenNome ITEMS PEGA(cVennome,"vendedor","vennome"); ID 102 OF oDlgMan; ON CHANGE ( cVenNome2:= cVenNome, oCbxMan:Refresh() ) ; VALID ( If( ! oCbxMan:Find( oCbxMan:oGet:GetText() ),; oCbxMan:Add( oCbxMan:oGet:GetText() ),), .t. ) REDEFINE VBOX label "Operação" ID 114 OF oDlgMan Esquerda Color CLR_AZUL,CLR_LGRAY FONT oFont14 REDEFINE RADIO oRad VAR cRadop ID 104,105,106 OF oDlgMan COLOR CLR_BLACK,CLR_LGRAY WHEN cStage="0" SELECT itt itt->(dbGoTop()) REDEFINE LISTBOX oLbxMan ; FIELDS itt->cbarras,itt->ref,itt->pronome,STR(itt->quant,9,2),STR(itt->prv,9,2),STR(itt->vl_total,9,2) ; SIZES 95,75,265,65,70,70 ; HEADERS "Cod_Barras","Referência","Discriminação","Quant","Prc_Unit","Vl_Total" ; FONT oFont12b ; ID 103 OF oDlgMan *** CORLBCLI(oLbxMan,"{ .F., .F., .F., .T., .T., .T. }") REDEFINE SAY ID 115 OF oDlgMan COLORS CLR_BLACK,CLR_LGREEN font oFont15b REDEFINE vget oTitem VAR cTitem PICTURE '999999.99' ID 107 OF oDlgMan color get_Iler,get_Fler font oFont22b WHEN .F. REDEFINE SAY ID 116 OF oDlgMan COLORS CLR_BLACK,CLR_LGREEN font oFont15b REDEFINE vget oTprod VAR cTprod PICTURE '999,999.99' ID 108 OF oDlgMan color get_Iler,get_Fler font oFont22b WHEN .F. REDEFINE SAY ID 117 OF oDlgMan COLORS CLR_BLACK,CLR_LGREEN font oFont15b REDEFINE vget oTdesc VAR cTdesc PICTURE '999,999.99' ID 109 OF oDlgMan color get_Iler,get_Fler font oFont22b WHEN .F. REDEFINE SAY ID 118 OF oDlgMan COLORS CLR_BLACK,CLR_LGREEN font oFont15b REDEFINE vget oTvend VAR cTvend PICTURE '999,999.99' ID 110 OF oDlgMan color get_Iler,get_Fler font oFont22b WHEN .F. REDEFINE VBOX label "Código de Barras" ID 4003 OF oDlgMan Esquerda Color CLR_AZUL,CLR_LGRAY FONT oFont14 REDEFINE VGET oBarras VAR cCbarras PICTURE "9999999999999" ID 4004 OF oDlgMan color get_Iler,get_Fler font oFont15b WHEN (!Empty(cVenNome) .AND. (cStage="1" .OR. cStage="0") ) update FileAction "Lupa" Action BuscaPro("2",oDlgMan,oLbxMan,1) VALID (Empty(cCbarras) .OR. (Achapro(cCbarras,"2",oDlgMan,oLbxMan,1))) REDEFINE vBtnBmp oBtop3 ID 542 BitMaps {"BTALP",3} OF oDlgMan Action (oDlgMan:End()) WHEN .f. update ToolTip "Altera (quantidade/Preço) do Produto em venda/Orçado!" NoBorder CentraBmp REDEFINE vBtnBmp oBtop4 ID 527 BitMaps {"BTEXP",3} OF oDlgMan Action (Proins ("E",oDlgMan,oLbxMan )) WHEN !Empty(cVenNome) .AND. (cStage="1" .AND. cTitem>0 ) update ToolTip "Exclui Produto da Lista de Venda/Orçamento!" NoBorder CentraBmp REDEFINE vBtnBmp oBtop5 ID 525 BitMaps {"BTFIO",3} OF oDlgMan Action (Finaliza (cTpv,cRadop,OLbxMan,oDlgMan ) ) WHEN !Empty(cVenNome) .AND. (cStage="1" .AND. cTitem>0 ) update ToolTip "Finaliza Operação de Venda/Orçamento!" NoBorder CentraBmp REDEFINE vBtnBmp oBtop6 ID 528 BitMaps {"BTERE",3} OF oDlgMan Action (PrintVenda("P",cNumtran,cTitem,oDlgMan) ) WHEN cStage="5" update ToolTip "Emisão de Relatórios (Recibo,Carnês,Duplicatas...)" NoBorder CentraBmp REDEFINE vBtnBmp oBtop7 ID 501 BitMaps {"BTSAI",3} OF oDlgMan Action (lSairOp2:=.t., oDlgMan:Cargo:=.T., oDlgMan:End()) WHEN cTitem=0 .OR. cStage="5" update ToolTip "Sair de tela de Venda/Orçamento!" NoBorder CentraBmp ACTIVATE DIALOG oDlgMan CENTER VALID lSairOp2 on init ( ShowWindow( oDlgMan:hWnd, 3 ) ) ****************************** ** // UpDate no Banco de dados IF oDlgMan:Cargo IF cOrig="A" SELECT mov Repl_Var(cData) ENDIF ClrBuffer("&cArq","mov") ENDIF cStage:="0" itt->(ordScope(0,)) itt->(ordScope(1,)) itt->(DbCloseArea()) SELECT mov mov->(DbCommit()) mov->(DbUnLock()) mov->(dbSetOrder("dtmov")) mov->(ordScope(0,cDTSistem)) mov->(ordScope(1,cDTSistem)) mov->(dbGoTop()) oLbx:UpStable() oLbx:Refresh() oDlg:SetFocus() RETURN NIL Função da Tela de Relatorios...... ************************************************** FUNCTION PrintVenda(cOrig,cNumtran,cTitem,oDlgMan) LOCAL oDlgPes,oRad,cRad:=cEPrint,oVal,oBtprv1,oBtprv2,cValues:=1,cVlpro:=0 *** if cOrig="T" SELECT ite ite->(ordScope(0,)) ite->(ordScope(1,)) ite->(dbGoTop()) else SELECT itt itt->(ordScope(0,)) itt->(ordScope(1,)) itt->(dbGoTop()) endif *** IF cOpe=4 IF (!Use_arq("parcela",.T.,.T.,.T.,"par")) RETURN .t. ENDIF ELSE IF (!Use_arq("itembol",.T.,.T.,.T.,"ite")).OR.(!Use_arq("boleto",.T.,.T.,.T.,"bol")).OR.; (!Use_arq("parcela",.T.,.T.,.T.,"par")).OR.(!Use_arq("clientes",.T.,.T.,.T.,"cli")) RETURN .t. ENDIF ENDIF ** DEFINE DIALOG oDlgPes RESOURCE "TELAPRI1" COLORS CLR_LWHITE,CLR_LGREEN OF oWnd // Define janela p/interacao oDlgPes:Cargo:=.F. oDlgPes:cCaption:= "Relatórios de Venda" DEFINE FONT oFont15b name "Arial" size 0,-15 BOLD SET FONT OF oDlgPes TO oFont15b *** REDEFINE VBOX label "Tipo de Impressão" ID 108 OF oDlgPes Esquerda Color CLR_AZUL,CLR_LGRAY FONT oFont14 REDEFINE RADIO ORad VAR cRad ID 105,106,107 OF oDlgPes COLOR CLR_BLACK,CLR_LGRAY REDEFINE VBOX label "Relatórios" ID 109 OF oDlgPes Esquerda Color CLR_AZUL,CLR_LGRAY FONT oFont14 REDEFINE RADIO oVal VAR cValues ID 101,102,103,104 OF oDlgPes COLOR CLR_BLACK,CLR_LGRAY REDEFINE vBtnBmp oBtPrv1 ID 500 BitMaps {"BTOK",3} OF oDlgPes Action ( oDlgPes:Cargo:= .T., oDlgPes:End() ) ToolTip "Confirma opção selecionada!" NoBorder CentraBmp && incluir function de verificacao de cliente REDEFINE vBtnBmp oBtPrv2 ID 502 BitMaps {"BTCAN",3} OF oDlgPes Action ( FechaArqs1(), oDlgPes:End(),oDlgMan:SetFocus() ) ToolTip "Cancela opção selecionada!" NoBorder CentraBmp ACTIVATE DIALOG oDlgPes CENTER on init ( ShowWindow( oDlgPes:oWnd, 1 ) ) IF oDlgPes:Cargo DO CASE CASE cValues=1 if cRad=1 if cRadop=3 MiniOrcamento(cNumtran,cTitem,cClinome,cEnd,cCidnome,cUf,cBairro,cFone) else MiniRecibo(cNumtran,cTitem,cClinome,cEnd,cCidnome,cUf,cBairro,cFone) endif elseif cRad=2 if cRadop=3 TxtOrcamento(1,cNumtran,cTitem,cClinome,cEnd,cCidnome,cUf,cBairro,cFone) else TxtRecibo(1,cNumtran,cTitem,cClinome,cEnd,cCidnome,cUf,cBairro,cFone) endif else if cRadop=3 RelOrcamento(cNumtran,cTitem,cClinome,cEnd,cCidnome,cUf,cBairro,cFone) else RelRecibo(cNumtran,cTitem,cClinome,cEnd,cCidnome,cUf,cBairro,cFone) endif endif CASE cValues=2 if cRadop#2 INFO4("Emissão de Duplicata somente na Venda a Prazo!","Informa!","ISINF") FechaArqs1() oDlgPes:End() CursorArrow() endif if cRad=1 INFO4("Relatório não disponÃvel para esta Impressora!","Informa!","ISINF") elseif cRad=2 TxtDuplicata(1) && Promissória Franklin Joias && TXTDup12(oDlgMan,.T.) && Promissoria Casa Shopping e Boticario else RelDuplic() && Promissória endif CASE cValues=3 if cRad=1 INFO4("Relatório não disponÃvel para esta Impressora!","Informa!","ISINF") elseif cRad=2 TxtCarne(1) && Carne COM moldura && TXTCarne1(1) && Carne SEM moldura else RelCarne() && Carne endif CASE cValues=4 INFO4("Relatório não disponÃvel para esta Impressora!","Informa!","ISINF") ENDCASE FechaArqs1() oDlgPes:End() ENDIF CursorArrow() if cOrig="T" SELECT ite ite->(dbSetOrder("numero")) ite->(ordScope(0,cNumtran)) ite->(ordScope(1,cNumtran)) ite->(dbGoTop()) else SELECT itt itt->(dbSetOrder("numero")) itt->(ordScope(0,cNumtran)) itt->(ordScope(1,cNumtran)) itt->(dbGoTop()) endif RETURN nil Exemplo de relatorio.... **************************************************************************** Function RelRecibo(cNumtran,cTitem,cClinome,cEnd,cCidnome,cUf,cBairro,cFone) **************************************************************************** PRIVATE filtro:=SPACE(20) ******************** rot1 := 'TRA_002' pag := 0 filtro := "ite->(numtran)=cNumTran" iif(cRadop=2, rot2:="VENDA A PRAZO",rot2:="VENDA À VISTA") iif(cRadop=2, btitulo := {||r_0002()},btitulo := {||r_0002a()}) ***** CursorWait() SELECT ite ite->(dbSetOrder("numero")) ite->(dbGoTop()) **** if !rel_ini() return nil endif **** if dbSeek( cNumTran ) do while ite->(!Eof()) if &filtro Box (linha,lmargem+0.3, linha+lsalto,lmargem+2.7) Box (linha,lmargem+2.7, linha+lsalto,lmargem+4.7) Box (linha,lmargem+4.7, linha+lsalto,lmargem+13.0) Box (linha,lmargem+13.0,linha+lsalto,lmargem+14.7) Box (linha,lmargem+14.7,linha+lsalto,lmargem+16.5) Box (linha,lmargem+16.5,linha+lsalto,nhori-0.5) say_e(linha,lmargem+0.3, linha+lsalto,lmargem+2.7, ite->cbarras,oFnt_rel8) say_e(linha,lmargem+2.7, linha+lsalto,lmargem+4.7, ite->ref ,oFnt_rel8) Say_e(linha,lmargem+4.7, linha+lsalto,lmargem+13.0,RTRIM(SUBSTR(ite->pronome,1,30))+" "+RTRIM(SUBSTR(ite->promarca,1,10))+" "+RTRIM(SUBSTR(ite->procor,1,10)),ofnt_rel8) cVlpro:= (ite->(prv)-ite->(desc)) && Com Desconto por Produto && cVlpro:= ite->(prv) && Desconto Geral Say_d(linha,lmargem+13.0,linha+lsalto,lmargem+14.7,Tran(cVlpro ,"999,999.99") ,ofnt_rel8) Say_d(linha,lmargem+14.7,linha+lsalto,lmargem+16.5,Tran(ite->quant ,"99999999.99"),ofnt_rel8) Say_d(linha,lmargem+16.5,linha+lsalto,nhori-0.5, Tran(ite->vl_total,"9,999,999.99") ,ofnt_rel8) linha = linha + lsalto ite->(dbskip(1)) if linha > nvert -1.5 rel_continua() SysRefresh() endif else ite->(dbskip(1)) LOOP endif enddo SELECT bol bol->(dbSetOrder("numero")) bol->(dbGoTop()) if dbSeek( cNumTran ) if linha > nvert -1.5 rel_continua() SysRefresh() endif box_d(linha,lmargem+13.0,linha+lsalto,nhori-0.5) Box (linha,lmargem+13.0,linha+lsalto,lmargem+16.5) Box (linha,lmargem+16.5,linha+lsalto,nhori-0.5) Say_d(linha,lmargem+13.0,linha+lsalto,lmargem+16.5,"TOTAL DA VENDA(=)",ofnt_rel9b) Say_d(linha,lmargem+16.5,linha+lsalto,nhori-0.5, Tran(cTprod,"9,999,999.99"),ofnt_rel8b) linha = linha + lsalto if linha > nvert -1.5 rel_continua() SysRefresh() endif Box (linha,lmargem+13.0,linha+lsalto,lmargem+16.5) Box (linha,lmargem+16.5,linha+lsalto,nhori-0.5) Say_d(linha,lmargem+13.0,linha+lsalto,lmargem+16.5,"TOTAL DE DESCONTOS(-)",ofnt_rel9b) Say_d(linha,lmargem+16.5,linha+lsalto,nhori-0.5, Tran(cTdesc,"9,999,999.99") ,ofnt_rel8) linha = linha + lsalto if linha > nvert -1.5 rel_continua() SysRefresh() endif if cRadop=2 Box (linha,lmargem+13.0,linha+lsalto,lmargem+16.5) Box (linha,lmargem+16.5,linha+lsalto,nhori-0.5) Say_d(linha,lmargem+13.0,linha+lsalto,lmargem+16.5,"VALOR DE ENTRADA(-)",ofnt_rel9b) Say_d(linha,lmargem+16.5,linha+lsalto,nhori-0.5, Tran(cVlent,"9,999,999.99") ,ofnt_rel8) linha = linha + lsalto if linha > nvert -1.5 rel_continua() SysRefresh() endif box_d(linha,lmargem+13.0,linha+lsalto,nhori-0.5) Box (linha,lmargem+13.0,linha+lsalto,lmargem+16.5) Box (linha,lmargem+16.5,linha+lsalto,nhori-0.5) Say_d(linha,lmargem+13.0,linha+lsalto,lmargem+16.5,"TOTAL A PAGAR(=)",ofnt_rel9b) Say_d(linha,lmargem+16.5,linha+lsalto,nhori-0.5, Tran(cTparc,"9,999,999.99") ,ofnt_rel9b) else box_d(linha,lmargem+13.0,linha+lsalto,nhori-0.5) Box (linha,lmargem+13.0,linha+lsalto,lmargem+16.5) Box (linha,lmargem+16.5,linha+lsalto,nhori-0.5) Say_d(linha,lmargem+13.0,linha+lsalto,lmargem+16.5,"TOTAL A PAGAR(=)",ofnt_rel9b) Say_d(linha,lmargem+16.5,linha+lsalto,nhori-0.5, Tran(cTvend,"9,999,999.99") ,ofnt_rel10b) endif linha = linha + lsalto else rel_fim() Info4("Boleto não encontrado!","Aviso!!","ISSTOP") RETURN nil endif if cRadop=2 SELECT par par->(dbSetOrder("numero")) par->(dbGoTop()) if dbSeek( cNumTran ) box_d(linha,lmargem+0.3, linha+lsalto,lmargem+9.0) Box (linha,lmargem+0.3, linha+lsalto,lmargem+1.5) Box (linha,lmargem+1.5, linha+lsalto,lmargem+3.5) Box (linha,lmargem+3.5, linha+lsalto,lmargem+5.5) Box (linha,lmargem+5.5, linha+lsalto,lmargem+9.0) say_e(linha,lmargem+0.3, linha+lsalto,lmargem+1.5, "Parcela",oFnt_rel9b) say_e(linha,lmargem+1.5, linha+lsalto,lmargem+3.5, "Vencimento",oFnt_rel9b) Say_e(linha,lmargem+3.5, linha+lsalto,lmargem+5.5, "Valor R$",ofnt_rel9b) Say_e(linha,lmargem+5.5, linha+lsalto,lmargem+9.0, "Situação",ofnt_rel9b) box_d(linha,lmargem+9.0, linha+lsalto,lmargem+9.3) box (linha,lmargem+9.0, linha+lsalto,lmargem+9.3) *** && segunda coluna parcelas box_d(linha,lmargem+9.3, linha+lsalto,nhori-0.5) Box (linha,lmargem+9.3, linha+lsalto,lmargem+10.5) Box (linha,lmargem+10.5,linha+lsalto,lmargem+12.5) Box (linha,lmargem+12.5,linha+lsalto,lmargem+14.5) Box (linha,lmargem+14.5,linha+lsalto,nhori-0.5) say_e(linha,lmargem+9.3, linha+lsalto,lmargem+10.5,"Parcela",oFnt_rel9b) say_e(linha,lmargem+10.5,linha+lsalto,lmargem+12.5,"Vencimento",oFnt_rel9b) Say_e(linha,lmargem+12.5,linha+lsalto,lmargem+14.5,"Valor R$",ofnt_rel9b) Say_e(linha,lmargem+14.5,linha+lsalto,nhori-0.5, "Situação",ofnt_rel9b) linha := linha + lsalto do while par->(!Eof()) if par->(numtran)=cNumTran SysRefresh() Box (linha,lmargem+0.3, linha+lsalto,lmargem+1.5) Box (linha,lmargem+1.5, linha+lsalto,lmargem+3.5) Box (linha,lmargem+3.5, linha+lsalto,lmargem+5.5) Box (linha,lmargem+5.5, linha+lsalto,lmargem+9.0) say_e(linha,lmargem+0.3, linha+lsalto,lmargem+1.5, Tran(par->letra,"99"),oFnt_rel10) say_e(linha,lmargem+1.5, linha+lsalto,lmargem+3.5, Tran(par->dtvencim,"99/99/9999"),oFnt_rel10) Say_d(linha,lmargem+3.5, linha+lsalto,lmargem+5.5, Tran(par->vl_parc,"999,999.99") ,ofnt_rel10) Say_e(linha,lmargem+5.5, linha+lsalto,lmargem+9.0, iif(par->(sitparc)="D","Devedor","Quitado"),ofnt_rel10) *** par->(dbskip()) if par->(numtran)=cNumTran box_d(linha,lmargem+9.0, linha+lsalto,lmargem+9.3) box (linha,lmargem+9.0, linha+lsalto,lmargem+9.3) Box (linha,lmargem+9.3, linha+lsalto,lmargem+10.5) Box (linha,lmargem+10.5,linha+lsalto,lmargem+12.5) Box (linha,lmargem+12.5,linha+lsalto,lmargem+14.5) Box (linha,lmargem+14.5,linha+lsalto,nhori-0.5) say_e(linha,lmargem+9.3, linha+lsalto,lmargem+10.5,Tran(par->letra,"99"),oFnt_rel10) say_e(linha,lmargem+10.5,linha+lsalto,lmargem+12.5,Tran(par->dtvencim,"99/99/9999"),oFnt_rel10) Say_d(linha,lmargem+12.5,linha+lsalto,lmargem+14.5,Tran(par->vl_parc,"999,999.99") ,ofnt_rel10) Say_e(linha,lmargem+14.5,linha+lsalto,nhori-0.5, iif(par->(sitparc)="D","Devedor","Quitado"),ofnt_rel10) par->(dbskip()) else box_d(linha,lmargem+9.0, linha+lsalto,lmargem+9.3) box (linha,lmargem+9.0, linha+lsalto,lmargem+9.3) Box (linha,lmargem+9.3, linha+lsalto,lmargem+10.5) Box (linha,lmargem+10.5,linha+lsalto,lmargem+12.5) Box (linha,lmargem+12.5,linha+lsalto,lmargem+14.5) Box (linha,lmargem+14.5,linha+lsalto,nhori-0.5) say_e(linha,lmargem+9.3, linha+lsalto,lmargem+10.5,"**" ,oFnt_rel10) say_e(linha,lmargem+10.5,linha+lsalto,lmargem+12.5,"**********" ,oFnt_rel10) Say_d(linha,lmargem+12.5,linha+lsalto,lmargem+14.5,"**********" ,ofnt_rel10) Say_e(linha,lmargem+14.5,linha+lsalto,nhori-0.5, "*******" ,ofnt_rel10) endif linha := linha + lsalto if linha > nvert -1.5 rel_continua() SysRefresh() endif else par->(dbskip(1)) loop endif enddo */ else rel_fim() Info4("Parcelas não encontradas!","Aviso!!","ISSTOP") RETURN nil endif endif linha := linha + lsalto say_e(linha,lmargem+0.3, linha+lsalto,lmargem+14.0, "Ass:_______________________________________",oFnt_rel10) linha := linha + lsalto linha := linha + lsalto say_c(linha,lmargem+6.0, linha+lsalto,lmargem+14.0, "*** CUPOM SEM VALIDADE FISCAL ***",oFnt_rel10) linha := linha + lsalto say_c(linha,lmargem+6.0, linha+lsalto,lmargem+14.0, "**** OBRIGADO, VOLTE SEMPRE ****",oFnt_rel10) else rel_fim() Info4("Recibo não encontrado!","Aviso!!","ISSTOP") RETURN nil endif rel_fim() Return nil Valeu a todos!!! JHILBERT FW7.04/BCC5.51/xHarbour0.9971/PellesC/xDEv0.65/vLIB id=code>id=code> Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 7, 2008 Report Share Posted August 7, 2008 PRINT oPrn NAME "Ficha Cadastral do Aluno" PREVIEW MODAL id=code>id=code>João Santos - São Paulo. kmt_karinha@pop.com.br kapiaba@brfree.com.br Fone: (11) 3106-2832 FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe Quote Link to comment Share on other sites More sharing options...
jhilbert Posted August 7, 2008 Author Report Share Posted August 7, 2008 citação: PRINT oPrn NAME "Ficha Cadastral do Aluno" PREVIEW MODAL id=code>id=code>João Santos - São Paulo. kmt_karinha@pop.com.br kapiaba@brfree.com.br Fone: (11) 3106-2832 FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe id=quote>id=quote>Olá João, Colocando o MODAL... funciona.. só que (como estou usando a VPRINTER da VLIB do VAGNER) ocorre que quando coloco o MODAL e saio... é como se o preview não encerrasse... fica o sistema ativo no gerenciador de tarefas??? Não teria uma forma de voltar o foco para dialog quando fechar o preview?? JHILBERT FW7.04/BCC5.51/xHarbour0.9971/PellesC/xDEv0.65/vLIB Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 7, 2008 Report Share Posted August 7, 2008 Olá, voce não está esquecendo nada? está encerrando o PREVIEW quando termina a impressão? Quando voce clicka no botão de SAIDA do PREVIEW, o que acontece?? Melhor, é mostrar ao AUTOR do Projeto VLIB.LIB, não tenho dominio sobre a mesma. Apesar de BELA, meus PARCOS conhecimentos, não me permitem ter o prazer de usá-la. Abraços. João Santos - São Paulo. kmt_karinha@pop.com.br kapiaba@brfree.com.br Fone: (11) 3106-2832 FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe Quote Link to comment Share on other sites More sharing options...
vagner Posted August 7, 2008 Report Share Posted August 7, 2008 Olá Jeorge, Como lhe respondi por e-mail, vc deve estar colocando MDI na sua window principal, mesmo o preview normal do fw acontece isso. Faça um teste e retire o MDI da sua window principal. Vagner Wirts VI Encontro está chegando , não perca Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 7, 2008 Report Share Posted August 7, 2008 citação:Olá Jeorge, Como lhe respondi por e-mail, vc deve estar colocando MDI na sua window principal, mesmo o preview normal do fw acontece isso. Faça um teste e retire o MDI da sua window principal. Vagner Wirts VI Encontro está chegando , não perca id=quote>id=quote>Desculpe, discordo. uso somente MDI -> MULTIPLES INTERFACES DEFINITION, e não tenho problemas com PREVIEW MODAL, deste que eu não DISPARE DIRETO do MENU PRINCIPAL por exemplo. Sempro disparo para um DIALOGO, e não tenho problemas com a VOLTA DO FOCO. Mas... Abraços. João Santos - São Paulo. kmt_karinha@pop.com.br kapiaba@brfree.com.br Fone: (11) 3106-2832 FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe Editado por - kapiaba on 07/08/2008 13:18:08 Quote Link to comment Share on other sites More sharing options...
jhilbert Posted August 7, 2008 Author Report Share Posted August 7, 2008 citação: citação:Olá Jeorge, Como lhe respondi por e-mail, vc deve estar colocando MDI na sua window principal, mesmo o preview normal do fw acontece isso. Faça um teste e retire o MDI da sua window principal. Vagner Wirts VI Encontro está chegando , não perca id=quote>id=quote>Desculpe, discordo. uso somente MDI -> MULTIPLES INTERFACES DEFINITION, e não tenho problemas com PREVIEW MODAL, deste que eu não DISPARE DIRETO do MENU PRINCIPAL por exemplo. Sempro disparo para um DIALOGO, e não tenho problemas com a VOLTA DO FOCO. Mas... Abraços. João Santos - São Paulo. kmt_karinha@pop.com.br kapiaba@brfree.com.br Fone: (11) 3106-2832 FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe Editado por - kapiaba on 07/08/2008 13:18:08 id=quote>id=quote>Vou testar retirando o MDI... ...Mas devo colocar ( MODAL ) no preview??? e no caso da VDOSPRN como colocar (MODAL)?? Mais uma vez obrigadoa juda de todos!!! JHILBERT FW7.04/BCC5.51/xHarbour0.9971/PellesC/xDEv0.65/vLIB Quote Link to comment Share on other sites More sharing options...
vagner Posted August 7, 2008 Report Share Posted August 7, 2008 citação: citação:Olá Jeorge, Como lhe respondi por e-mail, vc deve estar colocando MDI na sua window principal, mesmo o preview normal do fw acontece isso. Faça um teste e retire o MDI da sua window principal. Vagner Wirts VI Encontro está chegando , não perca id=quote>id=quote>Desculpe, discordo. uso somente MDI -> MULTIPLES INTERFACES DEFINITION, e não tenho problemas com PREVIEW MODAL, deste que eu não DISPARE DIRETO do MENU PRINCIPAL por exemplo. Sempro disparo para um DIALOGO, e não tenho problemas com a VOLTA DO FOCO. Mas... Abraços. João Santos - São Paulo. kmt_karinha@pop.com.br kapiaba@brfree.com.br Fone: (11) 3106-2832 FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe Editado por - kapiaba on 07/08/2008 13:18:08 id=quote>id=quote>Olá João, Faça o teste sem o Modal do preview pra vc ver como fica ao invés de ficar discordando a toa Vagner Wirts VI Encontro está chegando , não perca Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 7, 2008 Report Share Posted August 7, 2008 O meu filho, aprenda a ler, VEJA A MINHA RESPOSTA PARA ELE: PREVIEW MODAL. É assim que eu faço com MDI e PREVIEW. Esta parte ele resolveu problema, se entendi o problema dele, é que DEPOIS QUE IMPRIME, o FOCO NÃO VOLTA AO DIALOGO. Comigo, isto não ocorre. Abraços. João Santos - São Paulo. kmt_karinha@pop.com.br kapiaba@brfree.com.br Fone: (11) 3106-2832 FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe Quote Link to comment Share on other sites More sharing options...
jhilbert Posted August 7, 2008 Author Report Share Posted August 7, 2008 citação:O meu filho, aprenda a ler, VEJA A MINHA RESPOSTA PARA ELE: PREVIEW MODAL. É assim que eu faço com MDI e PREVIEW. Esta parte ele resolveu problema, se entendi o problema dele, é que DEPOIS QUE IMPRIME, o FOCO NÃO VOLTA AO DIALOGO. Comigo, isto não ocorre. Abraços. João Santos - São Paulo. kmt_karinha@pop.com.br kapiaba@brfree.com.br Fone: (11) 3106-2832 FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe id=quote>id=quote>Bom... João... Tirei o (MDI)... e não coloquei o MODAL no preview... ficou funcionando... quando fecho o preview o foco volta para a tela de venda.... ....(mas sabe como é o windows... não se pode confiar muito) e neste caso, gostaria de quando fechar o preview (colocar um.... minhaOdlg:setfocus() para ter certeza que voltaria para dialog que chamou a rotina so depois que eu fechar o preview.... Valeu a todos!!! JHILBERT FW7.04/BCC5.51/xHarbour0.9971/PellesC/xDEv0.65/vLIB Quote Link to comment Share on other sites More sharing options...
Burai Posted August 7, 2008 Report Share Posted August 7, 2008 O que dá pra fazer tb é uma pequena alteração no preview pra receber a dialog que vc quer setar o foco como parâmetro, no código onde vc fecha o preview é só mandar o foco pra essa variavel que esta apontando pra sua ultima dialog. É assim que faço e funciona bem! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.