ram_bh Posted June 22, 2016 Report Share Posted June 22, 2016 Prezados, Estou precisando mostrar em uma Window dois xBrowse: um com a relação de pedidos e outro com os itens dos pedidos. É possível? Acredito que sim... Alguém pode postar parte de um exemplo em código? Obrigado! Rodrigo Melo Belo Horizonte Quote Link to comment Share on other sites More sharing options...
joaosolution Posted June 22, 2016 Report Share Posted June 22, 2016 Rodrigo Bom dia Você terá que colocar um Splitter entre os xbrowses. Att João Bosco Quote Link to comment Share on other sites More sharing options...
Theotokos Posted June 22, 2016 Report Share Posted June 22, 2016 oBrw := TxBrowse():New( oDlg ) oBrw:CreateFromResource( 4003 ) ADD COLUMN TO XBROWSE oBrw DATA SIM_NAO TITLE "S/N" PICTURE "!" SIZE 40 ADD COLUMN TO XBROWSE oBrw DATA VA_NUMPEDI TITLE "Nº Ped." PICTURE "999999" SIZE 65 ADD COLUMN TO XBROWSE oBrw DATA VA_VALPRES TITLE "Vr.Prestação" PICTURE "@E 999,999.99" SIZE 90 COLORS 128 ADD COLUMN TO XBROWSE oBrw DATA CalcPrestacao(&cArquivo->VA_VALPRES,&cArquivo->VA_DATVENC) TITLE "Vr.à Pagar" PICTURE "@E 999,999.99" SIZE 90 COLORS 128 ADD COLUMN TO XBROWSE oBrw DATA VA_DATVENC TITLE "Vencimento" PICTURE "@D 99/99/9999" SIZE 100 COLORS 128 ADD COLUMN TO XBROWSE oBrw DATA VA_DATMOV TITLE "Movimento" PICTURE "@D 99/99/9999" SIZE 100 /* Filtra os Dados conforme o Pedido Selecionado, atualiza o Array do Browse Seguinte */ oBrw:bCHANGE := {|| FiltrarDd(&cArquivo->VA_NUMPEDI) } oBrw:BLClicked := {|| FiltrarDd(&cArquivo->VA_NUMPEDI), oBrw:Refresh(), oBrw:SetFocus() } ****************************************************** * Browse Mostra os Produtos conforme o Pedido selecionado no browse anterior *************************************************************** REDEFINE COLUMN XBROWSE oBrw1 ID 4004 OF oDlgCrediario UPDATE ADD COLUMN TO XBROWSE oBrw1 DATA ARRAY ELEM 1 TITLE "" PICTURE "@!X" SIZE 12 ADD COLUMN TO XBROWSE oBrw1 DATA ARRAY ELEM 2 TITLE "Referência" PICTURE "@!X" SIZE 70 INDEX 2 ADD COLUMN TO XBROWSE oBrw1 DATA ARRAY ELEM 3 TITLE "Descrição" PICTURE "@!X" SIZE 350 INDEX 3 ADD COLUMN TO XBROWSE oBrw1 DATA ARRAY ELEM 4 TITLE "Qtde" PICTURE "999.99" SIZE 50 INDEX 4 ADD COLUMN TO XBROWSE oBrw1 DATA ARRAY ELEM 5 TITLE "Tt.Produto" PICTURE "@E 9,999.99" SIZE 100 INDEX 5 ADD COLUMN TO XBROWSE oBrw1 DATA ARRAY ELEM 6 TITLE "Caixa" PICTURE "@!X" SIZE 150 rochinha 1 Quote Link to comment Share on other sites More sharing options...
Wellington Vieira Posted June 22, 2016 Report Share Posted June 22, 2016 Este é um exemplo de clientes e seus pedidos, mas o conceito é o mesmo. function rproc_pedido_saida(objetpedido) private salvavarPesGen := "A" novo_pedido(objetpedido) define dialog listbox_saida title "Consulta Pedidos" from 000,000 to 513,1020 pixel brush obrushsuspenso STYLE nOr( WS_BORDER, WS_POPUP, WS_VISIBLE ) transparent @ 0.1,0.3 to 1.5,72.7 label "" of listbox_saida color corfrtsaysuspensa,corfdosaysuspensa @ 1.7,0.3 to 17.9,72.7 label "" of listbox_saida color corfrtsaysuspensa,corfdosaysuspensa asamplzfornecedores = {""} arecfornecedores = {} atipofornecedores = {"Cliente","Fantasia","Parte do nome","CNPJ","CPF","Cidade","Estado"} mtipofornecedores = "Cliente" mpesquisafornecedores = space(300) ncontrole = 1 asamplzconsentrada = {""} arecconsentrada = {} mAchaProcuraPedido = "N" @ 009,153 say "Linhas na grade:" of listbox_saida font mtahoma size 050,9 color corfrtsaysuspensa,corfdosaysuspensa pixel @ 007,203 get oqtdlinhasgradepedido var qtdlinhasgradepedido picture "9999" font mtahoma size 19,12 of listbox_saida color corfrtget,corfdoget pixel right @ 009,225 say "Cliente:" of listbox_saida font mtahoma size 050,9 color corfrtsaysuspensa,corfdosaysuspensa pixel @ 007,250 combobox otipofornecedores var mtipofornecedores items atipofornecedores font mtahoma size 050,25 of listbox_saida color corfrtget,corfdoget pixel //when .f. @ 007,301 get opesquisafornecedores var mpesquisafornecedores picture "@!" font mtahoma size 200,12 of listbox_saida color corfrtget,corfdoget pixel on change enche_pedido_geral(objetpedido) @ 007,501 buttonbmp obutbarras bitmap "" left prompt "X" textright size 6, 14 font mtahomabold of listbox_saida pixel action ( (mAchaProcuraPedido := "S"),listbox_saida:end() ) @ 029.5,005 listbox obrzfornecedores fields asamplzfornecedores[obrzfornecedores:nat,1],asamplzfornecedores[obrzfornecedores:nat,2],; asamplzfornecedores[obrzfornecedores:nat,3],asamplzfornecedores[obrzfornecedores:nat,4],asamplzfornecedores[obrzfornecedores:nat,5]; headers "Codigo","Cliente","Cidade","Estado","CNPJ/CPF" FIELDSIZES 060,650,100,050,110; size 500,100 on click ver_notas_pedido(objetpedido) on change ver_notas_pedido(objetpedido); pixel of listbox_saida obrzfornecedores:nLineStyle := 2 obrzfornecedores:lCellStyle = .t. obrzfornecedores:lAutoSkip = .t. obrzfornecedores:SetArray(asamplzfornecedores) obrzfornecedores:bGoTop = { || obrzfornecedores:nat := 1 } obrzfornecedores:bGoBottom = { || obrzfornecedores:nat := Eval( obrzfornecedores:bLogicLen ) } obrzfornecedores:bSkip = { | nWant, nOld | nOld := obrzfornecedores:nat, obrzfornecedores:nat += nWant,; obrzfornecedores:nat := Max( 1, Min( obrzfornecedores:nat, Eval( obrzfornecedores:bLogicLen ) ) ),; obrzfornecedores:nat - nOld } obrzfornecedores:bLogicLen = { || Len( asamplzfornecedores ) } obrzfornecedores:cAlias = "Array" obrzfornecedores:nColAct := 1 obrzfornecedores:lMChange := .F. obrzfornecedores:SetFocus() obrzfornecedores:Refresh() @ 130,005 listbox obrzconsentrada fields asamplzconsentrada[obrzconsentrada:nat,1],asamplzconsentrada[obrzconsentrada:nat,2],; asamplzconsentrada[obrzconsentrada:nat,3],asamplzconsentrada[obrzconsentrada:nat,4],asamplzconsentrada[obrzconsentrada:nat,5],; asamplzconsentrada[obrzconsentrada:nat,6],asamplzconsentrada[obrzconsentrada:nat,7],; asamplzconsentrada[obrzconsentrada:nat,8],asamplzconsentrada[obrzconsentrada:nat,9]; headers "Pedido","Data","Hora","Valor Bruto","Valor Liquido","Itens","Situacao","Nro da NF","Cliente"; FIELDSIZES 060,060,065,100,100,065,070,150,330; size 500,120 on dblclick ralt_pedido(objetpedido); pixel of listbox_saida //obrzconsentrada:nClrPane := {|| iif(asamplzconsentrada[obrzconsentrada:nat,7] = 'Sim',corlstbxnormal,iif(empty(asamplzconsentrada[obrzconsentrada:nat,7]),corlstbxnormal,corlstbxdifere)) } obrzconsentrada:nLineStyle := 2 obrzconsentrada:lCellStyle = .f. obrzconsentrada:lAutoSkip = .t. obrzconsentrada:aJustify := { .F.,.F.,.F.,.T.,.T.,.T.,.F.,.F.,.F.} obrzconsentrada:SetArray(asamplzconsentrada) obrzconsentrada:bGoTop = { || obrzconsentrada:nat := 1 } obrzconsentrada:bGoBottom = { || obrzconsentrada:nat := Eval( obrzconsentrada:bLogicLen ) } obrzconsentrada:bSkip = { | nWant, nOld | nOld := obrzconsentrada:nat, obrzconsentrada:nat += nWant,; obrzconsentrada:nat := Max( 1, Min( obrzconsentrada:nat, Eval( obrzconsentrada:bLogicLen ) ) ),; obrzconsentrada:nat - nOld } obrzconsentrada:bLogicLen = { || Len( asamplzconsentrada ) } obrzconsentrada:cAlias = "Array" obrzconsentrada:nColAct := 1 obrzconsentrada:lMChange := .F. obrzconsentrada:SetFocus() obrzconsentrada:Refresh() mtipopesquisa = 1 @ 009,005 say "Tipo" of listbox_saida font mtahoma size 65,8.5 color corfrtsay,corfdosay pixel @ 008,020 radio otipopesquisa VAR mtipopesquisa OF listbox_saida color corfrtsayds,corfdosay pixel size 40,10 on change ver_notas_geral(objetpedido,1) oradio := TRadio():New( 008,018, 'Tudo', ; .T. , ; .T. , ; 1, listbox_saida, otipopesquisa, , , , , .F., , ; 20, 10, , .F., .T. ) otipopesquisa:AddRadio( oradio ) oradio := TRadio():New( 008,044, 'Pendente', ; .F. , ; .F. , ; 2, listbox_saida, otipopesquisa, , , , , .F., , ; 30, 10, , .F., .T. ) otipopesquisa:AddRadio( oradio ) oradio := TRadio():New( 008,078, 'Liberado', ; .F. , ; .F. , ; 3, listbox_saida, otipopesquisa, , , , , .F., , ; 30, 10, , .F., .T. ) otipopesquisa:AddRadio( oradio ) oradio := TRadio():New( 008,111, 'Cancelado', ; .F. , ; .F. , ; 4, listbox_saida, otipopesquisa, , , , , .F., , ; 33, 10, , .F., .T. ) otipopesquisa:AddRadio( oradio ) listbox_saida:bKeyDown := {|nKey| IIf( nKey == VK_RETURN,listbox_saida:end(),0)} activate dialog listbox_saida center on init ( ver_notas_geral(objetpedido,2) ) if GetKeyState(VK_RETURN) .or. !GetKeyState(VK_ESCAPE) if mAchaProcuraPedido = "N" ralt_pedido(objetpedido) endif endif salvavarPesGen := "A" return nil function enche_pedido_geral(objetpedido) if empty(opesquisafornecedores:cText) asamplzfornecedores = {""} arecfornecedores = {} obrzfornecedores:SetArray(asamplzfornecedores) obrzfornecedores:refresh() asamplzconsentrada = {""} arecconsentrada = {} obrzconsentrada:SetArray(asamplzconsentrada) obrzconsentrada:refresh() return .t. endif asamplzfornecedores = {} arecfornecedores = {} if mtipofornecedores = "Cliente" cquery := "select * from fncliente where " +; "substr(razaosocial,1"+","+alltrim(str(len(alltrim(opesquisafornecedores:cText))))+")"+; " = " + "'"+alltrim(opesquisafornecedores:cText)+"'" cquery += " order by razaosocial asc;" elseif mtipofornecedores = "Fantasia" cquery := "select * from fncliente where " +; "substr(fantasia,1"+","+alltrim(str(len(alltrim(opesquisafornecedores:cText))))+")"+; " = " + "'"+alltrim(opesquisafornecedores:cText)+"'" cquery += " order by fantasia asc;" elseif mtipofornecedores = "Parte do nome" cquery := "select * from fncliente where " +; "razaosocial like " + "'%"+alltrim(opesquisafornecedores:cText)+"%'" cquery += " order by razaosocial asc;" elseif mtipofornecedores = "CNPJ" cquery := "select * from fncliente where " +; "substr(numerodocumentonacional,1"+","+alltrim(str(len(alltrim(opesquisafornecedores:cText))))+")"+; " = " + "'"+alltrim(opesquisafornecedores:cText)+"'" +; " and pessoafisicajuridica = 'J'" cquery += " order by numerodocumentonacional asc;" elseif mtipofornecedores = "CPF" cquery := "select * from fncliente where " +; "substr(numerodocumentonacional,1"+","+alltrim(str(len(alltrim(opesquisafornecedores:cText))))+")"+; " = " + "'"+alltrim(opesquisafornecedores:cText)+"'" +; " and pessoafisicajuridica = 'F'" cquery += " order by numerodocumentonacional asc;" elseif mtipofornecedores = "Cidade" cquery := "select * from fncliente where " +; "substr(cidadeibge,1"+","+alltrim(str(len(alltrim(opesquisafornecedores:cText))))+")"+; " = " + "'"+alltrim(opesquisafornecedores:cText)+"'" cquery += " order by cidadeibge asc, razaosocial asc;" elseif mtipofornecedores = "Estado" cquery := "select * from fncliente where " +; "substr(uf,1"+","+alltrim(str(len(alltrim(opesquisafornecedores:cText))))+")"+; " = " + "'"+alltrim(opesquisafornecedores:cText)+"'" cquery += " order by uf asc, razaosocial asc;" endif oquery := oServer:Query(cquery) DO WHILE ! oquery:Eof() a = oquery:Fieldget(oquery:Fieldpos('seqcliente')) b = oquery:Fieldget(oquery:Fieldpos('razaosocial')) c = oquery:Fieldget(oquery:Fieldpos('cidadeibge')) d = oquery:Fieldget(oquery:Fieldpos('uf')) e = oquery:Fieldget(oquery:Fieldpos('numerodocumentonacional')) if empty(e) e = space(14) else if len(alltrim(e)) >= 14 e = transform(e,"@r 99.999.999/9999-99") else e = transform(e,"@r 999.999.999-99") endif endif if !empty(a) aadd( asamplzfornecedores,{alltrim(str(a)),b,c,d,e} ) aadd( arecfornecedores,a ) endif oquery:Skip() sysrefresh() END oquery:destroy() if empty( asamplzfornecedores ) asamplzfornecedores = {""} arecfornecedores = {} endif obrzfornecedores:SetArray(asamplzfornecedores) obrzfornecedores:refresh() asamplzconsentrada = {""} arecconsentrada = {} obrzconsentrada:SetArray(asamplzconsentrada) obrzconsentrada:refresh() return nil function pega_situacao_pedido(mtipopesquisa) if mtipopesquisa = 2 cquery += " and situacaopedido = 1" elseif mtipopesquisa = 3 cquery += " and situacaopedido = 2" elseif mtipopesquisa = 4 cquery += " and situacaopedido = 3" endif return nil function ver_notas_geral(objetpedido,objcontrole) if objcontrole = 1 .and. ncontrole = 1 return nil endif ++ncontrole mAchaProcuraPedido = "N" mpesquisafornecedores = space(300) opesquisafornecedores:ctext := mpesquisafornecedores fwait(" ...Aguarde processando...") asamplzfornecedores = {""} arecfornecedores = {} obrzfornecedores:SetArray(asamplzfornecedores) obrzfornecedores:refresh() asamplzconsentrada = {} arecconsentrada = {} czquery := "select * from ftpedido where"+; " pedidoromaneio = " + "'"+"P"+"'"+; " and entradasaida = 'S'"+; " and loja = " + alltrim(str(zseqloja)) czquery += iif(mtipopesquisa = 2," and situacaopedido = 1",iif(mtipopesquisa = 3," and situacaopedido = 2",iif(mtipopesquisa = 4," and situacaopedido = 3",""))) czquery += " order by datapedido desc, numerodopedido desc;" ozquery := oServer:Query(czquery) nQtdContado = 0 DO WHILE ! ozquery:Eof() aitens = ozquery:Fieldget(ozquery:Fieldpos('seqpedido')) bitens = ozquery:Fieldget(ozquery:Fieldpos('numerodopedido')) citens = ozquery:Fieldget(ozquery:Fieldpos('datapedido')) ditens = ozquery:Fieldget(ozquery:Fieldpos('horadopedido')) fitens = ozquery:Fieldget(ozquery:Fieldpos('situacaopedido')) gitens = ozquery:Fieldget(ozquery:Fieldpos('numeronotafiscal')) hitens = ozquery:Fieldget(ozquery:Fieldpos('controledocumento')) mAdescontoacrescimo = ozquery:Fieldget(ozquery:Fieldpos('descontopercentualvalor')) mAvaloroupercentualdesconto = ozquery:Fieldget(ozquery:Fieldpos('valoroupercentualdesconto')) iitens = ozQuery:Fieldget(ozQuery:Fieldpos('razaosocial')) cwquery := "select * from ftnotafiscal where"+; " controledocumento = " + alltrim(str(hitens)) cwquery += " order by controledocumento asc;" owquery := oServer:Query(cwquery) //tPchavedanotafiscal = owquery:Fieldget(owquery:Fieldpos('chavedanotafiscal')) nsta = owQuery:Fieldget(owQuery:Fieldpos('statusdanotafiscal')) owquery:destroy() nsituacao = "" if nsta = "01" nsituacao = "Digitacao" elseif nsta = "02" nsituacao = "Validada" elseif nsta = "03" nsituacao = "Aguar.. recibo" elseif nsta = "04" nsituacao = "Aguar.. protocolo" elseif nsta = "05" nsituacao = "Autorizada" elseif nsta = "06" nsituacao = "Cancelada" elseif nsta = "07" nsituacao = "Inutilizada" elseif nsta = "08" nsituacao = "Denegada" endif //iitens = tPchavedanotafiscal mAtotaldeitens = 0 mAsubtotaldositens = 0 mAtotaldopedido = 0 if !empty(aitens) cwquery := "select * from ftpedidoitem where "+; "idpedido = " + alltrim(str(aitens)) +; " order by seqitempedido asc;" owquery := oServer:Query(cwQuery) DO WHILE ! owquery:Eof() tqtdpedida = owquery:Fieldget(owquery:Fieldpos('qtdpedida')) tvalorvendaunitario = owquery:Fieldget(owquery:Fieldpos('valorvendaunitario')) ttotaldoitem = owquery:Fieldget(owquery:Fieldpos('totaldoitem')) if empty(ttotaldoitem) mAtotaldeitens = mAtotaldeitens + tqtdpedida mAsubtotaldositens = mAsubtotaldositens + round((tqtdpedida * tvalorvendaunitario),2) else mAtotaldeitens = mAtotaldeitens + tqtdpedida mAsubtotaldositens = mAsubtotaldositens + ttotaldoitem endif owquery:Skip() sysrefresh() END owquery:destroy() if mAvaloroupercentualdesconto > 0 if mAdescontoacrescimo = 1 // percentual mAtotaldopedido = mAsubtotaldositens - (( mAsubtotaldositens * mAvaloroupercentualdesconto )/100) elseif mAdescontoacrescimo = 2 // valor mAtotaldopedido = mAsubtotaldositens - mAvaloroupercentualdesconto endif else mAtotaldopedido = mAsubtotaldositens endif aadd( asamplzconsentrada,{alltrim(str(bitens)),dtoc(citens),alltrim(ditens),; transform(mAsubtotaldositens,"@e 999,999,999.99"),; transform(mAtotaldopedido,"@e 999,999,999.99"),; alltrim(str(mAtotaldeitens)),; iif(fitens = 1,"Digitacao",iif(fitens = 2,"Liberado",iif(fitens = 3,"Cancelado",""))),; iif(empty(gitens),"",alltrim(str(gitens))) + iif(!empty(nsituacao)," | "+ nsituacao,""),iitens }) aadd( arecconsentrada,aitens ) endif ozquery:Skip() sysrefresh() ++nQtdContado if qtdlinhasgradepedido > 0 if nQtdContado >= qtdlinhasgradepedido exit endif endif END ozquery:destroy() obrzconsentrada:SetArray(asamplzconsentrada) obrzconsentrada:refresh() odlgwait:end() return nil function ver_notas_pedido(objetpedido) if empty(asamplzfornecedores) return nil endif if len(arecfornecedores) <= 0 return nil endif if arecfornecedores[obrzfornecedores:nat] > 0 fwait(" ...Aguarde processando...") malteitens = arecfornecedores[obrzfornecedores:nat] asamplzconsentrada = {} arecconsentrada = {} czquery := "select * from ftpedido where"+; " idcliente = " + alltrim(str(malteitens)) +; " and pedidoromaneio = " + "'"+"P"+"'"+; " and entradasaida = 'S'"+; " and loja = " + alltrim(str(zseqloja)) czquery += iif(mtipopesquisa = 2," and situacaopedido = 1",iif(mtipopesquisa = 3," and situacaopedido = 2",iif(mtipopesquisa = 4," and situacaopedido = 3",""))) czquery += " order by datapedido desc, numerodopedido asc;" ozquery := oServer:Query(czquery) nQtdContado = 0 DO WHILE ! ozquery:Eof() aitens = ozquery:Fieldget(ozquery:Fieldpos('seqpedido')) bitens = ozquery:Fieldget(ozquery:Fieldpos('numerodopedido')) citens = ozquery:Fieldget(ozquery:Fieldpos('datapedido')) ditens = ozquery:Fieldget(ozquery:Fieldpos('horadopedido')) fitens = ozquery:Fieldget(ozquery:Fieldpos('situacaopedido')) gitens = ozquery:Fieldget(ozquery:Fieldpos('numeronotafiscal')) hitens = ozquery:Fieldget(ozquery:Fieldpos('controledocumento')) mAdescontoacrescimo = ozquery:Fieldget(ozquery:Fieldpos('descontopercentualvalor')) mAvaloroupercentualdesconto = ozquery:Fieldget(ozquery:Fieldpos('valoroupercentualdesconto')) iitens = ozQuery:Fieldget(ozQuery:Fieldpos('razaosocial')) cwquery := "select * from ftnotafiscal where"+; " controledocumento = " + alltrim(str(hitens)) cwquery += " order by controledocumento asc;" owquery := oServer:Query(cwquery) //tPchavedanotafiscal = owquery:Fieldget(owquery:Fieldpos('chavedanotafiscal')) nsta = owQuery:Fieldget(owQuery:Fieldpos('statusdanotafiscal')) owquery:destroy() nsituacao = "" if nsta = "01" nsituacao = "Digitacao" elseif nsta = "02" nsituacao = "Validada" elseif nsta = "03" nsituacao = "Aguar.. recibo" elseif nsta = "04" nsituacao = "Aguar.. protocolo" elseif nsta = "05" nsituacao = "Autorizada" elseif nsta = "06" nsituacao = "Cancelada" elseif nsta = "07" nsituacao = "Inutilizada" elseif nsta = "08" nsituacao = "Denegada" endif //iitens = tPchavedanotafiscal mAtotaldeitens = 0 mAsubtotaldositens = 0 mAtotaldopedido = 0 if !empty(aitens) cwquery := "select * from ftpedidoitem where "+; "idpedido = " + alltrim(str(aitens)) +; " order by seqitempedido asc;" owquery := oServer:Query(cwQuery) DO WHILE ! owquery:Eof() tqtdpedida = owquery:Fieldget(owquery:Fieldpos('qtdpedida')) tvalorvendaunitario = owquery:Fieldget(owquery:Fieldpos('valorvendaunitario')) ttotaldoitem = owquery:Fieldget(owquery:Fieldpos('totaldoitem')) if empty(ttotaldoitem) mAtotaldeitens = mAtotaldeitens + tqtdpedida mAsubtotaldositens = mAsubtotaldositens + round((tqtdpedida * tvalorvendaunitario),2) else mAtotaldeitens = mAtotaldeitens + tqtdpedida mAsubtotaldositens = mAsubtotaldositens + ttotaldoitem endif owquery:Skip() sysrefresh() END owquery:destroy() if mAvaloroupercentualdesconto > 0 if mAdescontoacrescimo = 1 // percentual mAtotaldopedido = mAsubtotaldositens - (( mAsubtotaldositens * mAvaloroupercentualdesconto )/100) elseif mAdescontoacrescimo = 2 // valor mAtotaldopedido = mAsubtotaldositens - mAvaloroupercentualdesconto endif else mAtotaldopedido = mAsubtotaldositens endif aadd( asamplzconsentrada,{alltrim(str(bitens)),dtoc(citens),alltrim(ditens),; transform(mAsubtotaldositens,"@e 999,999,999.99"),; transform(mAtotaldopedido,"@e 999,999,999.99"),; alltrim(str(mAtotaldeitens)),; iif(fitens = 1,"Digitacao",iif(fitens = 2,"Liberado",iif(fitens = 3,"Cancelado",""))),; iif(empty(gitens),"",alltrim(str(gitens))) + iif(!empty(nsituacao)," | "+ nsituacao,""),iitens }) aadd( arecconsentrada,aitens ) endif ozquery:Skip() sysrefresh() ++nQtdContado if qtdlinhasgradepedido > 0 if nQtdContado >= qtdlinhasgradepedido exit endif endif END ozquery:destroy() obrzconsentrada:SetArray(asamplzconsentrada) obrzconsentrada:refresh() odlgwait:end() endif return nil function ralt_pedido(objetpedido) if len(arecconsentrada) <= 0 return nil endif if arecconsentrada[obrzconsentrada:nat] > 0 novo_pedido(objetpedido) malte = arecconsentrada[obrzconsentrada:nat] cquery := "select * from ftpedido where"+; " seqpedido = " + alltrim(str(malte)) +; " and pedidoromaneio = 'P'"+; " and entradasaida = 'S'"+; " order by seqpedido asc;" oquery := oServer:Query(cQuery) mPnumerodopedido = oQuery:Fieldget(oQuery:Fieldpos('numerodopedido')) oPnumerodopedido:ctext := mPnumerodopedido oquery:destroy() listbox_saida:end() oPnumerodopedido:setfocus() oPnumerodopedido:gotfocus() mAchaProcuraPedido = "S" keyboard(chr(9)) oPcodigoproduto:setfocus() oPcodigoproduto:gotfocus() endif return nil Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted June 22, 2016 Report Share Posted June 22, 2016 Rodrigo Bom dia Você terá que colocar um Splitter entre os xbrowses. Att João Bosco Ola João, neste caso sempre usei o bCHANGE conforme exemplos dos colegas acima. não entendi o Splitter , como funciona, procurei no samples e não achei exemplos com xbrowse. Obrigado. Quote Link to comment Share on other sites More sharing options...
joaosolution Posted June 23, 2016 Report Share Posted June 23, 2016 Luiz Segue exemplo com xBrowse: DEFINE WINDOW oWnd201 FROM 0,1 TO 32,82 TITLE "Cadastro de Projetos" ; MDICHILD OF oTelaPrincipal ; COLOR CLR_BLACK, GetSysColor( COLOR_BTNFACE ) aBrw:= {{"",{|| "" },30,0} ,; {"Num. OS",{|| ProBrw->COD_PROJ },60,0} ,{"Nome",{|| ProBrw->Nome },300,0},; {"Empresa Responsável",{|| ProBrw->EmpRaz },250,0},; {"Cod. Proposta",{|| ProBrw->Cod_proposta },90,0}, {"Cliente",{|| ProBrw->NOme2 },200,0},; {"Dt. Inicial",{|| ProBrw->Data_ini },80,0}, {"Dt. Final",{|| ProBrw->Data_fim },80,0},; {"Tolerância",{|| ProBrw->Dias_toler },60,0},{"Status",{|| ProBrw->Status },100,0},; {"Dt. Encerramento",{|| ProBrw->Data_ence },80,0} } oBrw := CRIA_BRW(@oBrw,oWnd201,aBrw,"ProBrw",,280,oTelaPrincipal:nWidth-50) oBrw:bLclicked := {|| ( ATUBRW2( oBrw2,ProBrw->COD_PROJ ), oBrw2:Refresh() ) } oBrw:nTop := 70 @ 350,0 SPLITTER oHSplit HORIZONTAL PREVIOUS CONTROLS oBrw HINDS CONTROLS oBrw2 ; TOP MARGIN 80 BOTTOM MARGIN 80 SIZE 500, 4 PIXEL OF oWnd201 _3DLOOK aBrw2:= {{"",{|| "" },30,0} ,; {"Item",{|| Str(ProBrw2->COD_ITEM,5) },50,0} ,{"Descrição",{|| ProBrw2->Descr },300,0},; {"Responsável",{|| ProBrw2->NomeR },200,0},; {"Horas Previstas",{|| ProBrw2->HORAS_PREV },100,0},; {"Dt. Inicial",{|| ProBrw2->Data_ini },80,0}, {"Dt. Final",{|| ProBrw2->Data_fim },80,0},; {"Tolerância",{|| ProBrw2->Dias_toler },60,0},{"Status",{|| ProBrw2->Status },100,0},; {"Dt. Encerramento",{|| ProBrw2->Data_enc },80,0},; {"Total",{|| RetTotResv(ProBrw2->COD_ITEM,ProBrw->COD_PROJ) },80,0},; {"%",{|| iif(RetTotResv(ProBrw2->COD_ITEM,ProBrw->COD_PROJ)>0,Str((RetTotResv(ProBrw2->COD_ITEM,ProBrw->COD_PROJ)*100)/ProBrw2->HORAS_PREV,6,2),"0") },80,0} } oBrw2 := CRIA_BRW(@oBrw2,oWnd201,aBrw2,"ProBrw2",,350,oTelaPrincipal:nWidth-50) oBrw2:nTop := 355 ACTIVATE WINDOW oWnd201 MAXIMIZED ON INIT ( oBrw:Adjust(),oBrw2:Adjust(),oBrw:Refresh(),oBrw2:Refresh(),oBrw:SetFocus()) ; VALID ( lAtivaWnd:=.F.,ProBrw->( DbCloseArea() ),.T. ) //---------------------------------------------------------------------------- Static Function ATUBRW2( pBrow2, pProj ) ProBrw2->( DbCloseArea() ) cSql1 = "SELECT If(ITEM_PROJ.COD_PROJ='','','') AS FLAG, ITEM_PROJ.COD_PROJ, ITEM_PROJ.COD_ITEM, "+; "ITEM_PROJ.COD_EMPRESA, ITEM_PROJ.RESPONSAVEL, ITEM_PROJ.HORAS_PREV, "+; "DATE_FORMAT(ITEM_PROJ.DATA_INI,'%d/%m/%Y') As DATA_INI, DATE_FORMAT(ITEM_PROJ.DATA_FIM,'%d/%m/%Y') As DATA_FIM, "+; "ITEM_PROJ.DIAS_TOLER & ' dia(s)' AS DIAS_TOLER1, ITEM_PROJ.DIAS_TOLER, ITEM_PROJ.STATUS, DATE_FORMAT(ITEM_PROJ.DATA_ENCERR,'%d/%m/%Y') As DATA_ENC,ITEM.DESCR, FUNC_ATIV.NOME AS NOMER " + ; "FROM FUNC_ATIV RIGHT JOIN (ITEM RIGHT JOIN ITEM_PROJ ON ITEM.COD_ITEM = ITEM_PROJ.COD_ITEM) ON (FUNC_ATIV.RE = ITEM_PROJ.RESPONSAVEL) AND (FUNC_ATIV.COD_EMPRESA = ITEM_PROJ.COD_EMPRESA) " + ; "WHERE ITEM_PROJ.COD_PROJ = '" + pProj + "'" USE SQL (cSql1) Alias ProBrw2 New DbSelectArea("ProBrw2") pBrow2:GoTop() pBrow2:Refresh() Return .T. //----------------------------------------------------------------------------// // Cria browse de cadastros // pBrw : Objeto do Browse // oTela : Objeto da Window // aBrw : Vetor com os campos do browse // cAlias : Área da tabela selecionada // nId : Se for resource informa o ID da tela se for Window 0 // pBot : Tamanho em linhas do Browse Bottom // pRig : Tamanho em colunas do Browse Right //----------------------------------------------------------------------------// FUNCTION CRIA_BRW(pBrw,oTela,aBrw,cAlias,nId, pBot, pRig) Public hi DEFAULT nId := 0 pBrw := TxBrowse():New( oTela ) pBrw:cAlias := cAlias For hi:=1 To Len(aBrw) oCol := pBrw:AddCol() oCol:cHeader := aBrw[hi,1] oCol:bStrData := aBrw[hi,2] //GenFieldBlock( "EmpBrw",hi) oCol:nDataStrAlign := aBrw[hi,4] // Data string alignment (left, center, right) oCol:nHeadStrAlign := AL_CENTER // Header string alignment (left, center, right) oCol:nWidth := aBrw[hi,3] Next pBrw:nRowHeight := 15 pBrw:nDataLines := 1 // Number of lines of the data rows pBrw:nHeaderLines := 1 // Number of lines of the header pBrw:nFooterLines := 0 // Number of lines of the footer pBrw:nDataType := 0 // Data type to be used: 0->rdd, 1->array, ... (more to come) If navigation codeblocks are not specified then get automatically initialized when adjusting the browse depending on this DATA value pBrw:nHeaderHeight := 18 pBrw:nFreeze := 0 pBrw:nMarqueeStyle := 5 // Marquee style (row selected) 0 No Marquee 1 Dotted cell 2 Solid cell 3 Highlight cell 4 Highlight row & Raise Cell 5 Highlight row 6 Highlight row & multiselect pBrw:lColDividerComplete := .T. pBrw:lAllowRowSizing := .F. pBrw:nColDividerStyle := LINESTYLE_BLACK pBrw:SetColor(CLR_WHITE, CLR_WHITE ) pBrw:SetFont(oFontxBro) pBrw:bClrSel := {|| { CLR_WHITE, CLR_BLACK} } // Cor da linha sem foco pBrw:bClrSelFocus := {|| { CLR_WHITE, nRGB( 000,100, 255 ) } } // Cor da linha selecionada fundo e frente If pBot != Nil pBrw:nBottom := pBot Endif If pRig != Nil pBrw:nRight := pRig Endif pBrw:GetDisplayCols() If nId == 0 pBrw:CreateFromCode() Else oBrw:CreateFromResource( nId ) Endif Return pBrw //------------------------------------------------------------------------------------------------ Att João Bosco Luiz Fernando 1 Quote Link to comment Share on other sites More sharing options...
ram_bh Posted June 23, 2016 Author Report Share Posted June 23, 2016 Prezados, Obrigado pelas postagens. Fiz da seguinte maneira: criei dois xbrowse e o primeiro faz refresh() no segundo ao movimentar o primeiro. Assim: @ 02.8,00 xBrowse oBrwRec Of oComRec ; ... On Change (oBrwRei:Refresh(),oBrwRec:SetFocus()) @ (22.8),00 xBrowse oBrwRei Of oComRec ; ... oBrwRec:CreateFromCode() oBrwRei:CreateFromCode() Activate Window oComRec Maximized On Init (oBrwRec:Setfocus()) Valid (oComRec:=Nil,.T.) Um abraço! Rodrigo Melo Belo Horizonte / MG 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.