Jump to content
Fivewin Brasil

zima

Membros
  • Posts

    276
  • Joined

  • Last visited

Everything posted by zima

  1. Olá! Também estamos precisando de uma solução dessas. (enviar o e-mail para o cliente com o arquivo XML e a DANFE em PDF). Muitos clientes tem pedido isso? Isso é possível? Grato Marcelo Zima Zimaq Ind. e Com. Ltda. Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  2. Obrigado Luiz Fernando! Que briga que foi isso ... Bem, para deixar registrado, consegui abrindo o prompt do msdos com administrador e rodando o registradll. Abraços, Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  3. Olá, boa tarde, Instalei um aplicativo para emitir NFe do Vagner Wirts, que utiliza a classe do Gilmer. Ocorre que não consigo carregar o Certificado Digital nesse aplicativo. Aparece o erro: "ERROR! NFE Util no está instaldo en esta PC." Como contornar esse erro? Alguém trabalha com Certficado Digital da Serasa em um micro com Windows 7? Se não, qual certificado digital funciona corretamente com o windows 7?? Desde já obrigado! Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  4. Olá, boa tarde, Instalei um aplicativo para emitir NFe do Vagner Wirts, que utiliza a classe do Gilmer. Ocorre que não consigo carregar o Certificado Digital nesse aplicativo. Aparece o erro: "ERROR! NFE Util no está instaldo en esta PC." Como contornar esse erro? Alguém trabalha com Certficado Digital da Serasa em um micro com Windows 7? Se não, qual certificado digital funciona corretamente com o windows 7?? Desde já obrigado! Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  5. Olá! Gostaria de colocar duas cores na variável txt abaixo (TXT_OSTATUS), quando na linha eu achar determinada palavra (IMPLEMENTADO). Em outras palavras, se na linha tiver "implementado", o texto sai de uma cor. Se não, sai de outra cor. Será que tem como fazer isso? Aproveitando, teria como modificar a fonte do texto também?? Obrigado desde já! REDEFINE FOLDER oFld_OCOR ID 101 OF oDlg_OCOR ; PROMPT "&Ocorrências do Sistema - Registros"; DIALOGS "OCORSIST" *-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- * * Dialogo - folder 0001 * *-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // REDEFINE GET oTips VAR cTips MEMO ID 67 OF oDlg_3 UPDATE NO MODIFY //When .f. // oTips:SetColor( nRGB( 0, 0, 0 ), nRGB( 255, 255, 255 ) ) // //oTips:lDisColors := .f. não funciona para campo MEMO // oTips:cTooltip := "Selecione o Serviço " REDEFINE GET oTXT_OSTATUS VAR TXT_OSTATUS MEMO ID 2001 OF oFld_OCOR:aDialogs[ 1 ] UPDATE NO MODIFY oTXT_OSTATUS:SetColor( nRGB( 0, 0, 190 ), nRGB( 255, 255, 190 ) ) REDEFINE GET oTXT_OMSG VAR TXT_OMSG TEXT ID 2002 OF oFld_OCOR:aDialogs[ 1 ] REDEFINE BUTTON btnOCORINCL ID 2003 OF oFld_OCOR:aDialogs[ 1 ] ACTION (OCOR_MSG(TXT_OMSG),; TXT_OMSG:="",oTXT_OMSG:Refresh()) REDEFINE BUTTON btnOCORSAIR ID 2004 OF oFld_OCOR:aDialogs[ 1 ] ACTION (oDlg_OCOR:End()) ocor_arquivo=".\DADOS\MAQSERV_TXT\OCORSIST.TXT" TXT_OSTATUS:=MEMOREAD(ocor_arquivo) oTXT_OSTATUS:bGotFocus:={||oTXT_OSTATUS:SetPos(Len(TXT_OSTATUS)) } oTXT_OSTATUS:Refresh() SET KEY VK_ESCAPE TO oDlg_OCOR:lHelpIcon:=.F. ACTIVATE DIALOG oDlg_OCOR CENTERED id=code>id=code>id='Arial'>Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  6. Olá! Gostaria de colocar duas cores na variável txt abaixo (TXT_OSTATUS), quando na linha eu achar determinada palavra (IMPLEMENTADO). Em outras palavras, se na linha tiver "implementado", o texto sai de uma cor. Se não, sai de outra cor. Será que tem como fazer isso? Aproveitando, teria como modificar a fonte do texto também?? Obrigado desde já! REDEFINE FOLDER oFld_OCOR ID 101 OF oDlg_OCOR ; PROMPT "&Ocorrências do Sistema - Registros"; DIALOGS "OCORSIST" *-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- * * Dialogo - folder 0001 * *-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // REDEFINE GET oTips VAR cTips MEMO ID 67 OF oDlg_3 UPDATE NO MODIFY //When .f. // oTips:SetColor( nRGB( 0, 0, 0 ), nRGB( 255, 255, 255 ) ) // //oTips:lDisColors := .f. não funciona para campo MEMO // oTips:cTooltip := "Selecione o Serviço " REDEFINE GET oTXT_OSTATUS VAR TXT_OSTATUS MEMO ID 2001 OF oFld_OCOR:aDialogs[ 1 ] UPDATE NO MODIFY oTXT_OSTATUS:SetColor( nRGB( 0, 0, 190 ), nRGB( 255, 255, 190 ) ) REDEFINE GET oTXT_OMSG VAR TXT_OMSG TEXT ID 2002 OF oFld_OCOR:aDialogs[ 1 ] REDEFINE BUTTON btnOCORINCL ID 2003 OF oFld_OCOR:aDialogs[ 1 ] ACTION (OCOR_MSG(TXT_OMSG),; TXT_OMSG:="",oTXT_OMSG:Refresh()) REDEFINE BUTTON btnOCORSAIR ID 2004 OF oFld_OCOR:aDialogs[ 1 ] ACTION (oDlg_OCOR:End()) ocor_arquivo=".\DADOS\MAQSERV_TXT\OCORSIST.TXT" TXT_OSTATUS:=MEMOREAD(ocor_arquivo) oTXT_OSTATUS:bGotFocus:={||oTXT_OSTATUS:SetPos(Len(TXT_OSTATUS)) } oTXT_OSTATUS:Refresh() SET KEY VK_ESCAPE TO oDlg_OCOR:lHelpIcon:=.F. ACTIVATE DIALOG oDlg_OCOR CENTERED id=code>id=code>id='Arial'>Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  7. Obrigado a todos pelo retorno. Resolvi a questão seguindo o orientação do gvc. Grato! 1) Vc esta criando 7 tag's de indice e depois selecionando a tag 8. Isso não dá certo. 2) OrdScope é para usar o indice ativo no filtro. Ex: Seu indice é por código e vc ativa o ordscope para filtrar uma faixa desses código. 3) Vc pode criar a tag 8 por descricao + numero e usar FOR para filtrar o arquivo. Ex. index on descricao + numero tag 8 for estmin <= quantidade - Veja que assim vc sempre terá nesse indice os registro que tiverem quantidade menor ou igual ao estoque mínimo de cada produto. Ah! Vc não precisa usar DELETED() no indice. Coloque SET DELETE ON no inicio do seu sistema. Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  8. Kapiaba, Vamos lá ... basicamente, tenho o banco de dados ESTOQUE.DBF com os campos descricao, numero, (caracter) e quantidade, estmin (numéricos). Quero montar uma listbox em ordem de descricao+numero, onde apareçam apenas os registros que atendam ao seguinte requisito (filtro): estmin>quantidade (quantidade em estoque) para gerar ordem de compra dos mesmos. Com SET FILTER fica fácil. A pergunta é: dá para usar apenas ORDSCOPE ? Grato! Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  9. Ainda não resolvi ... Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  10. Ico, Meu BD é pequeno (154KB). Sempre li que o uso do SET FILTER é desaconselhável, por isso tento filtrar com ORDSCOPE. Veja abaixo meu PRG: PARA INDEXAR: USE Estoque *-----------& AT_INDEX() *-----------& INDEX ON maquina+descricao+numero TAG 1 FOR !Deleted() Eval { || oMeter:Set( recno() ) } EVERY 50 INDEX ON codigoest TAG 2 FOR !Deleted() Eval { || oMeter:Set( recno() ) } EVERY 50 INDEX ON descricao+numero TAG 3 FOR !Deleted() Eval { || oMeter:Set( recno() ) } EVERY 50 INDEX ON numero+descricao TAG 4 FOR !Deleted() Eval { || oMeter:Set( recno() ) } EVERY 50 INDEX ON local1 TAG 5 FOR !Deleted() Eval { || oMeter:Set( recno() ) } EVERY 50 INDEX ON local2 TAG 6 FOR !Deleted() Eval { || oMeter:Set( recno() ) } EVERY 50 INDEX ON descricao TAG 7 FOR !Deleted() Eval { || oMeter:Set( recno() ) } EVERY 50 E DEPOIS PARA FILTRAR (AQUI ESTOU ME ENROLANDO!) DBSELECTAREA("ESTOQUE") ESTOQUE->( OrdSetFocus( nil )) ESTOQUE->(OrdScope(0,nil)) ESTOQUE->(OrdScope(1,nil)) SET FILTER TO ESTOQUE->( OrdSetFocus( 8 )) // descricao+numero+STRZERO((estmin-quantidade),6,0) ESTOQUE->(OrdScope(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"+"000000000000000000000000000000"+"000001")) ESTOQUE->(OrdScope(1,"ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"+"999999999999999999999999999999"+"999999")) DBGOTOP() COUNT TO Numevem id=code>id=code>Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  11. Olá, Tenho um banco de dados estoque com os campos descricao, numero, quantidade, estmin, sendo os dois primeiros tipo caracter e os dois últimos númericos. Quero que apareça em uma listbox apenas os registros onde o campo quantidade seja inferior ao campo estmin, usando ORDSCOPE. Alguém sabe como montar esse filtro? Com SET FILTER consigo fazer, mas dizem que não é aconselhável. Isso procede? Desde já obrigado! Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  12. Olá, Tenho um banco de dados estoque com os campos descricao, numero, quantidade, estmin, sendo os dois primeiros tipo caracter e os dois últimos númericos. Quero que apareça em uma listbox apenas os registros onde o campo quantidade seja inferior ao campo estmin, usando ORDSCOPE. Alguém sabe como montar esse filtro? Com SET FILTER consigo fazer, mas dizem que não é aconselhável. Isso procede? Desde já obrigado! Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  13. Pelo que vi, aparentemente essa função retorna um número quando uso o clipper e outro quando uso o xHarbour! Vou ter que testar micro a micro para pegar o número certo ... Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  14. Não é isso não ico! A função nSerialHD(("C:")) já retorna o número serial do HD em decimal. Exemplo: IF qualHD=543844839 // Anderson nUsuario:=1 extUSU:="Anderson" senhaatual:=CONTROLE->SANDERSON ... id=code>id=code>Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  15. Olá, No clipper utilizava a função abaixo e a mesma me retornava o serial do HD. qualHD:=nSerialHD(("C:")) id=code>id=code>Passei a compilar com xHarbour e ela não identifica mais. Tem outra função no xHarbour para isso? Grato desde já. Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  16. Olá, No clipper utilizava a função abaixo e a mesma me retornava o serial do HD. qualHD:=nSerialHD(("C:")) id=code>id=code>Passei a compilar com xHarbour e ela não identifica mais. Tem outra função no xHarbour para isso? Grato desde já. Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  17. Luisão, matou a pau! Kapiaba, obrigado pelas dicas de cores! Valeu! Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  18. Usando o código abaixo com clipper fica 100%. Com xHarbour o texto fica em preto! oLbx:nClrBackHead := CLR_HBLUE // Cor do fundo do cabeçalho oLbx:nClrBackFocus := CLR_AZUL_BRANCO // Cor do cursor em cima do item oLbx:nClrForeHead := CLR_BLANCO // Cor nos headers - cabeçalhos oLbx:nClrPane:={ ||IIF(IIF(X,X:=.F.,X:=.T.)=.T., ; CLR_LGREEN,CLR_LGRAY)} #Define CLR_AZUL_BRANCO nRGB( 040, 004, 090 ) // aZUL E eSCURO #Define CLR_BLANCO nRGB( 255, 255, 235 ) // ideal como fondo para escritura de texto id=code>id=code>Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  19. Olá, Queria que a cor do cursor do listbox ficasse azu escuro com a letra em branco, mas não estou conseguindo quando uso o xharbour para compilar (usando o clipper conseguia). Alguém tem a combinação RGB para isso? Grato. Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  20. Olá, Queria que a cor do cursor do listbox ficasse azu escuro com a letra em branco, mas não estou conseguindo quando uso o xharbour para compilar (usando o clipper conseguia). Alguém tem a combinação RGB para isso? Grato. Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  21. Olá, Gostaria de saber como implementar uma "pesquisa sensitiva" em um listbox. Vejam o caso: tenho um listbox apresentando dados do ESTOQUE.DBF e tenho um get ESTPROC. Quando o usuário vai digitando, por exemplo a descrição do produto (CALC...) o listbox já vai encontrando o primeiro produto com essa descrição e atualizando na tela. Abaixo segue o código que tenho hoje. Nesse caso o usuário digita e tem que teclar na lupa para atualizar o listbox. Queria modificar isso. Obrigado desde já!! DEFINE DIALOG oDlg_E RESOURCE "T_ESTOQUE" TITLE "Cadastro de Produtos" Font O_F_DLG // IF varestm=0 REDEFINE LISTBOX oLbx_E; FIELDS IIF(EMPTY(Estoque->DATAULTAT),aHbitmaps[ 2 ],aHbitmaps[ 1 ]),; " "+Estoque->(STRZERO(codigoest,05,0)),Estoque->descricao,Estoque->numero,; Estoque->maquina,Estoque->local1,Estoque->local2; HEADERS "S","Código","Descrição","Número","Máquina","Local_E","Local_F"; FIELDSIZES 015, 051, 300, 185, 160, 060, 060 ; FONT O_F_BRW; ID 101 OF oDlg_E Update; On DBLCLICK(IIF(ORIGEM=="Menu_Principal",(CAD_EST("A",ORIGEM),DBSELECTAREA("ESTOQUE"),oLbx_E:Refresh()),)) oLbx_E:bKeyDown:={|nKey|iif(nKey == K_ENTER, ( lSeleciona:=.T., oDlg:End() ), ESTPROC := KeySeek(nKey,oLbx_E, oESTPROC, @ESTPROC,nVisao) ) ,; iif( nKey==K_ENTER , lSeleciona:=.T. , oLbx_E:SetFocus() )} IF ORIGEM=="Menu_Principal" .OR. ORIGEM=="Orçamento" .OR. ORIGEM=="Pedido" .OR. ORIGEM=="ENF" oLbx_E:bKeyDown:={| nKey| if(nkey=13,(CAD_EST("A",ORIGEM),DBSELECTAREA("ESTOQUE"),oLbx_E:Refresh()),) } ENDIF // On DBLCLICK(IIF(ORIGEM=="Menu_Principal",(CAD_EST("A",ORIGEM),DBSELECTAREA("ESTOQUE"),Lista_TA(),Voltalista(),oLbx_E:Refresh()),)) // IF ORIGEM=="Menu_Principal" .OR. ORIGEM=="Orçamento" .OR. ORIGEM=="Pedido" .OR. ORIGEM=="ENF" // oLbx_E:bKeyDown:={| nKey| if(nkey=13,(CAD_EST("A",ORIGEM),DBSELECTAREA("ESTOQUE"),Lista_TA(),Voltalista(),oLbx_E:Refresh()),) } // ENDIF oLbx_E:nLineStyle := 2 oLbx_E:Refresh() oLbx_E:lCellStyle := .F. oLbx_E:nClrBackHead := CLR_HBLUE // Cor do fundo do cabeçalho oLbx_E:nClrBackFocus := CLR_AZUL_BRANCO // Cor do cursor em cima do item oLbx_E:nClrForeHead := CLR_BLANCO // Cor nos headers - cabeçalhos oLbx_E:nClrPane:={ ||IIF(IIF(X,X:=.F.,X:=.T.)=.T., ; CLR_LGREEN,CLR_LGRAY)} oLbx_E:cAlias :="Estoque" oLbx_E:SetFocus() // ELSEIF varestm=1 REDEFINE LISTBOX oLbx_ME; FIELDS " "+Estoque->(STRZERO(codigoest,05,0)),Estoque->descricao,Estoque->numero,; TRANSFORM(Estoque->quantidade,"99999"),TRANSFORM(Estoque->estmin,"99999"),; " "+Estoque->local1,TRANSFORM((Estoque->estmin - Estoque->quantidade),"99999"); HEADERS "Código","Descrição","Número","Qdade_T","Est.Mín."," Local_E","Saldo"; FIELDSIZES 051, 240, 170, 070, 070 , 062, 070; FONT O_F_BRW; ID 104 OF oDlg_E Update // On DBLCLICK(CAD_EST("A",ORIGEM),oLbx_ME:Refresh()) oLbx_ME:ajustify:={.F.,.F.,.F.,.T.,.T.,.T.,.T.} // oLbx_ME:bKeyDown:={| nKey| if(nkey=13,(CAD_EST("A",ORIGEM),oLbx_ME:Refresh()),) } oLbx_ME:nLineStyle := 2 oLbx_ME:Refresh() oLbx_ME:lCellStyle := .F. oLbx_ME:nClrBackHead := CLR_HBLUE // Cor do fundo do cabeçalho oLbx_ME:nClrBackFocus := CLR_AZUL_BRANCO // Cor do cursor em cima do item oLbx_ME:nClrForeHead := CLR_BLANCO // Cor nos headers - cabeçalhos oLbx_ME:nClrPane:={ ||IIF(IIF(X,X:=.F.,X:=.T.)=.T., ; CLR_LGREEN,CLR_LGRAY)} oLbx_ME:cAlias :="Estoque" // oLbx_ME:SetFocus() // ENDIF varrDEZ=DEZ REDEFINE COMBOBOX oCbx_E VAR nEOrden ITEMS { "Local_E (F4)","Local_F (F5)","Descrição (F6)" , "Código (F7)", "Máquina (F8)" , "Número (F9)" } ID 102 OF oDlg_E ; WHEN varestm=0; ON CHANGE (Orden_EST(nEOrden,oLbx_E) ,oLbx_E:GOTOP(), oLbx_E:Refresh(),oESTPROC:SETFOCUS()) UPDATE REDEFINE COMBOBOX oCbx_ME VAR nEOrden ITEMS { "Descrição" , "Código", "Número" } ID 90 OF oDlg_E ; WHEN varestm=1; ON CHANGE (emOrden_EST(nEOrden,oLbx_ME) ,oLbx_ME:GOTOP(), oLbx_ME:Refresh(),oEMESTPROC:SETFOCUS()) UPDATE IF ORIGEM="Orçamento" .OR. ORIGEM="NF" .OR. ORIGEM="Pedido" .OR. ORIGEM="MItens_Pedido" .OR. ORIGEM="MItens_PMQ" .OR. ORIGEM="PesqPeça" .OR. ORIGEM="OP" Set Key VK_F2 TO Set Key VK_F3 TO Set Key VK_F4 TO Set Key VK_F5 TO Set Key VK_F6 TO Set Key VK_F7 TO Set Key VK_F8 TO Set Key VK_F9 TO Set Key VK_F10 TO Set Key VK_INSERT TO Set Key VK_DELETE TO ENDIF SetKey(VK_ESCAPE,{||EST_Qual_origem(ORIGEM)}) SetKey(VK_F4,{||nEOrden:=1,Orden_EST(nEOrden,oLbx_E),oLbx_E:GOTOP(),oLbx_E:Refresh(),oCbx_E:Refresh(),oESTPROC:SETFOCUS()}) SetKey(VK_F5,{||nEOrden:=2,Orden_EST(nEOrden,oLbx_E),oLbx_E:GOTOP(),oLbx_E:Refresh(),oCbx_E:Refresh(),oESTPROC:SETFOCUS()}) SetKey(VK_F6,{||nEOrden:=3,Orden_EST(nEOrden,oLbx_E),oLbx_E:GOTOP(),oLbx_E:Refresh(),oCbx_E:Refresh(),oESTPROC:SETFOCUS()}) SetKey(VK_F7,{||nEOrden:=4,Orden_EST(nEOrden,oLbx_E),oLbx_E:GOTOP(),oLbx_E:Refresh(),oCbx_E:Refresh(),oESTPROC:SETFOCUS()}) SetKey(VK_F8,{||nEOrden:=5,Orden_EST(nEOrden,oLbx_E),oLbx_E:GOTOP(),oLbx_E:Refresh(),oCbx_E:Refresh(),oESTPROC:SETFOCUS()}) SetKey(VK_F9,{||nEOrden:=6,Orden_EST(nEOrden,oLbx_E),oLbx_E:GOTOP(),oLbx_E:Refresh(),oCbx_E:Refresh(),oESTPROC:SETFOCUS()}) IF ORIGEM="Menu_Principal" .AND. varestm=0 SetKey(VK_INSERT,{||CAD_EST("I",ORIGEM)}) SetKey(VK_DELETE,{||EST_EXCLUSAO()}) SetKey(VK_F2,{||EST_QUALETIQ()}) ENDIF REDEFINE GET oESTPROC var ESTPROC ID 2006 OF oDlg_E PICTURE "@!"; WHEN varestm=0; FONT O_F_GET COLOR CLR_HRED, CLR_HCYAN Update; VALID(LASTKEY()<>VK_ESCAPE) REDEFINE GET oEMESTPROC var EMESTPROC ID 91 OF oDlg_E PICTURE "@!"; WHEN varestm=1; FONT O_F_GET COLOR CLR_HRED, CLR_HCYAN Update; VALID(LASTKEY()<>VK_ESCAPE) // ------------------------------------------------------------------------ FUNCTION Orden_EST(nEOrden,oLbx_E) GO TOP IF nEOrden=1 SET ORDER TO 5 && local1 (escritório) ENDIF IF nEOrden=2 SET ORDER TO 6 && local2 (fábrica) ENDIF IF nEOrden=3 SET ORDER TO 3 && descricao+numero ENDIF IF nEOrden=4 SET ORDER TO 2 && codigo ENDIF IF nEOrden=5 SET ORDER TO 1 && máquina+descricao+numero ENDIF IF nEOrden=6 SET ORDER TO 4 && numero+descricao ENDIF MASC_ESTOQUE(nEOrden,oESTPROC,@ESTPROC) RETURN NIL // ------------------------------------------------------------------------ Function MASC_ESTOQUE(nEOrden,oGet,ESTPROC) IF nEOrden=3 .OR. nEOrden=5 .OR. nEOrden=6 ESTPROC:=SPACE(40) oGet:cPicture:="@!" oGet:oGet:Picture:="@!" oGet:Refresh() ELSEIF nEOrden=4 ESTPROC:=SPACE(5) oGet:cPicture:="99999" oGet:oGet:Picture:="@ 99999" oGet:Refresh() ELSEIF nEOrden=1 .OR. nEOrden=2 ESTPROC:=SPACE(5) oGet:cPicture:="@!" oGet:oGet:Picture:="@!" oGet:Refresh() ENDIF Return(.t.) // ------------------------------------------------------------------------ FUNCTION PROC_EST(nEOrden,ESTPROC,origemm) LOCAL numdescinicial, codsimachado, numdescachado, truque truque:=0 IF nEOrden=1 SET ORDER TO 5 // local1 (escritório) SET SOFTSEEK ON DBGOTOP() SEEK TRIM(ESTPROC) ELSEIF nEOrden=2 SET ORDER TO 6 // local2 (fábrica) SET SOFTSEEK ON DBGOTOP() SEEK TRIM(ESTPROC) ELSEIF nEOrden=3 SET ORDER TO 3 // descricao+numero SET SOFTSEEK ON DBGOTOP() SEEK TRIM(ESTPROC) ELSEIF nEOrden=4 IF EMPTY(ESTPROC) ESTPROC:="10001" ENDIF SET ORDER TO 2 // codigo SET SOFTSEEK ON DBGOTOP() SEEK VAL(ESTPROC) // oESTPROC:Refresh() ELSEIF nEOrden=5 SET ORDER TO 1 // maquina+descricao+numero SET SOFTSEEK ON DBGOTOP() SEEK TRIM(ESTPROC) ELSEIF nEOrden=6 numdescinicial=NUMERO+DESCRICAO // DBSELECTAREA("ESTOQUE") SET ORDER TO 4 // numero+descricao SET SOFTSEEK ON DBGOTOP() SEEK TRIM(ESTPROC) IF .NOT. FOUND() // Realiza agora a busca pelo similar DBSELECTAREA("SIMILAR") SET FILTER TO SET SOFTSEEK ON DBGOTOP() SIMILAR->(OrdSetFocus(1)) SEEK TRIM(ESTPROC) IF .NOT. FOUND() MsgAlert( "Não existe produto com essa característica ! ","Aviso") DBSELECTAREA("ESTOQUE") SET FILTER TO SET SOFTSEEK ON DBGOTOP() ESTOQUE->(OrdSetFocus(4)) // Ordem de numero+descricao SEEK numdescinicial // tenho que achar aqui ELSE truque:=1 codsimachado=CODIGOEST DBSELECTAREA("ESTOQUE") SET FILTER TO SET SOFTSEEK ON DBGOTOP() ESTOQUE->(OrdSetFocus(2)) // Ordem de codigoest SEEK codsimachado // tenho que achar numdescachado=NUMERO+DESCRICAO DBGOTOP() ESTOQUE->(OrdSetFocus(4)) // Ordem de numero+descricao SEEK numdescachado CAD_EST("A",origemm) ENDIF ENDIF ENDIF IF truque=0 // estava dando problema na escolha de produto similar na emissão de NF IF !FOUND() MsgAlert( "Não existe produto com essa característica ! Ponteiro posicionado no registro mais próximo.","Aviso") ENDIF ENDIF RETURN(.T.) // ------------------------------------------------------------------------ id=code>id=code>Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  22. Olá, Gostaria de saber como implementar uma "pesquisa sensitiva" em um listbox. Vejam o caso: tenho um listbox apresentando dados do ESTOQUE.DBF e tenho um get ESTPROC. Quando o usuário vai digitando, por exemplo a descrição do produto (CALC...) o listbox já vai encontrando o primeiro produto com essa descrição e atualizando na tela. Abaixo segue o código que tenho hoje. Nesse caso o usuário digita e tem que teclar na lupa para atualizar o listbox. Queria modificar isso. Obrigado desde já!! DEFINE DIALOG oDlg_E RESOURCE "T_ESTOQUE" TITLE "Cadastro de Produtos" Font O_F_DLG // IF varestm=0 REDEFINE LISTBOX oLbx_E; FIELDS IIF(EMPTY(Estoque->DATAULTAT),aHbitmaps[ 2 ],aHbitmaps[ 1 ]),; " "+Estoque->(STRZERO(codigoest,05,0)),Estoque->descricao,Estoque->numero,; Estoque->maquina,Estoque->local1,Estoque->local2; HEADERS "S","Código","Descrição","Número","Máquina","Local_E","Local_F"; FIELDSIZES 015, 051, 300, 185, 160, 060, 060 ; FONT O_F_BRW; ID 101 OF oDlg_E Update; On DBLCLICK(IIF(ORIGEM=="Menu_Principal",(CAD_EST("A",ORIGEM),DBSELECTAREA("ESTOQUE"),oLbx_E:Refresh()),)) oLbx_E:bKeyDown:={|nKey|iif(nKey == K_ENTER, ( lSeleciona:=.T., oDlg:End() ), ESTPROC := KeySeek(nKey,oLbx_E, oESTPROC, @ESTPROC,nVisao) ) ,; iif( nKey==K_ENTER , lSeleciona:=.T. , oLbx_E:SetFocus() )} IF ORIGEM=="Menu_Principal" .OR. ORIGEM=="Orçamento" .OR. ORIGEM=="Pedido" .OR. ORIGEM=="ENF" oLbx_E:bKeyDown:={| nKey| if(nkey=13,(CAD_EST("A",ORIGEM),DBSELECTAREA("ESTOQUE"),oLbx_E:Refresh()),) } ENDIF // On DBLCLICK(IIF(ORIGEM=="Menu_Principal",(CAD_EST("A",ORIGEM),DBSELECTAREA("ESTOQUE"),Lista_TA(),Voltalista(),oLbx_E:Refresh()),)) // IF ORIGEM=="Menu_Principal" .OR. ORIGEM=="Orçamento" .OR. ORIGEM=="Pedido" .OR. ORIGEM=="ENF" // oLbx_E:bKeyDown:={| nKey| if(nkey=13,(CAD_EST("A",ORIGEM),DBSELECTAREA("ESTOQUE"),Lista_TA(),Voltalista(),oLbx_E:Refresh()),) } // ENDIF oLbx_E:nLineStyle := 2 oLbx_E:Refresh() oLbx_E:lCellStyle := .F. oLbx_E:nClrBackHead := CLR_HBLUE // Cor do fundo do cabeçalho oLbx_E:nClrBackFocus := CLR_AZUL_BRANCO // Cor do cursor em cima do item oLbx_E:nClrForeHead := CLR_BLANCO // Cor nos headers - cabeçalhos oLbx_E:nClrPane:={ ||IIF(IIF(X,X:=.F.,X:=.T.)=.T., ; CLR_LGREEN,CLR_LGRAY)} oLbx_E:cAlias :="Estoque" oLbx_E:SetFocus() // ELSEIF varestm=1 REDEFINE LISTBOX oLbx_ME; FIELDS " "+Estoque->(STRZERO(codigoest,05,0)),Estoque->descricao,Estoque->numero,; TRANSFORM(Estoque->quantidade,"99999"),TRANSFORM(Estoque->estmin,"99999"),; " "+Estoque->local1,TRANSFORM((Estoque->estmin - Estoque->quantidade),"99999"); HEADERS "Código","Descrição","Número","Qdade_T","Est.Mín."," Local_E","Saldo"; FIELDSIZES 051, 240, 170, 070, 070 , 062, 070; FONT O_F_BRW; ID 104 OF oDlg_E Update // On DBLCLICK(CAD_EST("A",ORIGEM),oLbx_ME:Refresh()) oLbx_ME:ajustify:={.F.,.F.,.F.,.T.,.T.,.T.,.T.} // oLbx_ME:bKeyDown:={| nKey| if(nkey=13,(CAD_EST("A",ORIGEM),oLbx_ME:Refresh()),) } oLbx_ME:nLineStyle := 2 oLbx_ME:Refresh() oLbx_ME:lCellStyle := .F. oLbx_ME:nClrBackHead := CLR_HBLUE // Cor do fundo do cabeçalho oLbx_ME:nClrBackFocus := CLR_AZUL_BRANCO // Cor do cursor em cima do item oLbx_ME:nClrForeHead := CLR_BLANCO // Cor nos headers - cabeçalhos oLbx_ME:nClrPane:={ ||IIF(IIF(X,X:=.F.,X:=.T.)=.T., ; CLR_LGREEN,CLR_LGRAY)} oLbx_ME:cAlias :="Estoque" // oLbx_ME:SetFocus() // ENDIF varrDEZ=DEZ REDEFINE COMBOBOX oCbx_E VAR nEOrden ITEMS { "Local_E (F4)","Local_F (F5)","Descrição (F6)" , "Código (F7)", "Máquina (F8)" , "Número (F9)" } ID 102 OF oDlg_E ; WHEN varestm=0; ON CHANGE (Orden_EST(nEOrden,oLbx_E) ,oLbx_E:GOTOP(), oLbx_E:Refresh(),oESTPROC:SETFOCUS()) UPDATE REDEFINE COMBOBOX oCbx_ME VAR nEOrden ITEMS { "Descrição" , "Código", "Número" } ID 90 OF oDlg_E ; WHEN varestm=1; ON CHANGE (emOrden_EST(nEOrden,oLbx_ME) ,oLbx_ME:GOTOP(), oLbx_ME:Refresh(),oEMESTPROC:SETFOCUS()) UPDATE IF ORIGEM="Orçamento" .OR. ORIGEM="NF" .OR. ORIGEM="Pedido" .OR. ORIGEM="MItens_Pedido" .OR. ORIGEM="MItens_PMQ" .OR. ORIGEM="PesqPeça" .OR. ORIGEM="OP" Set Key VK_F2 TO Set Key VK_F3 TO Set Key VK_F4 TO Set Key VK_F5 TO Set Key VK_F6 TO Set Key VK_F7 TO Set Key VK_F8 TO Set Key VK_F9 TO Set Key VK_F10 TO Set Key VK_INSERT TO Set Key VK_DELETE TO ENDIF SetKey(VK_ESCAPE,{||EST_Qual_origem(ORIGEM)}) SetKey(VK_F4,{||nEOrden:=1,Orden_EST(nEOrden,oLbx_E),oLbx_E:GOTOP(),oLbx_E:Refresh(),oCbx_E:Refresh(),oESTPROC:SETFOCUS()}) SetKey(VK_F5,{||nEOrden:=2,Orden_EST(nEOrden,oLbx_E),oLbx_E:GOTOP(),oLbx_E:Refresh(),oCbx_E:Refresh(),oESTPROC:SETFOCUS()}) SetKey(VK_F6,{||nEOrden:=3,Orden_EST(nEOrden,oLbx_E),oLbx_E:GOTOP(),oLbx_E:Refresh(),oCbx_E:Refresh(),oESTPROC:SETFOCUS()}) SetKey(VK_F7,{||nEOrden:=4,Orden_EST(nEOrden,oLbx_E),oLbx_E:GOTOP(),oLbx_E:Refresh(),oCbx_E:Refresh(),oESTPROC:SETFOCUS()}) SetKey(VK_F8,{||nEOrden:=5,Orden_EST(nEOrden,oLbx_E),oLbx_E:GOTOP(),oLbx_E:Refresh(),oCbx_E:Refresh(),oESTPROC:SETFOCUS()}) SetKey(VK_F9,{||nEOrden:=6,Orden_EST(nEOrden,oLbx_E),oLbx_E:GOTOP(),oLbx_E:Refresh(),oCbx_E:Refresh(),oESTPROC:SETFOCUS()}) IF ORIGEM="Menu_Principal" .AND. varestm=0 SetKey(VK_INSERT,{||CAD_EST("I",ORIGEM)}) SetKey(VK_DELETE,{||EST_EXCLUSAO()}) SetKey(VK_F2,{||EST_QUALETIQ()}) ENDIF REDEFINE GET oESTPROC var ESTPROC ID 2006 OF oDlg_E PICTURE "@!"; WHEN varestm=0; FONT O_F_GET COLOR CLR_HRED, CLR_HCYAN Update; VALID(LASTKEY()<>VK_ESCAPE) REDEFINE GET oEMESTPROC var EMESTPROC ID 91 OF oDlg_E PICTURE "@!"; WHEN varestm=1; FONT O_F_GET COLOR CLR_HRED, CLR_HCYAN Update; VALID(LASTKEY()<>VK_ESCAPE) // ------------------------------------------------------------------------ FUNCTION Orden_EST(nEOrden,oLbx_E) GO TOP IF nEOrden=1 SET ORDER TO 5 && local1 (escritório) ENDIF IF nEOrden=2 SET ORDER TO 6 && local2 (fábrica) ENDIF IF nEOrden=3 SET ORDER TO 3 && descricao+numero ENDIF IF nEOrden=4 SET ORDER TO 2 && codigo ENDIF IF nEOrden=5 SET ORDER TO 1 && máquina+descricao+numero ENDIF IF nEOrden=6 SET ORDER TO 4 && numero+descricao ENDIF MASC_ESTOQUE(nEOrden,oESTPROC,@ESTPROC) RETURN NIL // ------------------------------------------------------------------------ Function MASC_ESTOQUE(nEOrden,oGet,ESTPROC) IF nEOrden=3 .OR. nEOrden=5 .OR. nEOrden=6 ESTPROC:=SPACE(40) oGet:cPicture:="@!" oGet:oGet:Picture:="@!" oGet:Refresh() ELSEIF nEOrden=4 ESTPROC:=SPACE(5) oGet:cPicture:="99999" oGet:oGet:Picture:="@ 99999" oGet:Refresh() ELSEIF nEOrden=1 .OR. nEOrden=2 ESTPROC:=SPACE(5) oGet:cPicture:="@!" oGet:oGet:Picture:="@!" oGet:Refresh() ENDIF Return(.t.) // ------------------------------------------------------------------------ FUNCTION PROC_EST(nEOrden,ESTPROC,origemm) LOCAL numdescinicial, codsimachado, numdescachado, truque truque:=0 IF nEOrden=1 SET ORDER TO 5 // local1 (escritório) SET SOFTSEEK ON DBGOTOP() SEEK TRIM(ESTPROC) ELSEIF nEOrden=2 SET ORDER TO 6 // local2 (fábrica) SET SOFTSEEK ON DBGOTOP() SEEK TRIM(ESTPROC) ELSEIF nEOrden=3 SET ORDER TO 3 // descricao+numero SET SOFTSEEK ON DBGOTOP() SEEK TRIM(ESTPROC) ELSEIF nEOrden=4 IF EMPTY(ESTPROC) ESTPROC:="10001" ENDIF SET ORDER TO 2 // codigo SET SOFTSEEK ON DBGOTOP() SEEK VAL(ESTPROC) // oESTPROC:Refresh() ELSEIF nEOrden=5 SET ORDER TO 1 // maquina+descricao+numero SET SOFTSEEK ON DBGOTOP() SEEK TRIM(ESTPROC) ELSEIF nEOrden=6 numdescinicial=NUMERO+DESCRICAO // DBSELECTAREA("ESTOQUE") SET ORDER TO 4 // numero+descricao SET SOFTSEEK ON DBGOTOP() SEEK TRIM(ESTPROC) IF .NOT. FOUND() // Realiza agora a busca pelo similar DBSELECTAREA("SIMILAR") SET FILTER TO SET SOFTSEEK ON DBGOTOP() SIMILAR->(OrdSetFocus(1)) SEEK TRIM(ESTPROC) IF .NOT. FOUND() MsgAlert( "Não existe produto com essa característica ! ","Aviso") DBSELECTAREA("ESTOQUE") SET FILTER TO SET SOFTSEEK ON DBGOTOP() ESTOQUE->(OrdSetFocus(4)) // Ordem de numero+descricao SEEK numdescinicial // tenho que achar aqui ELSE truque:=1 codsimachado=CODIGOEST DBSELECTAREA("ESTOQUE") SET FILTER TO SET SOFTSEEK ON DBGOTOP() ESTOQUE->(OrdSetFocus(2)) // Ordem de codigoest SEEK codsimachado // tenho que achar numdescachado=NUMERO+DESCRICAO DBGOTOP() ESTOQUE->(OrdSetFocus(4)) // Ordem de numero+descricao SEEK numdescachado CAD_EST("A",origemm) ENDIF ENDIF ENDIF IF truque=0 // estava dando problema na escolha de produto similar na emissão de NF IF !FOUND() MsgAlert( "Não existe produto com essa característica ! Ponteiro posicionado no registro mais próximo.","Aviso") ENDIF ENDIF RETURN(.T.) // ------------------------------------------------------------------------ id=code>id=code>Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  23. Bom dia! Será que para esse caso AFILL não se aplica?? SDS, Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  24. Olá, Tenho uma ARRAY com uma listbox, conforme código abaixo: (itens para uma Nota Fiscal) REDEFINE LISTBOX oLbx_NF; FIELDS aARRAYNF[oLbx_NF],aARRAYNF[oLbx_NF],aARRAYNF[oLbx_NF],aARRAYNF[oLbx_NF],; aARRAYNF[oLbx_NF],aARRAYNF[oLbx_NF],aARRAYNF[oLbx_NF],aARRAYNF[oLbx_NF],; aARRAYNF[oLbx_NF],aARRAYNF[oLbx_NF],aARRAYNF[oLbx_NF],aARRAYNF[oLbx_NF]; HEADERS "Item","Código","Máquina","Descrição"," CF","ST","CFOP","Unidade","Qdade",; "Unitário (R$)", "Total (R$) ","Fabricação"; FIELDSIZES 30,40,105,235,60,24,35,47,40,76,99,30; FONT OFDLG; CURSOR oDEDO_2; ID 1000 OF oFld_NF:aDialogs[ 2 ]; id=code>id=code>Digamos que depois que ela tem umas 7 linhas, quero preencher todas as colunas da CFOP com "6.102". Como fazer isso utilizando a função AFILL() ??? Obrigado desde já! Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
  25. Olá, Tenho uma ARRAY com uma listbox, conforme código abaixo: (itens para uma Nota Fiscal) REDEFINE LISTBOX oLbx_NF; FIELDS aARRAYNF[oLbx_NF],aARRAYNF[oLbx_NF],aARRAYNF[oLbx_NF],aARRAYNF[oLbx_NF],; aARRAYNF[oLbx_NF],aARRAYNF[oLbx_NF],aARRAYNF[oLbx_NF],aARRAYNF[oLbx_NF],; aARRAYNF[oLbx_NF],aARRAYNF[oLbx_NF],aARRAYNF[oLbx_NF],aARRAYNF[oLbx_NF]; HEADERS "Item","Código","Máquina","Descrição"," CF","ST","CFOP","Unidade","Qdade",; "Unitário (R$)", "Total (R$) ","Fabricação"; FIELDSIZES 30,40,105,235,60,24,35,47,40,76,99,30; FONT OFDLG; CURSOR oDEDO_2; ID 1000 OF oFld_NF:aDialogs[ 2 ]; id=code>id=code>Digamos que depois que ela tem umas 7 linhas, quero preencher todas as colunas da CFOP com "6.102". Como fazer isso utilizando a função AFILL() ??? Obrigado desde já! Marcelo Zima São Caetano do Sul/SP zima@uol.com.br FW 2.3,Clipper 5.3,Workshop,Blinker 7.0
×
×
  • Create New...