Jump to content
Fivewin Brasil

ram_bh

Membros
  • Posts

    285
  • Joined

  • Last visited

  • Days Won

    5

Everything posted by ram_bh

  1. Olás! Estou precisando do programa LIB.EXE para 64 bits, alguém tem ou pode informar como obter? Estou trabalhando com W7 em 64 bits e a versão do LIB.EXE que tem não funciona aqui... Obrigado! Rodrigo Melo Belo Horizonte / MG
  2. Márcio, /*-----------------------------------------------------------*/ // Copiar e Recuperar arquivos /*-----------------------------------------------------------*/ #include "FiveWin.ch" #include "Directry.ch" Function Copiar() Local cFile, aFile := {}, aFileBkp := {} DBCloseAll() If ! MsgNoYes( "Os arquivos serão compactados e em seguida será realizada a cópia de segurança." + CRLF+CRLF+; "Se outra cópia de segurança já tiver sido realizada neste mesmo dia, os arquivos serão substituídos. Confirma?", "Copiar arquivos") If ! Abrir_DBF(cUniSer + cDirBas + "\TB_SETOR.DBF","SETOR",.t.,"DBFCDX") DBCloseAll() Return(.f.) EndIf If ! Abrir_DBF(cUniSer + cDirBas + "\TB_MATER.DBF","MATER",.t.,"DBFCDX") DBCloseAll() Return(.f.) EndIf If ! Abrir_DBF(cUniSer + cDirBas + "\TB_FORNE.DBF","FORNE",.t.,"DBFCDX") DBCloseAll() Return(.f.) EndIf Return(Nil) EndIf // dados aFile := Directory(cUniSer + cDirBas + '\*.DBF') AEval(aFile,{|a|AAdd(aFileBkp,cUniSer + cDirBas + '\'+a[F_NAME])}) // imagens aFile := Directory(cUniSer + cDirImg + '\*.BMP') AEval(aFile,{|a|AAdd(aFileBkp,cUniSer + cDirImg + '\'+a[F_NAME])}) aFile := Directory(cUniSer + cDirImg + '\*.ICO') AEval(aFile,{|a|AAdd(aFileBkp,cUniSer + cDirImg + '\'+a[F_NAME])}) // executavel aFile := Directory(cUniSer + cDirApl + '\*.EXE') AEval(aFile,{|a|AAdd(aFileBkp,cUniSer + cDirApl + '\'+a[F_NAME])}) aFile := Directory(cUniSer + cDirApl + '\*.DLL') AEval(aFile,{|a|AAdd(aFileBkp,cUniSer + cDirApl + '\'+a[F_NAME])}) // ini aFile := Directory(GetWinDir()+'\MATERIAL.INI') AEval(aFile,{|a|AAdd(aFileBkp,GetWinDir()+a[F_NAME])}) cFile := cGetFile('Bkp_'+DTOS(Date())+'.Zip',"Escolha uma pasta para gravar a cópia de segurança",,cUniSer+cDirBkp+'\',.t.,.t.,,) If Empty(AllTrim(cFile)) If ! Abrir_DBF(cUniSer + cDirBas + "\TB_SETOR.DBF","SETOR",.t.,"DBFCDX") DBCloseAll() Return(.f.) EndIf If ! Abrir_DBF(cUniSer + cDirBas + "\TB_MATER.DBF","MATER",.t.,"DBFCDX") DBCloseAll() Return(.f.) EndIf If ! Abrir_DBF(cUniSer + cDirBas + "\TB_FORNE.DBF","FORNE",.t.,"DBFCDX") DBCloseAll() Return(.f.) EndIf Return(Nil) EndIf Compactar(cFile,aFileBkp) If ! Abrir_DBF(cUniSer + cDirBas + "\TB_SETOR.DBF","SETOR",.t.,"DBFCDX") DBCloseAll() Return(.f.) EndIf If ! Abrir_DBF(cUniSer + cDirBas + "\TB_MATER.DBF","MATER",.t.,"DBFCDX") DBCloseAll() Return(.f.) EndIf If ! Abrir_DBF(cUniSer + cDirBas + "\TB_FORNE.DBF","FORNE",.t.,"DBFCDX") DBCloseAll() Return(.f.) EndIf Return(Nil) /*-----------------------------------------------------------*/ Function Compactar(cFile,aFile) Local oDlg, oMeter, oText, cMsg, nLen, lVal, nActual := 0 nLen := Len(aFile) DEFINE DIALOG oDlg FROM 01,01 TO 10,60 TITLE "Compactando arquivos..." @ 0.5,02 SAY oText VAR cMsg SIZE 180,020 OF oDlg @ 2.0,02 METER oMeter VAR nActual TOTAL 100 OF oDlg SIZE 200,020 oDlg:bStart := {||lVal:=Hb_ZIPFILE(cFile, aFile, 9,{|cFile,nPos|oText:SetText('Compactando '+cFile),; nActual:=nPos/nLen*100,oMeter:Set(nActual)},.t.,Nil,.t. ),; IF(lVal,MsgInfo('Compactação completada com sucesso!'+CRLF+CRLF+; 'Arquivo compactado '+cFile,'Compactação de Arquivos'),; MsgStop('Cópia de Segurança não pode ser realizada!','Erro')),; oDlg:END()} ACTIVATE DIALOG oDlg CENTERED Return(lVal) /*-----------------------------------------------------------*/ Function Recuperar() Local cFile, aFile := {}, nFile := 0, aFDBF := {}, aFBMP := {}, aFICO := {}, aFDLL := {} If AllTrim(cUsuario) # "SUPORTE" MsgInfo( "Esta funcionalidade só deve ser executada pelo Suporte, porque os arquivos atuais serão substituídos pelos arquivos recuperados da cópia de segurança." + CRLF+CRLF +; "Certifique-se da real necessidade desta operação e procure o Suporte sempre em caso de dúvidas.","Aviso") Return(Nil) EndIf cFile := cGetFile('Bkp_*.Zip',"Escolha o arquivo da cópia de segurança a ser recuperado",,cUniSer+cDirBkp+'\',.f.,.t.,,) If Empty(AllTrim(cFile)) Return(Nil) EndIf If ! MsgNoYes( "Serão recuperados somente os arquivos de Dados, de Imagens e DLL." + CRLF+CRLF +; "Os arquivos atuais serão substituídos pelos arquivos recuperados da cópia de segurança:" + CRLF+CRLF +; "[ " + cFile + " ]" + CRLF+CRLF +; "Certifique-se da real necessidade desta operação antes de prosseguir." + CRLF+CRLF +; "Confirma?","Atenção" ) MsgInfo("Recuperação de arquivos cancelada!","Aviso") Return(Nil) EndIf aFile := Hb_GetFilesInZip(cFile) For nFile = 1 To Len(aFile) If Right(aFile[nFile],3) = "DBF" AAdd( aFDBF, aFile[nFile] ) ElseIf Right(aFile[nFile],3) = "BMP" AAdd( aFBMP, aFile[nFile] ) ElseIf Right(aFile[nFile],3) = "ICO" AAdd( aFICO, aFile[nFile] ) ElseIf Right(aFile[nFile],3) = "DLL" AAdd( aFDLL, aFile[nFile] ) EndIf Next Descompactar(cFile,aFDBF,"Dados") Descompactar(cFile,aFBMP,"Imagens BMP") Descompactar(cFile,aFICO,"Imagens ICO") Descompactar(cFile,aFDLL,"DLL") MsgRun("Organizando arquivos de Dados recuperados...","Aguarde",{||Tabelas(cUniSer,cDirBas,.t.)}) Return(Nil) /*-----------------------------------------------------------*/ Function Descompactar(cFile,aFile,cTipo) Local oDlg, nFile := 0, oText, cMsg, oMeter, nActual := 0 nFile := Len(aFile) DEFINE DIALOG oDlg FROM 01,01 TO 10,60 TITLE "Recuperando arquivos de "+cTipo+" da cópia de segurança..." @ 0.5,02 SAY oText VAR cMsg SIZE 180, 20 OF oDlg @ 2.0,02 METER oMeter VAR nActual TOTAL 100 OF oDlg SIZE 200, 20 oDlg:bStart := {||lVal:=Hb_UnZipFile(cFile,{|cFile,nPos|oText:SetText('Descompactando...'+CRLF+cFile),; nActual:=nPos/nFile*100,oMeter:Set(nActual)},.t.,,cUniSer+'\',aFile ),; IF(lVal,MsgInfo('Recuperação dos arquivos de '+cTipo+' completada com sucesso'+CRLF+CRLF,'Recuperação'),; MsgStop('Arquivos de '+cTipo+' não podem ser recuperados',"Atenção")),; oDlg:END()} ACTIVATE DIALOG oDlg CENTERED Return(Nil) /*-----------------------------------------------------------*/ // fim
  3. Márcio, Eu fiz uma rotina que zipa as pastas (e arquivos) usadas pela aplicação (dados, imagens, etc...) e grava em um destino a escolha do usuário. Mas, por motivo de segurança, não permiti que o usuário recupere todas as pastas zipadas... Não sei como anexar o código aqui... Alguém pode ajudar!? Se quiser, posso enviar por e-mail para você. Rodrigo Melo Belo Horizonte / MG
  4. Jackson, obrigado por responder. Vou pesquisar o SQLite. O sistema tem poucos usuários, mas as tabelas tem muitos registros... E começo a ficar preocupado com a possibilidade de suporte para recuperar arquivos DBF danificados... Um abraço! Rodrigo Melo Belo Horizonte / MG
  5. Bom dia! Alguém usa Firebird como SGBD? Pergunto por ser o Firebird um sistema menos exigente de recursos do que MySQL, MariaDB, OracleExpress e outros... Penso em migrar um sistema de administração de condomínios que ainda utilizada DBF. As tabelas já estão "gordinhas"... Qual a opinião de vocês? Obrigado! Rodrigo Melo Belo Horizonte / MG
  6. ram_bh

    KEYBOARD

    Tente usar a função KeySec(): KeySec()Starts a timer to write a key code into the keyboard buffer. SyntaxKeysec( <nKey> , ; <nTime> , ; [<nCounter>], ; [<lMode>] ) --> lSuccess Arguments <nKey> This is the numeric key code to write into the keyboard buffer. #define constants listed in the Inkey.ch file are used for <nKey>. <nTime> This is a numeric value specifying the time after which the character is written into the keyboard buffer. Positive values indicate the time in seconds, while negative values are interpreted as multiples of 1/18.2 seconds. <nCounter> This parameter specifies the number of times <nKey> should be placed into the keyboard buffer before the timer ends. The default value is 1. <lMode> This parameter defaults to .F. (false). When .T. (true) is passed, the timer is reset when a key is pressed. ReturnThe function returns .T. (true) when the timer is successfully activated, otherwise .F. (false). Note: when the function is called without a parameter, the timer is deactivated.
  7. Olás! Alguma função que permita exibir uma mensagem com imagem? Tipo uma MsgInfo() com mensagem (texto) e imagem (BMP). Obrigado! Rodrigo Melo Belo Horizonte / MG
  8. Boa tarde! Resolvido assim: hWnd := FindWindow ( 0, oWnd:cTitle () ) ShowWindow ( hWnd, 9 ) Obrigado e um abraço a todos! Rodrigo Melo
  9. Pessoal, bom dia! Não funcionou da maneira como gostaria, mas... não desisti de encontrar uma solução. O que pretendo é, ao receber novo registro na lista do xbrowse a aplicação emite um alerta para o usuário e ativa a aplicação, se ela estiver fora de foco. Explicando melhor, o usuário está lendo as mensagens deste fórum e a aplicação está com um Timer verificando se existem novas mensagens na caixa de entrada do usuário. Ao receber uma nova mensagem, a aplicação é exibida em primeiro plano para que a mensagem seja apresentada ao usuário. Alguma sugestão? Obrigado! Rodrigo Melo
  10. Resolvido com: ShowWindow( oWnd, 1 ) Obrigado! Rodrigo Melo
  11. Kapiaba, obrigado! Mas preciso dar foco na aplicação após a execução do Timer. Explicando melhor: depois de um período definido no Timer é executada uma função, se atendida uma determinada condição preciso colocar a aplicação em primeiro plano de execução, ou seja, se o usuário estiver em outro aplicativo preciso alternar para a aplicação. É possível!? Obrigado! Rodrigo Melo Belo Horizonte / MG
  12. Bom dia! Preciso programar um refresh (a cada minuto, por exemplo) em um xbrowse, como fazer!? Obrigado! Rodrigo Melo Belo Horizonte / MG
  13. Bom dia! Alguém pode informar como recuperar o usuário que está logado na rede (windows server 2008)? A idéia é recuperar o usuário logado e autenticar na aplicação. Obrigado! Rodrigo Melo Belo Horizonte
  14. Leonardo, obrigado! citação:Para FiveWin mesmo não tem. Tem um projeto no Google Code que é apenas um teste pelo que se pode ver. http://code.google.com/p/fivedroid/ Leonardo Machado Alvorada-RS Hwgui + x[H]arbour leonardodemachado@hotmail.com id=quote>id=quote>Rodrigo Melo Belo Horizonte - MG FWH 9.12 / xHarbour 1.1.2 / BCC 5.5.1
  15. Bom dia! Faz tempo que não acesso o fórum e quero saber se é possível desenvolver em FW para Android? Obrigado e um abraço! Rodrigo Melo Belo Horizonte
  16. Bom dia! Faz tempo que não acesso o fórum e quero saber se é possível desenvolver em FW para Android? Obrigado e um abraço! Rodrigo Melo Belo Horizonte
  17. Para as empresas de Belo Horizonte, postei um anúncio na seção Classificados. Obrigado e um abraço! Rodrigo Melo Belo Horizonte - MG FWH 9.12 / xHarbour 1.1.2 / BCC 5.5.1
  18. Para as empresas de Belo Horizonte, postei um anúncio na seção Classificados. Obrigado e um abraço! Rodrigo Melo Belo Horizonte - MG FWH 9.12 / xHarbour 1.1.2 / BCC 5.5.1
  19. O encontro foi muito bom mesmo. No meu caso, particularmente, que procurava uma solução para atualizar os "bons e velhos" aplicativos desenvolvidos em Clipper. Conheci o FW por amigos, mas não tinha ideia de quanto é utilizado. Como não atuo como empresa precisava de uma solução para converter os aplicativos desenvolvidos para amigos a mais de 15 anos. Não pretendo atuar como empresa, mas com certeza serei mais um colaborador do FW. E ainda, tive o prazer de conhecer pessoalmente algumas pessoas que me ajudaram no fórum a elucidar dúvidas. Sem mencionar na oportunidade de iniciar novas amizades. Aos organizadores e palestrantes, meus parabéns e agradecimentos. No mais, até o próximo encontro e um grande abraço a todos. PS: Com certeza o fórum não será mais o mesmo após o VII Congresso... Rodrigo Melo Belo Horizonte - MG FWH 9.12 / xHarbour 1.1.2 / BCC 5.5.1 Editado por - ram_bh on 08/11/2010 15:43:32
  20. Marcos, Recomendo a você ao desembarcar no saguão do aeroporto contratar o taxi através das empresas credenciadas. O balcão é de fácil visualização. Tenho esses números, caso prefira fazer reserva. Taxi especial - COOPERTRAMO (31)3689-2040. Taxi comum - Cooperfins (31)3689-2113 Taxi comum - Minas Táxi (31)3689-2349. Rodrigo Melo Belo Horizonte - MG FWH 9.12 / xHarbour 1.1.2 / BCC 5.5.1
  21. Para completar mais um pouco: Uma diferença importante entre os certificados A1 e A3 é a segurança. No tipo A3, o certificado é armazenado em um dispositivo (token ou smart-card) com segurança implementada para acesso ao certificado. O que permite a validade por 3 anos. Os programas não tem acesso diretamente ao certificado. O dispositivo de armazenamento implementa segurança e funciona como um driver entre a solicitação do programa e o certificado. No tipo A1, o certificado é um arquivo que pode ser copiado e armazenado em qualquer meio digital (disquete, pen-drive, etc). Por não ser arquivado em um meio com segurança de acesso implementada, a validade é só de um ano. Se existir um controle rígido de acesso ao local de armazenamento do certifficado tipo A1, sem problemas para o uso. Caso contrário, recomendo o A3. Espero ter ajudado. Rodrigo Melo Belo Horizonte - MG FWH 9.12 / xHarbour 1.1.2 / BCC 5.5.1
  22. Olás! É possível enviar e-mail através do comando Mail e relacionar os destinatários como CCO? DEFINE MAIL oMail SUBJECT "Cabeçalho da Mensagem" ; TEXT "Mensagem do e-mail" TO cDestino,cMail ; FROM USER RECEIPT ACTIVATE MAIL oMail No exemplo acima os destinatários são apresentados em PARA. Obrigado! Rodrigo Melo Belo Horizonte - MG FWH 9.12 / xHarbour 1.1.2 / BCC 5.5.1
  23. Olás! É possível enviar e-mail através do comando Mail e relacionar os destinatários como CCO? DEFINE MAIL oMail SUBJECT "Cabeçalho da Mensagem" ; TEXT "Mensagem do e-mail" TO cDestino,cMail ; FROM USER RECEIPT ACTIVATE MAIL oMail No exemplo acima os destinatários são apresentados em PARA. Obrigado! Rodrigo Melo Belo Horizonte - MG FWH 9.12 / xHarbour 1.1.2 / BCC 5.5.1
×
×
  • Create New...