Jump to content
Fivewin Brasil

MatheusFarias

Membros
  • Posts

    69
  • Joined

  • Last visited

  • Days Won

    4

Everything posted by MatheusFarias

  1. Certo , por isso mesmo q comentei pois no Pelles somente funciona maiúsculo mesmo q escreve Minusculo
  2. Kapiaba , se acompanhar a leitura do post , o arthur tinha uma duvida sobre o icone da aplicaçao que ele esta desenvolvendo , Sou Amigo dele , e comentei no post : Que coisa o cara migra fast report para prg e nao consegue colocar um icon srsrsrs Entao as pessoas magicamente entenderam q ele estava fazendo algo no fast report , que nao é , somente lendo o post voce pode ver isso , entao agora disse q a leitura é a mãe do entendimento do texto pois essa nao é a duvida dele , graças a Deus encontramos o erro , que era o nome do ICONE no Recurso (.Res) (No Programa Pelles C 7.0 32 Bits) quando mudamos o nome no recurso e deixamos igual funcionou corretamente Explicaçao Errado: -Nome no prg: Define icon oico Resource "FR3toPRG" -Nome no res: "FR3toPRG" DO ICONE Certo: -Nome no prg: Define icon oico Resource "FR3TOPRG" -Nome no res: "FR3TOPRG" DO ICONE
  3. Leitura é a mãe do entendimento do texto Arthur Disse: Pessoal pode parecer algo besta, mas eu defini um ícone na maquina do meu trabalho WXP eficou bonitinho, mas quando passei para meu desktop de casa W7 e meu notebook W8 ele não aparece ícone, fica somo se não tivesse ícone nenhum. Alguém já passou por isso ? Quanto ao código é aquele procedimento padrão. Define icon oicon resource "Nome" Define dialog odlg resource "DLG" icon oicon Activate dialog odlg centered Se der um crtl+F no texto voce nao vai encontrar uma palavra sobre fastreport
  4. Que coisa o cara migra fast report para prg e nao consegue colocar um icon srsrsrs
  5. Acredito que a contrataçao de um profissional sim é a melhor solução pois nos deixa com a possibilidade de poder vislumbrar outras coisas , e sim tambem vou
  6. Olha ja use implementaçao com dll em um modem daruma aqui vai o codigo dele , caso queira se basear #Include 'Fivewin.Ch' #Include 'Dll.Ch' #Include 'ribbon.Ch' #Define CLR_SKY nRGB( 202, 228, 255 ) #Define CLR_AZUL_BRANCO nRGB( 040, 004, 090 ) /* Exemplo de Como Usar: ... aVetor:={} aadd(aVetor,{"Titulo da Funçao",{||Funcao()}} aadd(aVetor,{"Titulo da Funçao",{||Funcao()}} Modem_1(aVetor) ... */ Function Modem_1(aProcesso) // Funçao PARA Abertura Local oBmp1,oEtapa,oContador,oDlgModem Local cEtapa:="Daruma Modem",nContador,x,nProcesso:=len(aProcesso),lFim:=.f.,xRet nContador:=0 Define Dialog oDlgModem Resource "DLG_MODEM_ABERTURA" Brush oBrushPapel1 REDEFINE IMAGE oBmp1 ID 10 OF oDlgModem NAME "MODEMDARUMA" Adjust Redefine Say oEtapa Prompt cEtapa ID 11 Of oDlgModem REDEFINE PROGRESS oContador ID 12 OF oDlgModem Activate Dialog oDlgModem Centered Nowait Valid lFim Sysrefresh() oContador:SetRange( 0,3+nProcesso) oContador:SetStep( 1 ) if !DllDarumaLoad() lFim:=.t. oDlgModem:ENd() return .f. endif cEtapa:="Modem Daruma - Define Produto" nContador++;oContador:SetPos( nContador );oEtapa:Refresh() if Modem_Definir(.t.)#1 lFim:=.t. oDlgModem:ENd() return .f. endif SysWait(.5) cEtapa:="Modem Daruma - Ajusta Velocidade de Transmissão" nContador++;oContador:SetPos( nContador );oEtapa:Refresh() if Modem_Velocidade(.t.)#1 lFim:=.t. oDlgModem:ENd() return .f. endif SysWait(.5) cEtapa:="Modem Daruma - Inicialização" nContador++;oContador:SetPos( nContador );oEtapa:Refresh() if Modem_Inicializa(.t.)#1 lFim:=.t. oDlgModem:ENd() return .f. endif SysWait(.5) For x:=1 to nProcesso cEtapa:=aProcesso[x][1] nContador++;oContador:SetPos( nContador );oEtapa:Refresh() xRet:=eval(aProcesso[x][2]) if xRet#1 MsgInfo("Daruma -"+aProcesso[x][1]+CRLF+" Erro Encontrado !"+CRLF+"Numero: "+ strzero(xRet,3,0),"Informação") lFim:=.t. oDlgModem:ENd() Return .f. endif SysWait(.5) Next DllDarumaUnLoad() lFim:=.t. oDlgModem:End() Function Meter_Funcao(aProcesso,cTitulo) // Funçao Outros Processos Local oBmp1,oEtapa,oContador,oDlgModem Local cEtapa:=cTitulo,nContador,x,nProcesso:=len(aProcesso),lFim:=.f. nContador:=0 Define Dialog oDlgModem Resource "DLG_MODEM_ABERTURA" Brush oBrushPapel1 REDEFINE IMAGE oBmp1 ID 10 OF oDlgModem NAME "MODEMDARUMA" Adjust Redefine Say oEtapa Prompt cEtapa ID 11 Of oDlgModem REDEFINE PROGRESS oContador ID 12 OF oDlgModem Activate Dialog oDlgModem Centered Nowait Valid lFim Sysrefresh() oContador:SetRange( 0,nProcesso) oContador:SetStep( 1 ) For x:=1 to nProcesso cEtapa:=aProcesso[x][1] nContador++;oContador:SetPos( nContador );oEtapa:Refresh() eval(aProcesso[x][2]) SysWait(.5) Next lFim:=.t. oDlgModem:End() Return .t. Function Modem_1_Sms(cNumero) Local cMsg:=space(1000),oDlgModemSms,aProcessos:={},lSave:=.f. Default cNumero:=space(0) cNumero:=cNumero+space(9999) Define Dialog oDlgModemSms Resource "DLG_MODEM_SMS" Brush oBrushPapel1 DEFINE FONT oFontrb NAME "Lucida Console" SIZE 0,-15 REDEFINE RBBTN oInfoBar3 ID 10 OF oDlgModemSms PROMPT "Enviar Sms " CENTER ADJUST SAYBUTTON ROUND LINECOLORS CLR_SKY,CLR_AZUL_BRANCO Set font to oFontrb of oInfoBar3 Redefine Get oNumero var cNumero id 11 of oDlgModemSms valid ! Empty(cNumero) oNumero:cToolTip:="Para Enviar a mais de um Destinatário Siga o Exemplo:"+CRLF+; "08388213032|08199874567 , Nao use * , ( ) Alem do | é usado para separar , "+CRLF+; " os Numeros dos Destinatários" Redefine Get oMsg var cMsg id 12 of oDlgModemSms MULTILINE valid ! Empty(cMsg) Redefine ButtonBmp oBmp01 Id 13 of oDlgModemSms Prompt "Enviar" action (lSave:=.t.,oDlgModemSmS:End()) bitmap cbitmaps+"sms.bmp" adjust Redefine ButtonBmp oBmp01 Id 14 of oDlgModemSms Prompt "Retornar" action (lSave:=.f.,oDlgModemSmS:End()) bitmap cbitmaps+"cancelar.bmp" cancel Activate Dialog oDlgModemSms Centered if lsave aadd(aProcessos,{"Envia Sms ",{|| Modem_EnviaSmsVarios(cNumero,alltrim(cMsg),"SIM1",.t.)}}) Modem_1(aProcessos) endif FUNCTION DllDarumaLoad() if ! File(cdll+"DarumaFrameWork.dll") MsgAlert("Atenção o Equipamento Modem Daruma não localizado e a Dll DarumaFrameWork Não está na Pasta, se faz necessário a aquisição do Mini Modem Externo min 210a , Contate o departamento comercial da Inteligence Informatica para aquisição do equipamento","Atençao" ) RETURN .f. Else hDllDaruma := LoadLib32( cdll+"DarumaFrameWork.dll" ) RETURN .t. Endif FUNCTION DllDarumaUnLoad() FreeLibrary( hDllDaruma ) RETURN nil Function Modem_Inicializa(lMensagem)//Ok Local nRetorno:=0 // Numero do Retorno Default lMensagem:=.f. nRetorno:=eInicializar_MODEM_DarumaFramework() if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro na comunicação da serial.","Alerta" ) case nRetorno == -2 msgalert( "Modem retornou erro.","Alerta" ) case nRetorno == -3 msgalert( "Modem retornou caractere(s) invalido(s)","Alerta" ) case nRetorno == -4 msgalert( "Modem não conectado na rede GSM","Alerta" ) endcase endif Return nRetorno Function Modem_ApagaSms(nIndiceMensagem,lMensagem)// Numero da Mensagem Local nRetorno:=0 nRetorno:=eApagarSms_MODEM_DarumaFramework(nIndiceMensagem) if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro na comunicação da serial.","Alerta" ) case nRetorno == -2 msgalert( "Modem retornou erro.","Alerta" ) endcase endif return nRetorno Function Modem_EnviarDados(cParamentros,lMensagem) // Essa Funçao tem que receber o cParametros como Referencia Local nRetorno:=0 nRetorno:=tEnviarDadosCsd_MODEM_DarumaFramework(@cParametros) if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro na comunicação da serial.","Alerta" ) endcase endif Return nRetorno Function Modem_RecebeDados(cParamentros,lMensagem) // Essa Funçao tem que receber o cParametros como Referencia Local nRetorno:=0 nRetorno:=rReceberDadosCsd_MODEM_DarumaFramework(@cParametros) if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro na comunicação da serial.","Alerta" ) endcase endif Return nRetorno Function Modem_AtivaDados(lMensagem) Local nRetorno:=0 Default lMensagem:=.f. nRetorno:=eAtivarConexaoCsd_MODEM_DarumaFramework() if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro na comunicação da serial.","Alerta" ) case nRetorno == -2 msgalert( "Modem Retornou Erro.","Alerta" ) endcase endif return nRetorno Function Modem_FinalizaChamada(lMensagem) Local nRetorno:=0 Default lMensagem:=.f. nRetorno:=eFinalizarChamadaCsd_MODEM_DarumaFramework() if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro na comunicação da serial.","Alerta" ) case nRetorno == -2 msgalert( "Modem Retornou Erro.","Alerta" ) endcase endif return nRetorno Function Modem_RealizaChamada(cParametros,lMensagem) Local nRetorno:=0 Default lMensagem:=.f. nRetorno:=eRealizarChamadaCsd_MODEM_DarumaFramework(cParametros) if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro na comunicação da serial.","Alerta" ) case nRetorno == -2 msgalert( "Modem Retornou Erro.","Alerta" ) case nRetorno == -3 msgalert( "Modem retornou caractere(s) invalido(s).","Alerta" ) case nRetorno == -4 msgalert( "Modem não conectado na rede GSM.","Alerta" ) case nRetorno == -5 msgalert( "Você Não Possue Creditos Suficientes para realizar essa chamada.","Alerta" ) case nRetorno == -6 msgalert( "Sem Tom de Discagem","Alerta" ) case nRetorno == -7 msgalert( "Numero Ocupado.","Alerta" ) endcase endif return nRetorno * Function Modem_TotalSms(nTipoSms,nTotalSms,lMensagem)//+- // nTotalSms - Deve Ser Passada Por Referencia Local nRetorno:=0 Default lMensagem:=.f. // nTipoSms Pode Ser 0 , 1 , 2 : Todas As Mensagens , Lidas e Não Lidas nRetorno:=rTotalSms_MODEM_DarumaFramework(nTipoSms,@nTotalSms) if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro na comunicação da serial.","Alerta" ) case nRetorno == -2 msgalert( "Modem Retornou Erro.","Alerta" ) case nRetorno == -3 msgalert( "Modem retornou caractere(s) invalido(s).","Alerta" ) endcase endif return nRetorno Function Modem_Operadora(cOperadora,lMensagem)//Ok // cOperadora Precisa ser passado como referencia Local nRetorno:=0 Default lMensagem:=.f. nRetorno:=rRetornarOperadora_MODEM_DarumaFramework(@cOperadora) if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro na comunicação da serial.","Alerta" ) case nRetorno == -2 msgalert( "Modem Retornou Erro.","Alerta" ) case nRetorno == -3 msgalert( "Modem retornou caractere(s) invalido(s).","Alerta" ) endcase endif return nRetorno Function Modem_Imei(cImei,lMensagem)//OK // Necessario passar por referencia Local nRetorno:=0 Default lMensagem:=.f. nRetorno:=rRetornarImei_MODEM_DarumaFramework(@cImei) if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro na comunicação da serial.","Alerta" ) case nRetorno == -2 msgalert( "Modem Retornou Erro.","Alerta" ) case nRetorno == -3 msgalert( "Modem retornou caractere(s) invalido(s).","Alerta" ) endcase endif return nRetorno Function Modem_IdSim(cIdSim,lMensagem) //Necessario Passar por referencia Local Retorno:=0 Default lMensagem:=.f. nRetorno:=rRetornarIDSIM_MODEM_DarumaFramework(@cIdSim) if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro na comunicação da serial.","Alerta" ) case nRetorno == -2 msgalert( "Modem Retornou Erro.","Alerta" ) case nRetorno == -3 msgalert( "Modem retornou caractere(s) invalido(s).","Alerta" ) case nRetorno == -8 msgalert("Modem retornou resposta incompleta (sem 'OK' ou 'ERRO')","Alerta") endcase endif return nRetorno Function Modem_SmsIndice(cIndiceSMS,cNumFone,cData,cHora ,cMsg,lMensagem) // Exceto cIndiceSMS e lMensagem todas deve ser passadas referencia Local nRetorno :=0 Default lMensagem:=.f. nRetorno:=rReceberSmsIndice_MODEM_DarumaFramework(cIndiceSMS,@cNumFone,@cData,@cHora ,@cMsg) if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro na comunicação da serial.","Alerta" ) case nRetorno == -2 msgalert( "Modem Retornou Erro.","Alerta" ) case nRetorno == -3 msgalert( "Modem retornou caractere(s) invalido(s).","Alerta" ) endcase endif Return nRetorno Function Modem_ReceberSms(sIndiceSMS,cNumFone,cData,cHora,cMsg,lMensagem) Local nRetorno Default lMensagem:=.f. nRetorno:=rReceberSms_MODEM_DarumaFramework(sIndiceSMS,cNumFone,cData,cHora,cMsg) if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro na comunicação da serial.","Alerta" ) case nRetorno == -2 msgalert( "Modem Retornou Erro.","Alerta" ) case nRetorno == -3 msgalert( "Modem retornou caractere(s) invalido(s).","Alerta" ) case nRetorno > 1 MsgInfo( "Mensagens a Ser Lidas : "+str(nRetorno,3,0),"Informação" ) endcase endif Return nRetorno Function Modem_ApagaMensagemAoLer(lApaga,lMensagem) Local nRetorno,cParametro Default lMensagem:=.f. cParametro:=IF( lApaga,"TRUE","FALSE") nRetorno:=regLerApagar_MODEM_DarumaFramework(cParametro) if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( " Erro de atualização de Chave. ","Alerta" ) endcase endif return nRetorno Function Modem_Porta(cParametro,lMensagem) Local nRetorno Default lMensagem:=.f. nRetorno:=regPorta_MODEM_DarumaFramework(cParametro) if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro de atualização de Chave. ","Alerta" ) endcase endif return nRetorno Function Modem_BuscaMensagens(lAtiva,lMensagem) Local nRetorno,cThread Default lMensagem:=.f. cThread:=if(lAtiva,"TRUE","FALSE") nRetorno:=regThread_MODEM_DarumaFramework(cThread) if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro de atualização de Chave. ","Alerta" ) endcase endif return nRetorno Function Modem_MudaVelocidade(cParametro,lMensagem) Local nRetorno Default lMensagem:=.f. nRetorno:=regVelocidade_MODEM_DarumaFramework(cParametro) if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro de atualização de Chave. ","Alerta" ) endcase endif return nRetorno Function Modem_Definir(lMensagem)//Ok Local nRetorno Default lMensagem:=.f. nRetorno:=eDefinirProduto_Daruma("MODEM") if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) endcase endif return nRetorno Function Modem_TempoAlerta(cParametro,lMensagem) Local nRetorno Default lMensagem:=.f. nRetorno:=regTempoAlertar_MODEM_DarumaFramework(cParametro) if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro de atualização de Chave. ","Alerta" ) endcase endif return nRetorno Function Modem_JanelaMensagem(cParametro,lMensagem) Local nRetorno Default lMensagem:=.f. nRetorno:=regCaptionWinAPP_MODEM_DarumaFramework(cParametro) if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro de atualização de Chave. ","Alerta" ) endcase endif return nRetorno Function Modem_Resetar(lMensagem) Local nRetorno Default lMensagem:=.f. nRetorno:=eReiniciar_MODEM_DarumaFramework(cParametro) if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) endcase endif return nRetorno Function Modem_EnviaSmsVarios(cNumero , cMsg , cSIM ,lMensagem) //Ok Local nRetorno,nMsg,nInicia,nTamanho,nNum Default lMensagem:=.f. Default cSIM:="SIM1" cnumero:=StrTran(StrTran(StrTran(StrTran(StrTran(StrTran(cNumero,"(",""),")",""),"-",""),"*",""),".",""),",","") aNumeros:= HB_ATokens(cNumero,"|") For nNum:=1 to len(aNumeros) nInicia:=1 nTamanho:=Round( if(len(cMsg)<100,1,len(cMsg)/100),0) for nMsg:=1 to nTamanho nRetorno:=tEnviarSmsOperadora_MODEM_DarumaFramework(aNumeros[nNum] , SubStr(cMsg,nInicia,140) , cSIM) nInicia:=nInicia+140 if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro na comunicação da serial.","Alerta" ) case nRetorno == -2 msgalert( "Modem retornou erro.","Alerta" ) case nRetorno == -3 msgalert( "Modem retornou caractere(s) invalido(s).","Alerta" ) endcase endif SysWait(.5) Next Next Return nRetorno Function Modem_Velocidade(lMensagem)//Ok Local nRetorno Default lMensagem:=.f. nRetorno:=eBuscarPortaVelocidade_MODEM_DarumaFramework() if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) endcase endif return nRetorno Function Modem_Informacao(cInfoEstendida,lMensagem) Local nRetorno Default lMensagem:=.f. nRetorno:=rInfoEstendida_MODEM_DarumaFramework(cInfoEstendida) if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) endcase endif return nRetorno Function Modem_NumeroLigacao(cNumero,lMensagem) Local nRetorno Default lMensagem:=.f. // cNumero precisa ser passado como referencia nRetorno:=rRetornarNumeroChamada_MODEM_DarumaFramework(@cNumero) if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro da Comunicação Serial.","Alerta" ) case nRetorno == -2 msgalert( "Modem retornou Erro .","Alerta" ) case nRetorno == -3 msgalert( "Modem retornou caracteres inválidos.","Alerta" ) case nRetorno == -8 msgalert( "Modem retornou resposta incompleta (sem 'OK' ou 'ERRO'). ","Alerta" ) endcase endif Return nRetorno Function Modem_Sinal(lMensagem) Local nRetorno Default lMensagem:=.f. nRetorno:=rNivelSinalRecebido_MODEM_DarumaFramework() if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro da Comunicação Serial.","Alerta" ) case nRetorno == -2 msgalert( "Modem retornou Erro .","Alerta" ) case nRetorno == -3 msgalert( "Modem retornou caracteres inválidos.","Alerta" ) case nRetorno > 0 msginfo( "Nivel do Sinal : "+ Str( nRetorno,4,0) , "Informação" ) endcase endif return nRetorno Function Modem_ListaMensagem(lMensagem) Local nRetorno Default lMensagem:=.f. nRetorno:=rListarSms_MODEM_DarumaFramework() // Precisa Manipular o XML para Obter as Mensagens if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro da Comunicação Serial.","Alerta" ) case nRetorno == -2 msgalert( "Modem retornou Erro .","Alerta" ) case nRetorno == -3 msgalert( "Modem retornou caracteres inválidos.","Alerta" ) case nRetorno == -8 msgalert( "Modem retornou resposta incompleta (sem 'OK' ou 'ERRO'). ","Alerta" ) endcase endif Return nRetorno Function Modem_ListaMensagemNumero(cNumero,lMensagem) Local nRetorno Default lMensagem:=.f. nRetorno:=rListarSMSTelefone_MODEM_DarumaFramework(cNumero) // Precisa Manipular o XML para Obter as Mensagens if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro da Comunicação Serial.","Alerta" ) case nRetorno == -2 msgalert( "Modem retornou Erro .","Alerta" ) case nRetorno == -3 msgalert( "Modem retornou caracteres inválidos.","Alerta" ) case nRetorno == -8 msgalert( "Modem retornou resposta incompleta (sem 'OK' ou 'ERRO'). ","Alerta" ) endcase endif Return nRetorno Function Modem_EnviaSms(cNumero,cMensagem,lMensagem) Local nRetorno,nMsg,nInicia,nTamanho,nNum Default lMensagem:=.f. cNumero:=StrTran(StrTran(StrTran(StrTran(StrTran(StrTran(cNumero,"(",""),")",""),"-",""),"*",""),".",""),",","") aNumeros:= HB_ATokens(cNumero,"|") For nNum:=1 to len(aNumeros) nInicia:=1 nTamanho:=Round( if(len(cMensagem)<100,1,len(cMensagem)/100),0) for nMsg:=1 to nTamanho nRetorno:=tEnviarSms_MODEM_DarumaFramework(aNumeros[nNum] , SubStr(cMensagem,nInicia,140)) nInicia:=nInicia+140 if lMensagem do case case nRetorno == 0 msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta" ) case nRetorno == 1 .and. File("c:\modem.sys") // Comentar esse case apos a conclusão , agora usado como debug do processo msginfo( "OK, Sucesso ao enviar o método.","Informaçao" ) case nRetorno == -1 msgalert( "Erro na comunicação da serial.","Alerta" ) case nRetorno == -2 msgalert( "Modem retornou erro.","Alerta" ) case nRetorno == -3 msgalert( "Modem retornou caractere(s) invalido(s).","Alerta" ) endcase endif Next Next Return nRetorno DLL32 function eApagarSms_MODEM_DarumaFramework(iNumeroSMS AS STRING) AS LONG PASCAL LIB hDllDaruma //Permite excluir a mensagem selecionada na memória do Modem. //O método é geralmente usado quando o desenvolvedor deseja que a DarumaFramework, apague a mensagem lida evitando assim o armazenamento excessivo de mensagens no modem no qual poderia resultar no não recebimento de novas mensagens devido ao limite imposto em seu SimCard. //Caso você deseja que a DarumaFramework.dll após a leitura da mensagem execute uma ação para excluir automaticamente, existe uma chave no registro do modem chamada LerApagar, no qual realiza esta função. //Sintaxe: //eApagarSms_MODEM_DarumaFramework( char *pszIndice ) //Parâmetros: //Id Variável Tipo Tam. Descrição //1 pszIndice A 3 Variável no qual devera constar o numero da mensagem a ser excluída. //Observações: //Para executar esta funcionabilidade, necessitamos acionar o método Inicializar_MODEM_DarumaFramework. //Retornos: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //-1: Erro na comunicação da serial. //-2: Modem Retornou erro. DLL32 function tEnviarDadosCsd_MODEM_DarumaFramework(sParametro AS STRING) AS LONG PASCAL LIB hDllDaruma //Definição: //Permite enviar dados através da conexão csd. //Sintaxe: //tEnviarDadosCsd_MODEM_DarumaFramework(char *pszDados) //Parâmetros: //Id Variável Tipo Tam. Descrição //1 stDados A 999 Variável string no qual você devera inserir os dados a ser enviado pelo modem. //Retornos: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //-1: Erro na comunicação da serial. DLL32 function rReceberDadosCsd_MODEM_DarumaFramework(sParametro AS STRING) AS LONG PASCAL LIB hDllDaruma //Definição: //Permite ao desenvolvedor receber dados através da conexão csd. //Sintaxe: //rReceberDadosCsd_MODEM_DarumaFramework(char *pszDados ) //Parâmetros: //Id Variável Tipo Tam. Descrição //1 pszDados A 999 Variável string para receber os dados. //Retornos: //0: Não existem novas mensagem. //1: OK, Existe uma nova mensagem. //-1: Erro na comunicação da serial. DLL32 function eAtivarConexaoCsd_MODEM_DarumaFramework() AS LONG PASCAL LIB hDllDaruma //Definição: //Permite ao desenvolvedor configurar o modem para receber chamadas CSD e realizar auto atendimento. //Sintaxe: //eAtivarConexaoCsd_MODEM_DarumaFramework(void) //Parâmetros: //Não possui. //Retornos: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //-1: Erro na comunicação da serial. //-2: Modem retornou erro. DLL32 function eFinalizarChamadaCsd_MODEM_DarumaFramework() AS LONG PASCAL LIB hDllDaruma //Definição: //Permite ao desenvolvedor finalizar a chamada CSD. //Sintaxe: //eFinalizarChamadaCsd_MODEM_DarumaFramework(void) //Parâmetros: //Não possui. //Retornos: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //-1: Erro na comunicação da serial. DLL32 function eRealizarChamadaCsd_MODEM_DarumaFramework(sParametro AS STRING) AS LONG PASCAL LIB hDllDaruma //Definição: //Permite ao desenvolvedor realizar chamada csd a um modem definido pelo número. //Sintaxe: //eRealizarChamadaCsd_MODEM_DarumaFramework(char *pszNumFone ) //Parâmetros: //Id Variável Tipo Tam. Descrição //1 pszNumFone A 15 Variável string no qual você devera informar o numero a ser chamado. //Retornos: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //-1: Erro na comunicação da serial. //-2: Modem retornou erro. //-3: Modem retornou caractere(s) invalido(s) //-4: Modem não conectado na rede GSM //-5: Modem retornou NO CARRIER //-6: Modem retornou NO DIALTONE //-7: Modem retornou BUSY DLL32 function rTotalSms_MODEM_DarumaFramework (Int_TipoSMS As _INT, @Int_Total As BYTE)AS LONG PASCAL LIB hDllDaruma //Definição: //Método que permite ao desenvolvedor verificar quantas mensagens existem na caixa de entrada do chip, //de acordo com o tipo de sms informado: Todas, Lidas e Não lidas. Possui 2 parâmetros inteiros, //sendo o segundo passado por referência, pois receberá a quantidade. //Sintaxe: //rTotalSms_MODEM_DarumaFramework(int iTipoSMS, int *QuantSMS) //Parâmetros: //Id Variável Tipo Tam. Descrição //1 iTipoSMS N 1 Valor inteiro que representa o tipo de sms que deseja saber a quantidade: // 0 -Todas as Mensagens; // 1 - Mensagens Lidas; // 2- Mensagens Não Lidas //2 QuantSMS N 5 Variável inteira passada por referência para receber o número de Mensagens solicitado. //Retornos: //O método poderá retornar os possíveis erros inteiros demonstrados abaixo: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //-1: Erro na comunicação da serial. //-2: Modem retornou erro. //-3: Modem retornou caractere(s) invalido(s). DLL32 function rRetornarOperadora_MODEM_DarumaFramework(sOperadora AS STRING)AS LONG PASCAL LIB hDllDaruma //Definição: //Permite ao desenvolvedor verificar a operadora GSM (Claro, Tim, Oi, Vivo) conectado no momento no modem. //Existem diversos motivos para que o desenvolvedor possa verificar a operado , como por exemplo, se estiver utilizando o modem de 2 bandejas assim fica fácil a identificação. //Sintaxe: //rRetornarOperadora_MODEM_DarumaFramework( char *pszOperadora ) //Parâmetros: //Id Variável Tipo Tam. Descrição //1 pszOperadora A 49 Variável passada por referência que retorna a string que indica a operadora do Chip GSM utilizado no equipamento. //Retornos: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //-1: Erro na comunicação da serial. //-2: Modem retornou erro. //-3: Modem retornou caractere(s) invalido(s). DLL32 function rRetornarImei_MODEM_DarumaFramework(sImei AS STRING)AS LONG PASCAL FROM "rRetornarImei_MODEM_DarumaFramework" LIB hDllDaruma //Definição: //Permite ao desenvolvedor verificar o IMEI - International Mobile Equipment Identity (Identificação Internacional de Equipamento Móvel), do Modem, no qual será realizado a consulta. //Existem diversos motivos para que o desenvolvedor possa verificar o código IMEI do Modem, como por exemplo, registro, controle, bloqueio do aparelho entre outras funções. //Sintaxe: //rRetornarImei_MODEM_DarumaFramework( char *pszImei ) //Parâmetros: //Id Variável Tipo Tam. Descrição //1 stIMEI A 49 Variável passada por referência que retorna a string com ao IMEI do equipamento. //Observações: //Para executar esta funcionabilidade, necessitamos acionar o método Inicializar_MODEM_DarumaFramework. //Retornos: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //-1: Erro na comunicação da serial. //-2: Modem retornou erro. //-3: Modem retornou caractere(s) invalido(s). DLL32 function rRetornarIDSIM_MODEM_DarumaFramework(sIDSIM AS DWORD)AS LONG PASCAL LIB hDllDaruma //Definição: //Método que possibilita saber a identificação do Chip/ SimCard que está utilizando. Não é a bandeja que está sendo usada (SIM1 ou SIM2), nem o número de discagem ou envio de sms para ele. É apenas um o número de Identificação do Chip/ SimCard. //Sintaxe: //rRetornarIDSIM_MODEM_DarumaFramework( char *pszIdSim ) ; //Parâmetros: //Id Variável Tipo Tam. Descrição //1 pszIdSim A 50 Variável passada por referência que retorna a string com a Identidicação // do SimCard/ Chip que está sendo utilizado no momento. //Retornos: //Este método pode retornar os seguintes valores: // 0: Erro de comunicação, não foi possível enviar o método. // 1: OK, Sucesso ao enviar o método. //-1: Erro da Comunicação Serial; //-2: Modem retornou Erro; //-3: Modem retornou caracteres inválidos; //-8: Modem retornou resposta incompleta (sem "OK" ou "ERRO"). DLL32 function rReceberSmsIndice_MODEM_DarumaFramework(sIndiceSMS AS STRING,sNumFone AS STRING,sData AS STRING,sHora AS STRING,sMsg AS STRING)AS LONG PASCAL LIB hDllDaruma //Definição: //Método que faz a leitura de um determinado SMS, de acordo com o índice que for informado. //Sintaxe: //rReceberSmsIndice_MODEM( char *pszIndice, char *pszNumFone, char *pszData, char *pszHora, char *stMensagemRetornada); //Parâmetros: //Id Variável Tipo Tam. Descrição //1 stIndice A 3 Variável string indicando o índice do SMS //2 stNumeroFone A 14 Variável string passada por referencia para número do telefone remetente do SMS. //3 stData A 9 Variável string para receber a data do Sms //4 stHora A 9 Variável string para receber a hora do Sms //5 stMensagemRetornada A 499 Variável string referente ao conteúdo da mensagem. //Retornos: //Possíveis retornos para o método: //0: Não existe mensagem a ser lida. //1: OK, Mensagem lida com sucesso. //-1: Erro na comunicação da serial. //-2: Modem retornou erro. //-3: Modem retornou caractere(s) invalido(s). DLL32 function rReceberSms_MODEM_DarumaFramework(sIndiceSMS AS STRING,sNumFone AS STRING,sData AS STRING,sHora AS STRING,sMsg AS STRING) AS LONG PASCAL LIB hDllDaruma //Definição: //Permite ao desenvolvedor ler a última mensagem enviada para o Modem. //Existem situações onde, necessitamos estar informados das ultimas mensagens //que o modem recebeu, possibilitando a ação imediata de outras funções que ele pode executar. //Sintaxe: //rReceberSms_MODEM( char *pszIndice, char *pszNumFone, char *pszData, char *pszHora, char *stMensagemRetornada); //Parâmetros: //Id Variável Tipo Tam. Descrição //1 stIndice A 3 Variável string referente ao índice do SMS no modem. //2 stNumeroFone A 14 Variável string referente ao número do telefone remetente do SMS. //3 stData A 9 Variável string referente a data do envio do SMS. //4 stHora A 9 Variável string referente a hora do envio do SMS //5 stMensagemRetornada A 499 Variável string referente ao conteúdo da mensagem. //Observações: //Esta opção pode ser utilizada pela novidade! na DarumaFramework.dll, //no qual estamos utilizando o método do "Thread", no qual aciona um LOOP interno //capaz de identificar as novas mensagens chegadas em seu modem, para maiores informações clique aqui. //Esta opção pode ser utilizada juntamente com a "Thread" criada a partir da DLL, //que aciona um LOOP interno capaz de identificar as novas mensagens chegadas em seu modem, //para maiores informações clique aqui. //Retornos: //Modem está projetada junta a nossa DarumaFramework.dll para retornar os possíveis erros inteiros demonstrados abaixo: //0: Não existem novas mensagem. //1: OK, Existe uma nova mensagem. //-1: Erro na comunicação da serial. //-2: Modem retornou erro. //-3: Modem retornou caractere(s) invalido(s) //2: Existem duas mensagem a serem lidas. dll32 Function regLerApagar_MODEM_DarumaFramework(sParametro AS STRING)AS LONG PASCAL LIB hDllDaruma //Definição: //Permite configurar a chave <LerApagar> na DarumaFrameWork.dll. Quando essa chave está habilitada, as mensagens ligas são apagadas automaticamente, evitando que a memória do CardSim fique muito cheia. //Sintaxe: //regLerApagar_MODEM_DarumaFramework(char *pszParametro) //Parâmetros: //Id Variável Tipo Tam. Descrição //1 sParametro A 6 Variável string no qual você devera informar os parâmetros no qual o comando irá executar, sendo ele "TRUE" ou "FALSE". //Observações: //Esta chave deve estar habilitada como "TRUE" para executar a função antes do aplicativo inicializar. //Retornos: //Modem está projetada junta a nossa DarumaFramework.dll para retornar os possíveis erros inteiros demonstrados abaixo: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //-1: Erro de atualização de Chave. dll32 Function regPorta_MODEM_DarumaFramework(sParametro AS STRING)AS LONG PASCAL LIB hDllDaruma //Definição: //Permite ao desenvolvedor configurar a Porta Serial, no qual ira executar a comunicação com o modem, esta chave por padrão esta configurada como DEFAULT, necessitando no atual momento que seja realizado a configuração da porta serial, para haver comunicação com o periférico. //Sintaxe: //regPorta_MODEM_DarumaFramework(char *pszParametro) //Parâmetros: //Id Variável Tipo Tam. Descrição //1 sParametro A 5 Variável string no qual você devera informar o valor que será usado no parametro, no caso, a porta de comunicação no qual estará o modem. //Retornos: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //-1: Erro de atualização de Chave. dll32 Function regThread_MODEM_DarumaFramework(sParametro AS STRING)AS LONG PASCAL LIB hDllDaruma //Definição: //Modifica o valor da chave <Thread> no arquivo DarumaFrameWork.xml. Essa chave, quando configurada com o valor "TRUE", habilita a busca frequente por nova mensagens SMS não lidas no MODEM. Essa operação é realizada através de uma thread criada pela DarumaFrameWork.dll. //A chave <Thread> é utilizada juntamente com as chaves <TempoAlertar>, <CaptionWinAPP> e <Tecla>, também presentes no arquivo DarumaFrameWork.xml . //A chave <TempoAlertar> determina o tempo em que as notificações sobre novas mensagens recebidas no MODEM irão acontecer. E a chave <CaptionWinAPP> informa o título da janela em que as notificações serão exibidas. Para saber mais sobre essas chaves e como alterar seus valores, consulte os tópicos regTempoAlertar_MODEM_DarumaFramework e regCaptionWinAPP_MODEM_DarumaFramework. //A chave <Tecla> armazena a string de uma tecla, por padrão F10. Quando a thread encontra mensagens não lidas no MODEM chama a função, caso exista, que é acionada pela tecla armazenada. //Para entender melhor o processo de recebimento e notificação de mensagens consulte Recebendo Mensagens do Modem - Thread. //Observações: //Está chave deve estar acionada como "TRUE" antes do aplicativo iniciar. //Parâmetros: //Id Variável Tipo Tam. Descrição Exemplo //1 pszParametro A 4 Variável string com o novo valor da chave. TRUE //Sintaxe: //regThread_MODEM_DarumaFramework(char *pszParametro) //Retornos: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //-1: Erro de atualização de Chave. dll32 Function regVelocidade_MODEM_DarumaFramework(sParametro AS STRING)AS LONG PASCAL LIB hDllDaruma //Definição: //Permite ao desenvolvedor configurar a velocidade no qual a sua porta de comunicação ira trabalhar, sendo ela 9600, 38400 ou 115200, por padrão o modem esta inicialmente configurado para 9600, onde através deste registro você poderá alterar a velocidade conforme a sua necessidade. //Parâmetros: //Id Variável Tipo Tam. Descrição //1 sParametro A 9 Variável string no qual você devera informar o valor que será usado no parametro, no caso, a velocidade no qual estará o modem. //Observações: //O modem trabalha com as velocidades em BPS, disponível na porta serial, lembrando que está configuração não diz respeito a velocidade no qual a mensagem será enviada até seu destinatário e sim a velocidade de comunicação com a porta serial e o Modem. //Devemos sempre observar a velocidade que o Modem estará configurado, pois caso a velocidade da sua porta não estiver igual a velocidade do Modem, não haverá comunicação. //Retornos: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //-1: Erro de atualização de Chave. dll32 Function eDefinirProduto_Daruma(szProduto AS STRING)AS LONG PASCAL FROM "eDefinirProduto_Daruma" LIB hDllDaruma //Definição: //Este método permite indicar para a DarumaFramework.dll qual produto está sendo utilizado no momento, assim a dll realiza o startup do produto, já carregando em memória as informações relativas ao mesmo, que estão preenchidas no arquivo .XML ou Registry. //Atualmente (a partir da versão 07.14.04 da DarumaFramework.dll) não é mais obrigatória a indicação do produto, então você não precisa mais se preocupar em configurar o produto que seu aplicativo está utilizando. Em outras palavras consegue utilizar vários produtos com as chamadas de seus métodos intercaladas, sem precisar fazer a chamada deste comando aqui. //Caso seu sistema trabalhe com um produto apenas, recomendamos que sempre deixe esta informação pré-configurada. //Sintaxe: //eDefinirProduto(char*pszProduto); //Parâmetros: //Id Variável Tipo Tam. Descrição //1 pszProduto A 20 Nome Produto: DUAL- ECF - MODEM - DSP - TA2000 //Saídas: //Não possui. //Retornos: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. dll32 Function eInicializar_MODEM_DarumaFramework()AS LONG PASCAL LIB hDllDaruma //Definição: //Permite ao desenvolvedor iniciar o modem e dar inicio a suas funções. //Neste método estaremos inicializando os comandos e abrindo a porta serial do modem para assim ser executados todos os comandos no qual você desenvolvedor ira enviar para o modem. //O método alem de inicializar o modem executa os primeiros comandos universais para este tipo de plataforma que seriam os comandos AT, onde o mesmo ira iniciar com o comando AT que ira abrir a comunicação com o modem, seguindo dos comandos AT+CMGF e ATE0, alem de abrir a comunicação com a porta serial programada em seu registro. //Sintaxe: //eInicializar_MODEM_DarumaFramework(void) //Parâmetros: //Não possui. //Observações: //Devemos executar este comando quando carregado o FORM(Formulário) de sua aplicação, no qual quando inicializado seu aplicado a função já ira inicializar automaticamente seguindo os padrões do seu registro e abrindo a comunicação com o modem. //A função por si verifica todas as chaves de registros configuradas pelo desenvolvedor executando elas no inicio de sua aplicação, sendo elas: //Auditoria //Apagar; //LerApagar; //Porta; //Thread; //Velocidade; //TempoAlertar; //CaptionWinAPP. //Retornos: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //-1: Erro na comunicação da serial. //-2: Modem retornou erro. //-3: Modem retornou caractere(s) invalido(s) //-4: Modem não conectado na rede GSM dll32 Function regTempoAlertar_MODEM_DarumaFramework(sParametro AS STRING)AS LONG PASCAL LIB hDllDaruma //Definição: //Permite ao desenvolvedor determinar em quantos segundos thread, ativada através do método regThread_MODEM_DarumaFramework, deverá retornar ao usuário que tem um novo SMS não lido, por meio de uma janela da aplicação informada por regCaptionWinAPP_MODEM_DarumaFramework. //Sintaxe: //regTempoAlertar_MODEM(char *pszParametro) //Parâmetros: //Id Variável Tipo Tam. Descrição //1 sParametro A 6 Variável string no qual você devera informar o valor do tempo que a thread irá enviar o alerta de novo SMS. //Observações: //Esta chave deve estar habilitada como "TRUE" para executar a função antes do aplicativo inicializar. //Chaves-Interligadas: //Está chave esta interligada com a utilização das chaves abaixo: //Thread; //CaptionWinAPP. //Retornos: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //-1: Erro de atualização de Chave. dll32 Function regCaptionWinAPP_MODEM_DarumaFramework(sParametro AS STRING)AS LONG PASCAL LIB hDllDaruma //Definição: //Permite ao desenvolvedor configurar o nome da janela no qual ira receber o alerta da existência de novas SMS não lidas. //Sintaxe: //regCaptionWinAPP_MODEM_DarumaFramework(char *pszParametro) //Parâmetros: //Id Variável Tipo Tam. Descrição //1 sParametro A 29 Variável string no qual você devera informar os parametros no qual o comando irá executar, sendo ele "TRUE" ou "FALSE". //Observações: //Esta chave deve conter o nome da janela no qual ira receber o alerta. Exemplo "MODEM DARUMA". //Chaves-Interligadas: //Está chave esta interligada com a utilização das chaves abaixo: //Thread; //TempoAlertar. //Retornos: //Modem está projetada junta a nossa DarumaFramework.dll para retornar os possíveis erros inteiros demonstrados abaixo: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //-1: Erro de atualização de Chave. dll32 Function eTrocarBandeja_MODEM_DarumaFramework()AS LONG PASCAL LIB hDllDaruma //Definição: //Permite ao desenvolvedor a troca de bandeja do modem, indicando se o modem está conectado a rede GSM(timeout de 30 segundos). //Sintaxe: //eTrocarBandeja_MODEM_DarumaFramework(void) //Parâmetros: //Não possui. //Observações: //Devemos executar este comando quando toda vez que houver necessidade de trocar a chip a ser utilizando (SIM1 ou SIM2). Esse comando está disponível para os modelos (MIN200D e MIN200E). //Para que ocorra a troca sem erros o Modem deve estar na velocidade de comunicação de: 115200 Bits/ segundo. //Retornos: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //-1: Erro na comunicação da serial. //-2: Modem retornou erro. //-3: Modem retornou caractere(s) invalido(s) //-4: Modem não conectado na rede GSM dll32 Function regBandejaInicio_MODEM_DarumaFramework(sParametro AS STRING)AS LONG PASCAL LIB hDllDaruma //Definição: //Permite ao desenvolvedor configurar a bandeja que o modem irá iniciar com o CardSim(chip), SIM1 ou SIM2. //Sintaxe: //regBandejaInicio_MODEM(char *pszParametro) //Parâmetros: //Id Variável Tipo Tam. Descrição //1 pszParametro A 9 Variável string no qual você devera informar os parâmetros no qual o comando irá executar, sendo ele "SIM1" ou "SIM2" //Observações: //Esta chave só tem efeito para o modelo de modem (MIN200D e MIN200E) //Retornos: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //-1: Erro de atualização de Chave. dll32 Function eReiniciar_MODEM_DarumaFramework()AS LONG PASCAL LIB hDllDaruma //Definição: //Este método reinicia o modem para a configuração padrão //Sintaxe: // eReiniciar_MODEM_DarumaFramework(); //Parâmetros: //Não possui. //Saídas: //Não possui. //Retornos: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //Para obter todos os possíveis retornos consulte a Tabela Retornos Métodos. dll32 Function tEnviarSmsOperadora_MODEM_DarumaFramework(Str_Numero AS STRING, Str_Msg AS STRING, Str_SIM AS STRING)AS LONG PASCAL LIB hDllDaruma //Definição: //Método que permite enviar a mensagem para um celular de destino através do modem selecionando qual o chip desejado, chip da bandeja 1 ou 2 (SIM1 ou SIM2) //Existem diversos modos no qual você poderá aplicar esta função, como por exemplo: enviar para apenas um número ou enviar para uma lista com vários números, basta separar os números utilizando o caractere '|'. //O método é geralmente usado quando o desenvolvedor deseja que a DarumaFramework, envie uma determinada informação ao seu destinatário final. //Exemplos para Envio de Mensagens: //Os exemplos abaixo, ajudaram você desenvolvedor a entender como enviar mensagens: //stNumeroTelefone. //Variável string no qual você devera informar o numero do destinario. //Ex.: 01292289860, informando o DDD para o envio da mensagem; //Ex.2: 89457852, caso o numero no qual a mensagem será enviada, esteja na mesma localidade do seu CHIP, como por exemplo, estou usando um CHIP do estado de São Paulo(interior), no qual seria 012, sendo assim não necessito informar o DDD para enviar mensagens para os celulares presentes no Código de Ãrea. //stMensagem. Variável string no qual você devera inserir a informação a ser enviada pelo modem, respeitando o limite de 140 caracteres. //Ex.: Ola! Desenvolvedor Daruma! //stBandeja. Bandeja que o será utilizada para enviar o SMS //Ex.: SIM1 //Sintaxe: //tEnviarSmsOperadora_MODEM_DarumaFramework( char *pszNumTels, char *pszMsg,char *pszBandeja); //Parâmetros: //Id Variável Tipo Tam. Descrição //1 stNumeroTelefone A 11 Variável string no qual você devera informar o(s) número(s) do(s) destinario(s), separe-os com o caractere '|'. //2 stMensagem A 140 Variável string no qual você devera inserir a informação a ser enviada pelo modem. //3 stBandeja A 10 Variável string no qual você devera informar qual a bandeja será utilizada para enviar a mensagem, SIM1 ou SIM2 //Retornos: //Modem está projetada junta a nossa DarumaFramework.dll para retornar os possíveis erros inteiros demonstrados abaixo: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //-1: Erro na comunicação da serial. //-2: Modem retornou erro. //-3: Modem retornou caractere(s) invalido(s) //Observação: //- Separando os números por '|' você pode enviar quantos números quiser, não há limite estabelecido; //- Caso queira enviar SMS sem selecionar o SIM Card, e utilizar o que está atualmente sincronizado, utilize o método tEnviarSms_MODEM_DarumaFramework; //- Este método tenta enviar o sms uma única vez, caso queira que a DLL automaticamente faça mais tentativas de envio, caso seja retornado erro, altere a configuração <NúmeroTentativas> presente no XML/ Registry. //- Para o funcionamento total deste método o modem deve estar na velocidade de comunicação: 115200 Bits/ segundo, pois é nesta velocidade que a troca de bandeja (de um SIM Card para o outro) ocorre. dll32 Function eBuscarPortaVelocidade_MODEM_DarumaFramework()AS LONG PASCAL LIB hDllDaruma //Definição: //Realiza a busca da porta e velocidade em que o Modem está conectado, modificando os valores das chaves <Velocidade> e <Porta> no DarumaFrameWork.xml se necessário. //Sintaxe: //eBuscarPortaVelocidade_MODEM_DarumaFramework(void) //Parâmetros: //Não possui. //Saídas: //Não possui. //Retornos: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //Para obter todos os possíveis retornos consulte a Tabela Retornos Métodos. dll32 Function rInfoEstendida_MODEM_DarumaFramework(Str_InfoEstendida AS STRING)AS LONG PASCAL LIB hDllDaruma //Definição: //Método que retorna o índice da mensagem se chamado logo após o seu envio. Ãndice que é utilizado para ler a Confirmação de Mensagem. //Sintaxe: //rInfoEstendida_MODEM_DarumaFramework(byRef char* pszInfoEstendida); //Parâmetros: //Id Variável Tipo Tam. Descrição //1 pszInfoEstendida A //até 10 //Variável string por referência para receber o índice da mensagem. //Observações: //Para utilizar a confirmação de entrega da mensagem, não esqueça de habilitar o serviço, no xml altere o valor da chave ConfirmaEntregaSMS para 1. O valor da chave pode ser alterado pelo método regAlterarValor_Daruma. //Retornos: //O método poderá retornar os possíveis erros inteiros demonstrados abaixo: // 0: Erro de comunicação, não foi possível enviar o método. // 1: OK, Sucesso ao enviar o método. //-1: Erro na comunicação da serial. //-2: Modem retornou erro. //-8: Comando inválido. dll32 Function rRetornarNumeroChamada_MODEM_DarumaFramework(Str_Resposta AS STRING)AS LONG PASCAL LIB hDllDaruma //Definição: //Método que possibilita saber o número que está ligando para o SIM Card usado no modem, ou seja, identificar de qual a origem da ligação que está sendo recebida, através de uma variável string passada por referência. //Para que o método funcione corretamente é necessário ativar a configuração MODEM\ReceberNumeroChamada no XML, alterando seu valor para 1. //Sintaxe: //rRetornarNumeroChamada_DarumaFramework( char *pszNumero ) ; //Parâmetros: //Id Variável Tipo Tam. Descrição //1 pszNumero A 14 Variável string passada por referência que retorna o número que está ligando para o Modem (SIM Card) //Retornos: //Este método pode retornar os seguintes valores: // 0: Erro de comunicação, não foi possível enviar o método. // 1: OK, Sucesso ao enviar o método. //-1: Erro da Comunicação Serial; //-2: Modem retornou Erro; //-3: Modem retornou caracteres inválidos; //-8: Modem retornou resposta incompleta (sem "OK" ou "ERRO"). dll32 Function regRetornaValorChave_DarumaFramework(pszProduto AS STRING,pszChave AS STRING,pszValor AS STRING)AS LONG PASCAL LIB hDllDaruma dll32 Function rListarSMSTelefone_MODEM_DarumaFramework(Str_NumTelefone AS STRING)AS LONG PASCAL LIB hDllDaruma //Permite ao desenvolvedor listar todas as mensagens contidas no CHIP do modem em um arquivo no formato Texto, de apenas um determinado número de telefone. //O método possui um parâmetro, para informar o número de telefone do qual deseja que as mensagens sejam listadas. //E as mensagens que serão lidas podem ser definidas através da chave de configuração localizada no Registro/ XML (MODEM\ListarSms). Os valores aceitos são: 0 - para Todas as mensagens; 1 - para mensagens Lidas; 2 - para mensagens Não Lidas. O valor padrão é 0, então se a chave não for alterada, serão lidas todas as mensagens do número indicado. //Sintaxe: //rListarSMSTelefone_MODEM_DarumaFramework( char* pszTelefone) //Parâmetros: //Id Variável Tipo Tam. Descrição //1 pszTelefone A 14 String que informa qual o número de telefone que deseja listar as mensagens no arquivo. //Observações: //A lista será criada no local especificado pelo desenvolvedor na chave chamada <LocalArquivos> do Registro/ XML, e vai conter apenas as mensagens do número especificado. //O número informado para listagem, deve estar exatamente igual ao que é armazenado pelo chip. (Exemplos: 012987654321 ou +5512987654321) //Retornos: //Abaixo os possíveis valores para o retorno do método: // 0: Erro de comunicação, não foi possível enviar o método. // 1: OK, Sucesso ao enviar o método. //-1: Erro da Comunicação Serial; //-2: Modem retornou Erro; //-3: Modem retornou caracteres inválidos; //-8: Modem retornou resposta incompleta (sem "OK" ou "ERRO"). dll32 function rNivelSinalRecebido_MODEM_DarumaFramework()AS LONG PASCAL LIB hDllDaruma //Definição: //Permite ao desenvolvedor verificar a disponibilidade do sinal presente no Modem. //Sintaxe: //rNivelSinalRecebido_MODEM_DarumaFramework(void) //Observações: //Para executar esta funcionalidade, necessitamos acionar o método Inicializar_MODEM_DarumaFramework. //Definições dos Níveis de Sinais: //Os valores abaixo, serão demonstrado a você desenvolvedor, para a verificação do nível de sinal: //0 = -113dBm ou menor; //1 = -111dBm; //2.30 = -109... -53 dBm; //31 = -59dBm ou maior; //99 = desconhecido ou não detectado. //Parâmetros: //Não possui. //Retornos: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //-1: Erro na comunicação da serial. //-2: Modem retornou erro. //-3: Modem retornou caractere(s) invalido(s). //-x: Valor referente ao nível de sinal. dll32 function rListarSms_MODEM_DarumaFramework()AS LONG PASCAL LIB hDllDaruma //Definição: //Permite ao desenvolvedor listar todas as mensagens contidas no CHIP do modem em um arquivo no formato Texto. O método não possui parâmetros, porém as mensagens que serão lidas podem ser definidas através de uma chave de configuração localizada no Registro/ XML (MODEM\ListarSms). Os valores aceitos são: //0 - para Todas as mensagens //1 - para mensagens Lidas //2 - para mensagens Não Lidas //O valor padrão é 0, então se a chave não for alterada, serão lidas todas as mensagens. //Além desta função disponibilizamos uma chave no registro chamada Thread no qual através dela o modem ficará num LOOP questionando se houve ou não recebimento de mensagem (clique aqui para saber mais). //Sintaxe: //rListarSms_MODEM_DarumaFramework( void ) //Observações: //A lista será criada no local especificado pelo desenvolvedor na chave chamada <LocalArquivos> do Registro/ XML //HKEY_LOCAL_MACHINE\SOFTWARE\DarumaFramework \LocalArquivos //Parâmetros: //Não possui. //Retornos: //Abaixo os possíveis valores para o retorno do método: // 0: Erro de comunicação, não foi possível enviar o método. // 1: OK, Sucesso ao enviar o método. //-1: Erro da Comunicação Serial; //-2: Modem retornou Erro; //-3: Modem retornou caracteres inválidos; //-8: Modem retornou resposta incompleta (sem "OK" ou "ERRO"). dll32 function tEnviarSms_MODEM_DarumaFramework(sNumeroTelefone AS STRING,sMensagem AS STRING )AS LONG PASCAL LIB hDllDaruma //Definição: //Permite enviar a mensagem para um celular de destino através do modem. //Existem diversos modos no qual você poderá aplicar esta função, como por exemplo: enviar para apenas um número ou enviar para uma lista com vários números, basta separar os números por '|'. //O método é geralmente usado quando o desenvolvedor deseja que a DarumaFramework, envie uma determinada informação ao seu destinatário final. //Exemplos para Envio de Mensagens: //Os exemplos abaixo, ajudaram você desenvolvedor a entender como enviar mensagens: //stNumeroTelefone: Variável string no qual você devera informar o numero do destinatário. //Ex.: 01292289860, informando o DDD para o envio da mensagem; //Ex.2: 89457852, caso o numero no qual a mensagem será enviada, esteja na mesma localidade do seu CHIP, como por exemplo, estou usando um CHIP do estado de São Paulo(interior), no qual seria 012, sendo assim não necessito informar o DDD para enviar mensagens para os celulares presentes no Código de Ãrea. //stMensagem: Variável string no qual você devera inserir a informação a ser enviada pelo modem, respeitando o limite de 140 caracteres. //Ex.: Ola! Desenvolvedor Daruma! //Observações: //Caracteres especiais aceitos para o envio de SMS: //! " # % & ( ) * : + ; , < > | = . / ? //Parâmetros: //Id Variável Tipo Tam. Descrição //1 stNumeroTelefone A 11 Variável string no qual você devera informar o numero do destinario. Utilize o caractere '|' para separar os números, caso tenha mais de um. //2 stMensagem A 140 Variável string no qual você devera inserir a informação a ser enviada pelo modem. //Retornos: //Modem está projetada junta a nossa DarumaFramework.dll para retornar os possíveis erros inteiros demonstrados abaixo: //0: Erro de comunicação, não foi possível enviar o método. //1: OK, Sucesso ao enviar o método. //-1: Erro na comunicação da serial. //-2: Modem retornou erro. //-3: Modem retornou caractere(s) invalido(s) //Observação: //- Separando os números por '|' você pode enviar quantos números quiser, não há limite estabelecido; //- Com este método o SMS será enviado através do chip que está atualmente sincronizado, para escolher se quer utilizar SIM1 ou SIM2, utilize o métdo tEnviarSmsOperadora_MODEM_DarumaFramework; //- Este método tenta enviar o sms uma única vez, caso queira que a DLL automaticamente faça mais tentativas de envio, caso seja retornado erro, altere a configuração <NúmeroTentativas> presente no XML/ Registry.
  7. Pessoal estou vendo um material de cobrança na conta de energia fonecido pela ampla , ela gera um arquivo remessa para esse controle , alguem ja usou ou trabalhou com isso ?
  8. Não sei se ja conhece mas se quiser mais detalhes http://wiki.fivetechsoft.com/doku.php?id=fivewin_functions_by_category Numeric manipulation Atang() Calculates the angle whose tangent is a specified number B2Bin() Converts a byte into a string 1 byte len Bin2d() Converts a string into a 4 byte double precision numeric C2Hex() Converts a byte into a hex string (2 chars) Cos() Calculates the cosine function of an angle cStrWord() To extract a word of a string of characters D2bin() Converts a floating point number into a string Dectohex() Converts a number in its hexadecimal form Hex2str() Converts a hexadecimal representation of a string in its corresponding Hextodec() It converts a chain hexadecimal to a decimal number Htons() Convert a u_short from host to network byte order I2hex() Converts a word (2 bytes) into a hex string (4 chars) L2hex() Converts a long (4 bytes) into a hex string (8 chars) Land() Retrieves the logical AND of some numeric values Lxor() Exclusive Or Nand() Generates a numeric AND value from some numbers Ndbl2flt() Convert a Double to Float Nhex() To convert a hexadecimal to decimal Nhibyte() Returns the High Byte of a word (two bytes) Nhiword() Returns the HiWord of a long (four bytes) Nlobyte() Returns the Low byte of a word (two bytes) Nloword() Returns the Low word of a long (four bytes) Nmakelong() Generates a long (4bytes) from two words (2bytes) Nnot() This function carries out a logical NOT to an operator Nor() Generates a numeric OR value from some numbers Nrandom() Generates a random number Ntobin() 1 and .f. for 0) Nxor() An exclusive Or executes with a list of parameters Sin() Calculates the sine function of an angle Str2hex() Converts the characters of a string in their hexadecimal representation Strbyte() Assign/obtain the value of a byte Tang() Calculates the tangent function of an angle UtoS() Converts a long value to short
  9. Bem aqui no programa eu faço parecido com a primeira resposta , tambem me baseio na id do Get ou da classe tanto para usar o Hide como o Disabled ai vai as funçoes Function Desabilita_Controles(oDlg) // Passar Dialog no Parametro , caso for um Folder passar o oDlg:aDialogs[1] local y,x:= len (oDlg:aControls) For y:=1 to x oDlg:aControls[y]:Disable() next Function Desabilita_Controles2(oDlg) //Essa voce so precisa mudar a classe local y,x:= len (oDlg:aControls) For y:=1 to x if oDlg:aControls[y]:classname<>"TBUTTONBMP" oDlg:aControls[y]:Disable() endif next Function Desabilita_Controles3(oDlg,IdInicial) // Essa Funciona pelo Numero da Id local y,x:= len (oDlg:aControls) For y:=1 to x if oDlg:aControls[y]:nId>=IdInicial oDlg:aControls[y]:Disable() endif next Quaisquer duvidas ta ai os contatos : Matheus@inteligence.com.br / Matheushchaves@gmail.com / d.matheusfarias@hotmail.com / matheushchaves@hotmail.com / (83) 9854-0294
  10. Olha se Voce conhece bem os comandos consegue usar o Harbour para usar seus bancos de Dados , não sei se é sua preferencia uma interface ainda no terminal mas muito boa ela é , entre no site do harbour e faça o Download do Hb3.0 na pasta Bin tem o Hbrun , que é um "Compilador em tempo real" do harbour ele executa o que voce coloca assim existem todos os comandos do clipper que voce consegue manipular o banco com mai agilidade , Obs: Esses comandos o Clipper do banco de dados são semelhantes ao do fivewin Links http://vivaclipper.wordpress.com/2013/02/01/hbrun/ http://sourceforge.net/projects/harbour-project/files/binaries-windows/3.0.0/harbour-3.0.0-win.exe/download Acredito que vai lhe ajudar
  11. Usa um arquivo de controle para controlar esses benditos indices , como um ChecaServidor.txt , se ele existir no disco C: ( Local ) essa maquina será o servidor , muito mais pratico so acho
  12. Pessoal Desenvolvi esse Manipulador de Banco de Dados Dbf , e com uma opçao para migrar os bancos de dbf para mysql , atraves doa sqllib queria o feedback de voces sobre erros e sugestoes , Agradeço a Todos os que Baixarem http://alanart.net/fivewin/index.php?/files/file/1082-manipulador-dbf-e-migra-para-sql/
  13. Olha as vezes depende do que vc usa , e da lingua padrao que esta configurada na programaçao , exemplo com o xharbour alguns caracteres especiais em portugues vao pegar outros , acredito que com isso resolva REQUEST HB_Lang_PT REQUEST HB_CODEPAGE_DE850, HB_CODEPAGE_DEISO //->Defaults da Lingua Portuguesa do [x]Harbour HB_LANGSELECT( 'PT' ) // Default language is now Portuguese //->Como indexar corretamente campos acentuados Harbour/xHarbour //->Este recurso e valido para Harbour e xHarbour e requer a biblioteca //CODEPAGE.LIB.
  14. Como voce usa seu meter ? atraves do msgmeter , redefine , ou com @ ? uma dica é voce debugar o ? oMeter:lPercentage porque assim voce vai consegui ver a situação que está. na classe tmeter no \fwh\sources\classes\meter.prg contem o lPercentage sendo default .f.
×
×
  • Create New...