Jump to content
Fivewin Brasil

oziel

Membros
  • Posts

    185
  • Joined

  • Last visited

  • Days Won

    5

Everything posted by oziel

  1. Obrigado pelas dicas. Infelizmente não consegui usar OrdScope() foi compilado pelo Clipper 5.3 mas o Blinker 5.1 não aceitou. O último teste que fiz no Foxprox 2.5 deu certo como foi escrito abaixo. Mas, em FW só sai no Browse um registro e é falso. Tratanto de abrir um arq.(DBF)temporario não dá pois o usuário precisa alterar o registro. Tudo indica que eu vou continuar com o Set Filter. ............................... cData = Date() CursorWait() .................. DEFINE DIALOG oDlg RESOURCE "DATA" REDEFINE GET oG130 VAR cDATA PICTURE '99/99/99' ID 126 OF oDlg ACTIVATE DIALOG oDlg CENTERED .................. Hora = Time() // Filtro Hora_Rand = Space(6) Hora_Rand = Subst(Hora,1,2)+Subst(Hora,4,2)+Subst(Hora,7,2) PQ = "PQ"+LTRIM(Subst(Hora_Rand,1,6)) // arq. temporario. Use Atende Alias Atende1 Shared New DbGotop() Index on dtos(Consulta) to .\TMP\&PQ For cData=Consulta Sele Atende1 Set Index to .\TMP\&PQ DbGotop() .................. REDEFINE LISTBOX oLbx FIELDS Atende->CODIGO, ; Atende->Nome, ; Atende->COMP, ; .................. Valeu... OZIEL LOPES FW 22c - Clipper 5.3b - Workshop 4.0
  2. Amigos... Já fiz algumas pesquisas no forum para ver se tem algu parecido, mas não encontrei. Estou precisando de uma ajuda. No função abaixo eu realizo um Set Filter para Data, para só mostar as datas solicitadas, acontece que com o set filter o sistema já está ficando lento. Coloque essas linhas que já utilizo em outro prog. data+codigo etc. dar perfeito. Neste caso é para Ordenar e Separar só a data pedida. Após a execução mostra todo o Banco. Detalhe no Banco existem no campo "Consulta" datas em branco. //-------------------------------------------------------- FUNCTION AtendeHoje() LOCAL oDlg, oLbx // Objetos Caixa de Dialogo LOCAL oFnt,oG120,G130 cDATA = DTOC(DATE()) // Data do filtro. CursorWait() DEFINE DIALOG oDlg RESOURCE "DATA" REDEFINE GET oG130 VAR cDATA PICTURE '99/99/99' ID 126 OF oDlg ACTIVATE DIALOG oDlg CENTERED // Abrir Base Dados e fnção Set Filter ------------------------------------ * Select Atende * Set Index to Atende * Set Order to 1 * Set filter to dtoc(consulta) = cDATA * dbGoTop() * MsgRun("Filtrando dos Dados... Aguarde... ","Um momento!") //---------- Indices - arq. tmp - Hora = Time() // Filtro Hora_Rand = Space(6) Hora_Rand = Subst(Hora,1,2)+Subst(Hora,4,2)+Subst(Hora,7,2) PQ = "PQ"+LTRIM(Subst(Hora_Rand,1,6)) // arq. temporario. Select Atende Index on dtoc(Consulta) TAG AT_CONS to .\TMP\&PQ WHILE (dtoc(consulta) = cData) Select Atende Set Index To .\TMP\&PQ Set Order to 1 DbGotop() //---------- Fim - Indices por arq. tmp ------------------------------------ DEFINE FONT oFnt NAME "Arial" SIZE 0, -10 // Caixa de Dialogo --------------------------------------------------- oNome = Space(20) DEFINE DIALOG oDlg RESOURCE "ATENDEHOJE" TITLE "GRH-Gerenciamento de Recusros Humanos - Por Data." OZIEL LOPES FW 22c - Clipper 5.3b - Workshop 4.0
  3. Amigos... Já fiz algumas pesquisas no forum para ver se tem algu parecido, mas não encontrei. Estou precisando de uma ajuda. No função abaixo eu realizo um Set Filter para Data, para só mostar as datas solicitadas, acontece que com o set filter o sistema já está ficando lento. Coloque essas linhas que já utilizo em outro prog. data+codigo etc. dar perfeito. Neste caso é para Ordenar e Separar só a data pedida. Após a execução mostra todo o Banco. Detalhe no Banco existem no campo "Consulta" datas em branco. //-------------------------------------------------------- FUNCTION AtendeHoje() LOCAL oDlg, oLbx // Objetos Caixa de Dialogo LOCAL oFnt,oG120,G130 cDATA = DTOC(DATE()) // Data do filtro. CursorWait() DEFINE DIALOG oDlg RESOURCE "DATA" REDEFINE GET oG130 VAR cDATA PICTURE '99/99/99' ID 126 OF oDlg ACTIVATE DIALOG oDlg CENTERED // Abrir Base Dados e fnção Set Filter ------------------------------------ * Select Atende * Set Index to Atende * Set Order to 1 * Set filter to dtoc(consulta) = cDATA * dbGoTop() * MsgRun("Filtrando dos Dados... Aguarde... ","Um momento!") //---------- Indices - arq. tmp - Hora = Time() // Filtro Hora_Rand = Space(6) Hora_Rand = Subst(Hora,1,2)+Subst(Hora,4,2)+Subst(Hora,7,2) PQ = "PQ"+LTRIM(Subst(Hora_Rand,1,6)) // arq. temporario. Select Atende Index on dtoc(Consulta) TAG AT_CONS to .\TMP\&PQ WHILE (dtoc(consulta) = cData) Select Atende Set Index To .\TMP\&PQ Set Order to 1 DbGotop() //---------- Fim - Indices por arq. tmp ------------------------------------ DEFINE FONT oFnt NAME "Arial" SIZE 0, -10 // Caixa de Dialogo --------------------------------------------------- oNome = Space(20) DEFINE DIALOG oDlg RESOURCE "ATENDEHOJE" TITLE "GRH-Gerenciamento de Recusros Humanos - Por Data." OZIEL LOPES FW 22c - Clipper 5.3b - Workshop 4.0
  4. oK.. Testado e funcionando perfeito Tc. OZIEL LOPES FW 22c - Clipper 5.3b - Workshop 4.0
  5. Obrigado. Já utilizei a função oMeter em outra área, e foi tudo ok. Só queria saber se existe outra função. Mais uma vez obrigado, vou testar qq coisa informo. Tc OZIEL LOPES FW 22c - Clipper 5.3b - Workshop 4.0
  6. Ola..! Estou precisando de uma dica ou função para Mostrar na tela o processamento de uma rotina, fiz com MsgRun mais a tela fica piscando e o proc. fica lento. Como funciona a rotina: 1) No arquivo A procura um código e depois vai ao Arq. B , filtra e repoe os dados. Veja a função abaixo. // ------------------------------------------------------------------------ // Programa ....: Atende.PRG // Descri‡ao ...: Gerenciamento de Recursos Humanos // Autor .......: Oziel Lopes da Silva // Fun‡ao .....: AtuSetor // -------------------------------------------------------------------------- Function AtuSetor // Atualiza‡Æo do Setor do Cad. de Atestados. If MsgYesNo( "Confirma a Atualização ? "," Confirmação") Continue Else Return Endif cNivel = Space(2) cNivel = Operador->Nivel If cNivel <= '04' MsgStop(OemToAnsi("Nivel de Acesso nÆo Permitido !"),OemToAnsi("Aten‡Æo !")) Return Endif Sele Atende Set Order to 10 Goto Top MsgRun (" Aguarde Ajustando os Dados "," Mensagem ") Cont1 = 1 Do While ! Eof() cC_Atend = Space(6) // Cod.Atend cS_Atend = Space(12) // Set.Atend cS_CadAt= Space(12) // Cod.Set.Atest cC_Atend = Atende->Codigo cS_Atend = Atende->Setor Sele Cadatest Set Order to 3 Goto Top Set filter to Codigo = cC_Atend If Codigo <> cC_Atend Skip 1 Endif If TravaArq(5) Replace all Setor with cS_Atend Libera() * MsgRun(" Gravando Reg: "+ Str(Cont1,6,0) +" De: " +Str(Cont,6,0)," Mensagem: "+(Atende->Codigo)) Cont1 = Cont1 + 1 Endif Set Filter to Sele Atende Set Order to 10 Skip 1 If Eof() MsgStop(" Final do Arquivo - Processo Concluido "," Mensagem") Endif If Lastkey() = 27 MsgStop(" Processo Interrompido pelo Usuario. "," Mensagem") Exit Endif Enddo Return Nil //---------------------------------------------- OZIEL LOPES FW 22c - Clipper 5.3b - Workshop 4.0
  7. Ola..! Estou precisando de uma dica ou função para Mostrar na tela o processamento de uma rotina, fiz com MsgRun mais a tela fica piscando e o proc. fica lento. Como funciona a rotina: 1) No arquivo A procura um código e depois vai ao Arq. B , filtra e repoe os dados. Veja a função abaixo. // ------------------------------------------------------------------------ // Programa ....: Atende.PRG // Descri‡ao ...: Gerenciamento de Recursos Humanos // Autor .......: Oziel Lopes da Silva // Fun‡ao .....: AtuSetor // -------------------------------------------------------------------------- Function AtuSetor // Atualiza‡Æo do Setor do Cad. de Atestados. If MsgYesNo( "Confirma a Atualização ? "," Confirmação") Continue Else Return Endif cNivel = Space(2) cNivel = Operador->Nivel If cNivel <= '04' MsgStop(OemToAnsi("Nivel de Acesso nÆo Permitido !"),OemToAnsi("Aten‡Æo !")) Return Endif Sele Atende Set Order to 10 Goto Top MsgRun (" Aguarde Ajustando os Dados "," Mensagem ") Cont1 = 1 Do While ! Eof() cC_Atend = Space(6) // Cod.Atend cS_Atend = Space(12) // Set.Atend cS_CadAt= Space(12) // Cod.Set.Atest cC_Atend = Atende->Codigo cS_Atend = Atende->Setor Sele Cadatest Set Order to 3 Goto Top Set filter to Codigo = cC_Atend If Codigo <> cC_Atend Skip 1 Endif If TravaArq(5) Replace all Setor with cS_Atend Libera() * MsgRun(" Gravando Reg: "+ Str(Cont1,6,0) +" De: " +Str(Cont,6,0)," Mensagem: "+(Atende->Codigo)) Cont1 = Cont1 + 1 Endif Set Filter to Sele Atende Set Order to 10 Skip 1 If Eof() MsgStop(" Final do Arquivo - Processo Concluido "," Mensagem") Endif If Lastkey() = 27 MsgStop(" Processo Interrompido pelo Usuario. "," Mensagem") Exit Endif Enddo Return Nil //---------------------------------------------- OZIEL LOPES FW 22c - Clipper 5.3b - Workshop 4.0
  8. Oi... Descupe-me por não ter postado nada antes. Passei uma semana viajando. Obrigado pela informação do arq. temporário. Vou fazer, depois, em meus progs. em clipper já utilizo e sei que a velocidade é maior. Mais, ao voltar tive outra ideia, coloquei ao encerrar a segunda caixa de diálogo, um set filter igual ao da primeira, e deu certo, veja como escrevi. 1) Função FUNCTION Recados() // Recados Recebidos LOCAL oDlg, oLbx // Objetos Caixa de Dialogo LOCAL oFnt,oG120 ... ... Select Recados Set Order to 1 DbGotop() Set filter to Recados->Para = cCodigo ... ACTIVATE DIALOG oDlg CENTERED RELEASE oFnt Set Filter to Return Nil 2) Função FUNCTION VerRecados() // Recados Enviados. LOCAL oDlg, oLbx // Objetos Caixa de Dialogo LOCAL oFnt,oG120 ... Select Recados Set Order to 1 DbGotop() Set filter to Recados->De = cCodigo ... ACTIVATE DIALOG oDlg CENTERED RELEASE oFnt Set filter to Recados->Para = cCodigo Return Nil OZIEL LOPES FW 22c - Clipper 5.3b - Workshop 4.0
  9. Cara! Não deu certo com oLbx e oLbx2 ou sejam dois objetos, pois qdo retorna os dados continuam da última janela aberta. Aguardo, qq sugestão... OZIEL LOPES FW 22c - Clipper 5.3b - Workshop 4.0
  10. Obrigado. Vou testar qq coisa volto a informar... OZIEL LOPES FW 22c - Clipper 5.3b - Workshop 4.0
  11. Criei no meu programa de Atendimento Médico um Browse chamada de Recados()onde através do Set Filter aparecem só os recados que me foram enviados. Depois criei um botaão que chama outra a outra função VerRecados() que mostra por todos os recados que eu enviei. Bem, quando abro Recados() pela primeira vez tudo está perfeito, mais qdo abro VerRecados() através (Botao 108) a tela que abre não atualiza os dados, eles continuam da tela VerRecados() Vejam o fonte: Function Recados() Local oDlg, oLbx // Objetos Caixa de Dialogo LocaL oFnt,oG120 Local aHBitMaps:= { ReadBitmap , ".\bmp\Level1.bmp" ), ; // Verde ReadBitmap( 0, ".\bmp\Level2.bmp" ),; // Vermelho ReadBitmap( 0, ".\bmp\Level3.bmp" ) } // Amarelo // Abrir Base Dados --------------------------------------------------- Select Recados Set Order to 1 DbGotop() Set Filter to Recados->Para = cCodigo DEFINE FONT oFnt NAME "Arial" SIZE 0, -10 // Caixa de Dialogo --------------------------------------------------- DEFINE DIALOG oDlg RESOURCE "BROWSEREC" TITLE "GRH - Recados. - Recebidos" CursorWait() .... .... REDEFINE BTNBMP RESOURCE "BTNREC" ID 108 OF oDlg ; ACTION( VerRecados(), ; oLbx:GoTop(), ; oLbx:Refresh() ) ; TOOLTIP OemToAnsi( "Ver Recados Enviadoss " ) ; NOBORDER //------------------------------------------------------ FUNCTION VerRecados() Local oDlg, oLbx // Objetos Caixa de Dialogo Local oFnt,oG120 Local aHBitMaps:= { ReadBitmap( 0, ".\bmp\Level1.bmp" ), ; // Verde ReadBitmap( 0, ".\bmp\Level2.bmp" ),; // Vermelho ReadBitmap( 0, ".\bmp\Level3.bmp" ) } // Amarelo // Abrir Base Dados --------------------------------------------------- Select Recados Set Order to 1 DbGotop() Set filter to Recados->De = cCodigo DEFINE FONT oFnt NAME "Arial" SIZE 0, -10 // Caixa de Dialogo --------------------------------------------------- DEFINE DIALOG oDlg RESOURCE "BROWSEREC_V" TITLE "GRH - Recados. - Enviados." CursorWait() REDEFINE LISTBOX oLbx FIELDS Recados->NOMEREM, ; Recados->NOMEDES, ; aHBitmaps[cApague(Recados->Apague)],; // no browse indicando o semaforo Dtoc(Recados->Data),; Recados->TEXTO, ; Recados->GRAVACAO, ; Recados->De, ; Recados->Para ; HEADERS "Remetente","Destinat.","X","Data","Texto","H. Grav.","De ","Para"; FIELDSIZES 80, 80, 16, 45, 300, 50, 40, 40; COLOR CLR_BLACK, CLR_WHITE ; FONT oFnt ; ID 101 ; OF oDlg ; ON DBLCLICK(GetRecados(.F.), oLbx:Refresh()) REDEFINE BITMAP RESOURCE "BANCO2" ID 102 OF oDlg REDEFINE BTNBMP RESOURCE "BTNEXIT" ID 109 OF oDlg ; ACTION( oDlg:End() ) ; TOOLTIP OemToAnsi( "Voltar ao Menu Principal" ) ; NOBORDER ACTIVATE DIALOG oDlg CENTERED Release oFnt Set filter to RETURN NIL //----------------------------------------------------- Aguardo mensagens... OZIEL LOPES FW 22c - Clipper 5.3b - Workshop 4.0
  12. Criei no meu programa de Atendimento Médico um Browse chamada de Recados()onde através do Set Filter aparecem só os recados que me foram enviados. Depois criei um botaão que chama outra a outra função VerRecados() que mostra por todos os recados que eu enviei. Bem, quando abro Recados() pela primeira vez tudo está perfeito, mais qdo abro VerRecados() através (Botao 108) a tela que abre não atualiza os dados, eles continuam da tela VerRecados() Vejam o fonte: Function Recados() Local oDlg, oLbx // Objetos Caixa de Dialogo LocaL oFnt,oG120 Local aHBitMaps:= { ReadBitmap , ".\bmp\Level1.bmp" ), ; // Verde ReadBitmap( 0, ".\bmp\Level2.bmp" ),; // Vermelho ReadBitmap( 0, ".\bmp\Level3.bmp" ) } // Amarelo // Abrir Base Dados --------------------------------------------------- Select Recados Set Order to 1 DbGotop() Set Filter to Recados->Para = cCodigo DEFINE FONT oFnt NAME "Arial" SIZE 0, -10 // Caixa de Dialogo --------------------------------------------------- DEFINE DIALOG oDlg RESOURCE "BROWSEREC" TITLE "GRH - Recados. - Recebidos" CursorWait() .... .... REDEFINE BTNBMP RESOURCE "BTNREC" ID 108 OF oDlg ; ACTION( VerRecados(), ; oLbx:GoTop(), ; oLbx:Refresh() ) ; TOOLTIP OemToAnsi( "Ver Recados Enviadoss " ) ; NOBORDER //------------------------------------------------------ FUNCTION VerRecados() Local oDlg, oLbx // Objetos Caixa de Dialogo Local oFnt,oG120 Local aHBitMaps:= { ReadBitmap( 0, ".\bmp\Level1.bmp" ), ; // Verde ReadBitmap( 0, ".\bmp\Level2.bmp" ),; // Vermelho ReadBitmap( 0, ".\bmp\Level3.bmp" ) } // Amarelo // Abrir Base Dados --------------------------------------------------- Select Recados Set Order to 1 DbGotop() Set filter to Recados->De = cCodigo DEFINE FONT oFnt NAME "Arial" SIZE 0, -10 // Caixa de Dialogo --------------------------------------------------- DEFINE DIALOG oDlg RESOURCE "BROWSEREC_V" TITLE "GRH - Recados. - Enviados." CursorWait() REDEFINE LISTBOX oLbx FIELDS Recados->NOMEREM, ; Recados->NOMEDES, ; aHBitmaps[cApague(Recados->Apague)],; // no browse indicando o semaforo Dtoc(Recados->Data),; Recados->TEXTO, ; Recados->GRAVACAO, ; Recados->De, ; Recados->Para ; HEADERS "Remetente","Destinat.","X","Data","Texto","H. Grav.","De ","Para"; FIELDSIZES 80, 80, 16, 45, 300, 50, 40, 40; COLOR CLR_BLACK, CLR_WHITE ; FONT oFnt ; ID 101 ; OF oDlg ; ON DBLCLICK(GetRecados(.F.), oLbx:Refresh()) REDEFINE BITMAP RESOURCE "BANCO2" ID 102 OF oDlg REDEFINE BTNBMP RESOURCE "BTNEXIT" ID 109 OF oDlg ; ACTION( oDlg:End() ) ; TOOLTIP OemToAnsi( "Voltar ao Menu Principal" ) ; NOBORDER ACTIVATE DIALOG oDlg CENTERED Release oFnt Set filter to RETURN NIL //----------------------------------------------------- Aguardo mensagens... OZIEL LOPES FW 22c - Clipper 5.3b - Workshop 4.0
  13. oziel

    Foto BMP

    Obrigado. Vou testar qq dúvida entro em contato. Oziel Lopes FW2.2C - CLIPPER 53 Workshop 4.5
  14. oziel

    Foto BMP

    Oi.. Galera. - Depois de quase dois anos voltei a brincar com FW. Tenho um programa que venho trabalhando com ele desde 2005 ná area de Cadastro de Curriculos e Pscicologia Ocupacional com fotos etc... As fotos são tiradas em um programa (PhotImpact)através de uma webcam e depois salvas em um diretorio determinado. (dá um trabalhinho) Vi alguns tópicos no forum sobre prog. que utilizam rotinas de FW e já salvam diretamente sem muita frescura. Estou precisando de uma dica. Grato. Oziel Lopes FW 22c - Clipper 53 - WorkShop 4.5
  15. oziel

    Foto BMP

    Oi.. Galera. - Depois de quase dois anos voltei a brincar com FW. Tenho um programa que venho trabalhando com ele desde 2005 ná area de Cadastro de Curriculos e Pscicologia Ocupacional com fotos etc... As fotos são tiradas em um programa (PhotImpact)através de uma webcam e depois salvas em um diretorio determinado. (dá um trabalhinho) Vi alguns tópicos no forum sobre prog. que utilizam rotinas de FW e já salvam diretamente sem muita frescura. Estou precisando de uma dica. Grato. Oziel Lopes FW 22c - Clipper 53 - WorkShop 4.5
  16. Pesoal, sei que esse tópico é de 2006. Mais tb houve postagens em dez de 2007. Em 2003 recebi uma proposta de prod. de um programa em para a inauguração de uma empresa de Recursos Humanos com Cadastro de Curriculos etc... e fiz uma contraproposta entregar um programa ambiente Windows com telas gráficas. (Um desafio, coisa de programador ou de louco) Como começar um projeto em ambiente Gráfico se eu so sabia escrever em Clipper 5.2c e não tinha idéia o que fazer. Comprei o Livro do Vilian,o pacote FiveWin do Ariston, baixei alguns programas free com fontes.. Engraçado que até hoje tenho acesso ao site. Aceito tb que o disign dos programas não sejam tão bonitos e atualizados, mas em relação a golpe, não concordo. Grato OZIEL LOPES FW+WORKSHOP 4.5+BLINKER 5.10 Será que eu vou abandonar o FW??? Não eu vou para FWH.
  17. Resolvi. Obrigado Kabelo e Yuri pelas informações e ajuda. Yuri informou que era para colocar um return .F. após a procura, - O programa voltou a caixa de Dialogo. Bem, mais eu queria fechar a caixa de Dialogo, então simulei a tecla ESC E fiz o seguinte: If... Cadastro->(DbSetorder(1)) DbGotop() Keyboard Chr(27) Return .F. Endif Tchau.... Feliz 2008 Oziel Lopes FW 2.2c + Workshop 4.5 + Blinker 5.10
  18. Bem, antes não existia o Quit e nem fechava os arquivos. Caso eu retire. Veja o erro que acontece. O meu objetivo é encerrar a caixa de Dialogo e retornar a Browse. Oziel Lopes FW2.2C+Workshop 4.5+Blinker .510 Informação do Arquivo Error.Log Application =========== Path and name: C:\GRH40\GRH.EXE (16 bits) Size: 993,344 bytes Max files handles permited: ( SetHandleCount() ) 200 Time from start: 0 hours 0 mins 13 secs Error ocurred at: 03/01/08, 21:00:35 Error description: Error BASE/1077 Argument error: .NOT. Args: [ 1] = U Stack Calls =========== Called from LOCKERRHAN(0) Called from (b)INITHANDL$(0) Called from TGET:FWLOSTFOCU(0) Called from TGET:HANDLEEVEN(0) Called from DIALOGBOX(0) Called from TDIALOG:ACTIVATE(0) Called from GETCADASTR(385) Called from (b)CADASTRO(191) Called from TDBTNBMP:CLICK(427) Called from TDBTNBMP:LBUTTONUP(499) Called from TDBTNBMP:HANDLEEVEN(0) Called from DIALOGBOXI(0) Called from TDIALOG:ACTIVATE(0) Called from CADASTRO(211) Called from (b)MAIN(73) Called from TBTNBMP:CLICK(0) Called from TBTNBMP:LBUTTONUP(0) Called from TBTNBMP:HANDLEEVEN(0) Called from WINRUN(0) Called from TMDIFRAME:ACTIVATE(0) Called from MAIN(109)
  19. Amigos, Preciso mais uma vez de ajuda. Estou com problemas quando faço a procura do CNPF do cadastro. Estou em uma Browse, depois vou abro uma Caixa de Dialogo para o Cadastro de Currículos, logo após digitar o CNPF, faço um teste para ver se o mesmo já existe, caso afirmativo informo ao usuário e saio do sistema. Eu não queria sair do sistema e sim retornar para a Browse ou mesmo para o inicio do programa. Como fechar a Caixa de Dialogo, e retornar ao Browse? Abaixo as informações do fonte. Oziel Lopes oziellsilva@hotmail.com oziellsilva@click21.com.br FW2.2c – Medit – Workshop 4.5 – Blinker 5.10 Fonte. //- Browse DEFINE DIALOG oDlg TITLE 'GRH - Gerenciamento de Recursos Humanos - Cadastro de Curriculos.' From 01,01 to 28,92 oDlg:lHelpIcon := .F. @ 01.00, 01.00 BROWSE oBrw SIZE 345,095 of oDlg; COLOR CLR_BLACK, CLR_CREME; ON DBLCLICK(GetCadastro(.F.), oBrw:Refresh()) .... @ 180.9,110.0 DBUTTON "Cad. " FILE ".\BMP\CADASTRO.BMP" SIZE 40,20 GLIP POS 3; ACTION( GetCadastro( .T. ), ; oBrw:Refresh() ) ; TOOLTIP OemToAnsi( "Digitar Cadastro" ) ..... FUNCTION GetCadastro( lAppend ) LOCAL oDlg // Objetos Caixa de Di logo LOCAL lGravar := .F. // Para Gravar LOCAL lTestacpf:= .F.// Para Testar o CPF LOCAL oG20, oG21, oG22, oG23, oG24, oG25 CursorWait() ..... REDEFINE GET oG09 VAR cCNPF PICTURE '999.999.999-99' ID 27 OF oDlg Valid TestaCNPF(cCNPF,lTestaCpf) //----------- STATIC FUNCTION TestaCNPF(cCNPF,lTestaCPf) // ver CNPF cad. LOCAL lPass := .T., nRecNo := CADASTRO->(RECNO()) IF lTestaCPf = .F. ; Return .t. ; Endif lPass:=VerCic(cCNPF) IF ! lPass MsgAlert(OemToAnsi("O n.do CNPF informado‚"," Mensagem") ENDIF lPass := .T. Sele Cadastro Set Order to 3 DbGoTop() If Cadastro->(DbSeek( alltrim(upper(cCnpf)) )) MsgAlert(OemToAnsi("CPF já cadastrado.")+CRLF+CRLF+; OemToAnsi("Codigo: ")+(CADASTRO->Codigo)+CRLF+; OemToAnsi("Nome : ")+ALLTRIM(CADASTRO->Nome),; OemToAnsi("Atenção!")) MsgStop("O programa sera encerrado..."," Mensagem ") DbCloseAll() Quit Endif CADASTRO->(DBSETORDER(1)) RETURN NIL //----------------------------------------------------
  20. Amigos, Preciso mais uma vez de ajuda. Estou com problemas quando faço a procura do CNPF do cadastro. Estou em uma Browse, depois vou abro uma Caixa de Dialogo para o Cadastro de Currículos, logo após digitar o CNPF, faço um teste para ver se o mesmo já existe, caso afirmativo informo ao usuário e saio do sistema. Eu não queria sair do sistema e sim retornar para a Browse ou mesmo para o inicio do programa. Como fechar a Caixa de Dialogo, e retornar ao Browse? Abaixo as informações do fonte. Oziel Lopes oziellsilva@hotmail.com oziellsilva@click21.com.br FW2.2c – Medit – Workshop 4.5 – Blinker 5.10 Fonte. //- Browse DEFINE DIALOG oDlg TITLE 'GRH - Gerenciamento de Recursos Humanos - Cadastro de Curriculos.' From 01,01 to 28,92 oDlg:lHelpIcon := .F. @ 01.00, 01.00 BROWSE oBrw SIZE 345,095 of oDlg; COLOR CLR_BLACK, CLR_CREME; ON DBLCLICK(GetCadastro(.F.), oBrw:Refresh()) .... @ 180.9,110.0 DBUTTON "Cad. " FILE ".\BMP\CADASTRO.BMP" SIZE 40,20 GLIP POS 3; ACTION( GetCadastro( .T. ), ; oBrw:Refresh() ) ; TOOLTIP OemToAnsi( "Digitar Cadastro" ) ..... FUNCTION GetCadastro( lAppend ) LOCAL oDlg // Objetos Caixa de Di logo LOCAL lGravar := .F. // Para Gravar LOCAL lTestacpf:= .F.// Para Testar o CPF LOCAL oG20, oG21, oG22, oG23, oG24, oG25 CursorWait() ..... REDEFINE GET oG09 VAR cCNPF PICTURE '999.999.999-99' ID 27 OF oDlg Valid TestaCNPF(cCNPF,lTestaCpf) //----------- STATIC FUNCTION TestaCNPF(cCNPF,lTestaCPf) // ver CNPF cad. LOCAL lPass := .T., nRecNo := CADASTRO->(RECNO()) IF lTestaCPf = .F. ; Return .t. ; Endif lPass:=VerCic(cCNPF) IF ! lPass MsgAlert(OemToAnsi("O n.do CNPF informado‚"," Mensagem") ENDIF lPass := .T. Sele Cadastro Set Order to 3 DbGoTop() If Cadastro->(DbSeek( alltrim(upper(cCnpf)) )) MsgAlert(OemToAnsi("CPF já cadastrado.")+CRLF+CRLF+; OemToAnsi("Codigo: ")+(CADASTRO->Codigo)+CRLF+; OemToAnsi("Nome : ")+ALLTRIM(CADASTRO->Nome),; OemToAnsi("Atenção!")) MsgStop("O programa sera encerrado..."," Mensagem ") DbCloseAll() Quit Endif CADASTRO->(DBSETORDER(1)) RETURN NIL //----------------------------------------------------
  21. Esse forum é um barato... Vou testar qq coisa entro no ar novamente. Obrigado. Grato Oziel Lopes
  22. Essa imagem é do CAWIN - qdo vc navega no Browse os dados complementares são atualizados na parte inferior. É um Barato... pois dá um visual lindo e tb é prático. Vamos ver se alguém tem uma dica. Grato Oziel Lopes FW 22c Clipper 5.2c - Workshop
  23. Galera... já vi no programa CAWIN um Listbox com informações no browse e o complemento das informações na parte inferior fora do Browse. Objetivo é a maior qtde de informação ao usuário. Pois não haveria a nec de editar o registro. Vejam, qdo utilizamos as teclas de navegação os dados complementares do browse são mostrados nas outras linhas (parte inferior). Grato Oziel Lopes FW 2.2c - Clipper 5.2c Workshop
  24. Galera... já vi no programa CAWIN um Listbox com informações no browse e o complemento das informações na parte inferior fora do Browse. Objetivo é a maior qtde de informação ao usuário. Pois não haveria a nec de editar o registro. Vejam, qdo utilizamos as teclas de navegação os dados complementares do browse são mostrados nas outras linhas (parte inferior). Grato Oziel Lopes FW 2.2c - Clipper 5.2c Workshop
  25. Obrigado mais uma vez. Fiz o teste o SetHandleCount estava 50 passei para 80 e de acordo com a sua sugestão para 200, alt. o fonte e coloquei mais um arq. para abrir de 16 para 17. O resultado foi ok... tudo beleza. //----- Function Abrearqs ... Select 0 // Arquivo n. 01 UseArq('Arquivo','Arquivo',10) Set Index to Arquivo .... Select 0 // Arquivo n. 02 ....
×
×
  • Create New...