Clipper On Line • Ver Tópico - Exemplos tudo-em-um

Exemplos tudo-em-um

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Exemplos tudo-em-um

Mensagempor JoséQuintas » 11 Fev 2014 01:09

A partir de agora estarei centralizando meus exemplos, com menu.
Depois vou olhar no fórum se esqueci de algum que possa ser incluso nele.

- Controle de tarefas em multithread
- Calculadora wvg ou console
- Calendário simples wvg
- Classe pra telas de cadastro wvg ou console
- menu estilo clipper com mouse
- menu wvg
- classe pra pdf
- barra de progresso com cálculo de tempo
- errorsys.prg pra modo gui (como eu precisava dela pra testar exemplos, já deixei junto)

Exemplos são exemplos, podem estar prontos pra uso ou não.
Junto tem o "messenger-like" mas ainda não alterei pra dbf, e por isso não está na compilação.

Tudo junto ficou com 34kb, e o resultado é um único EXE.
em wvg: hbmk2 test
sem ser wvg: hbmk2 testnowvg

se for uma GT sem suporte a multiwindow, precisa alterar a função AppMultiWindow(). Por enquanto só deixei a GTWIN como sem suporte.

Não se limitem a chamar uma opção. Abram janelas à vontade e depois podem até fechar o menu, que todas se mantém abertas.

Nota: para fundo de tela usei uma imagem pequena, por isso a imagem fica ruim, mas qualquer imagem triplicaria o tamanho do projeto. Além disso, o fundo de tela não é possível em WVG, então é só pra brincar mesmo. Ele acaba sumindo na maioria das vezes.

Apesar de relativamente simples, me faltaram exemplos como esses quando comecei a tentar algo além do Clipper normal.
Espero que ajude.
Divirtam-se.
Anexos
test.zip
(33.28 KiB) Baixado 579 vezes
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9259
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 535 vezes

Exemplos tudo-em-um

Mensagempor JoséQuintas » 11 Fev 2014 01:19

Seguindo a tela:
calendário, calculadora, relatório no bloco de notas
barra de progresso, relatório em pdf no foxit reader
cadastro estilo console, cadastro estilo wvg, menu wvg, menu clipper - fundo de tela apenas pra brincar, about
Tudo isso é um único EXE rodando, acrescentado ao bloco de notas e foxit reader.
É exatamente este projeto rodando.***
*** Aumentei o contador da barra de progresso pra facilitar o print-screen mais completo
Anexos
demo.png
test.exe rodando uma única vez, mas chamando várias opções do menu
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9259
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 535 vezes

Exemplos tudo-em-um

Mensagempor JoséQuintas » 11 Fev 2014 11:09

Não sei se vou complicar de vez.
Acrescentei minha classe do SPED.
Por enquanto acrescentei consulta a status de NFE, que é a mais simples por não depender de assinatura.
Na hora de testar...... que droga digitar tanta coisa....
Então acrescentei a parte de copiar/colar, e como tava junto, o mouse wheel (rodinha do mouse)

Como vai dar pra perceber, depois vou acrescentar também consulta a CTE.

Pausa... vou acrescentar agora, só confirmar aonde define se é NFE ou CTE...
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9259
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 535 vezes

Exemplos tudo-em-um

Mensagempor JoséQuintas » 11 Fev 2014 11:33

A pausa foi verdadeira.
Agora também tem consulta a CTE.

Foi proposital. É que gosto da minha classe, então foi pra dar uma idéia do tempo que iria levar pra modificar.
Já pra consultar MDFE vai ser bem mais demorada, porque a classe está preparada pra qualquer coisa, mas não tem nada sobre ele.

só digitar a chave de acesso, a rotina já identifica do que se trata, e faz a consulta relacionada.

Pra dar uma idéia, a rotina:

   DO WHILE .T.
      @ 4, 0 SAY "Chave:" GET cChave PICTURE "@9"
      @ 6, 0 SAY "Nome do certificado:"
      @ 7, 0 GET cCertificado
      READ
      IF Lastkey() == K_ESC
         EXIT
      ENDIF
      oSefaz := SefazClass():New()
      IF Substr( cChave, 21, 2 ) == "55" // NFE
         MsgExclamation( oSefaz:NfeConsulta( cChave, Trim( cCertificado ) ) )
      ELSEIF Substr( cChave, 21, 2 ) == "57" // CTE
         oSefaz:cProjeto := "cte"
         MsgExclamation( oSefaz:CteConsulta( cChave, Trim( cCertificado ) ) )
      ELSE
         MsgExclamation( "Documento nao identificado" )
      ENDIF
   ENDDO


Só não lembro se essa parte depende de instalar a capicom e/ou o XML 5.0 da Microsoft.
Favor avisar se for o caso.

Capicom tem na Microsoft.
A DLL do XML, o Windows tem todas da 1.0 até 6.0, menos a 5.0.
Por algum motivo, essa versão 5.0 só tem no Office, então tem que baixar não oficialmente o XML 5.0.
Provavelmente tem no ACBR, na hbnfe, e em outros lugares.
A versão 5.0 contém a parte de usar certificado.
Testem e avisem, mas deixei só no teste.hbp. Por se tratar de componentes Windows, WVG aceita.

Agora é pensar em como adicionar todo restante do sped, e rotinas de teste, lembrando que a parte pra emitir NFE está toda aí.
Anexos
test.zip
(43.67 KiB) Baixado 280 vezes
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9259
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 535 vezes

Exemplos tudo-em-um

Mensagempor asimoes » 11 Fev 2014 11:36

José,

Parabéns e obrigado por compartilhar seus exemplos!
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 3763
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 212 vezes
Mens.Curtidas: 160 vezes

Exemplos tudo-em-um

Mensagempor JoséQuintas » 11 Fev 2014 11:44

Faltou avisar:
o nome do certificado é só olhar no explorer
ferramentas, opções de internet, conteúdo, certificados
pra facilitar, clica no certificado, detalhes, requerente (ou cn), e aí dá pra usar o copiar/colar.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9259
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 535 vezes

Exemplos tudo-em-um

Mensagempor JoséQuintas » 11 Fev 2014 16:05

Estava sem paciência de ler manual, e fui fazendo no chute - como é a operação mais simples do projeto, até dá pra tentar chutar.
A consulta a mdfe está funcionando.
Isso mostra porque gosto da minha classe.

Exatamente as alterações que fiz nos fontes:

na tela de consulta (que usa a classe), o IF:
      oSefaz := SefazClass():New()
      IF Substr( cChave, 21, 2 ) == "55" // NFE
         MsgExclamation( oSefaz:NfeConsulta( cChave, Trim( cCertificado ) ) )
      ELSEIF Substr( cChave, 21, 2 ) == "57" // CTE
         oSefaz:cProjeto := "cte"
         MsgExclamation( oSefaz:CteConsulta( cChave, Trim( cCertificado ) ) )
      ELSEIF Substr( cChave, 21, 2 ) == "58" // MDFE
         oSefaz:cProjeto := "mdfe"
         MsgExclamation( oSefaz:MdfeConsulta( cChave, Trim( cCertificado ) ) )
      ELSE


No início da classe, a operação nova:

#define WSMDFECONSULTAPROTOCOLO    17


o método de consulta - este requer manual da Fazenda, e consulta direta no site do webservice pra confirmar parâmetros, e uma chave de acesso, que peguei no grupo uninfe:

METHOD MdfeConsulta( cChave, cCertificado ) CLASS SefazClass
   ::cCertificado := cCertificado
   ::cVersao     := "1.00"
   ::cUf         := Substr( cChave, 1, 2 )
   ::cServico    := "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeConsulta"
   ::cSoapAction := "http://www.portalfiscal.inf.br/mdfe/wsdl/MDFeConsulta/MDFeConsultaMDF"
   ::cWebService := ::GetWebService( UfCodigo( ::cUf ), WSMDFECONSULTAPROTOCOLO )
   ::cXmlDados   := ""
   ::cXmlDados += [<consSitMDFe versao="] + ::cVersao + [" xmlns="http://www.portalfiscal.inf.br/mdfe">]
   ::cXmlDados += [<tpAmb>] + ::cAmbiente + [</tpAmb>]
   ::cXmlDados += [<xServ>CONSULTAR</xServ>]
   ::cXmlDados += [<chMDFe>] + cChave + [</chMDFe>]
   ::cXmlDados += [</consSitMDFe>]
   ::XmlSoapPost()
   RETURN ::cXmlRetorno


A rotina que pega o webservice, como é todo mundo no RS:

   ELSEIF ::cProjeto == "mdfe" // mdfe esta no RS
      cTexto := UrlWebService( "RS", ::cAmbiente, cServico )


e por último, o webservice:

   CASE cUf == "RS" .AND. cAmbiente == WSPRODUCAO
      DO CASE
      CASE nWsService == WSMDFECONSULTAPROTOCOLO ;     cUrlWs := "https://mdfe.sefaz.rs.gov.br/ws/MDFeConsulta/MDFeConsulta.asmx"


Não foi de primeira, tive que fazer ajustes e testes, mas o resultado foi este, direto no ambiente de produção:
respostamdfe.png
tudo bem, justamente a chave estava lá no grupo uninfe por ter o retorno de chave inválida


Pra quem não percebeu ainda: nenhum arquivo temporário, nada de escolher pasta ou nome de arquivo a enviar ou nome de arquivo de retorno. Só enviar uma variável e receber outra.
O projeto inteiro está assim, mas não se empolguem. Isso também depende de rotinas pra checar se o retorno está correto, ou o que aconteceu em cada etapa. É aí que ter arquivos temporários ajudam a decidir o que fazer.

Mas está lançada a classe.
Eu mostrar os detalhes é porque no caso de precisar ajuda, tem o caminho das pedras.
Imaginem procurar endereço de todos os webservices, entrar em cada webservice pra confirmar alguns parâmetros, sem falar nos próprios XMLs. Isso vai dar umas 300 variações, que se cada uma levar 1 hora... vai muito longe pra uma pessoa só.
Mas se cada pessoa fizer uma parte... o tempo pode ser bem reduzido.

Tempos atrás comentei isso: é relativamente simples, mas é trabalhoso.
A parte que demorei pra conseguir, só consegui através da hbnfe, foi a de assinatura, onde todo o resto depende dela, e sem ela não poderia fazer mais nada.
Ao mesmo tempo, como podem ver, o funcionamento não tem nada a ver com hbnfe. Não sei como poderia incluir isso lá sem dar uma reformulada geral, e sacrificar toda compatibilidade.

É tudo meio que padrão. Consegui definir as partes comuns de nfe e cte, e ficou preparada pra qualquer coisa.
o mdfe mostra isso. Agora falta a parte mais demorada, que é pegar listas de webservices, incluir na classe, e fazer os métodos que faltam.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9259
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 535 vezes

Exemplos tudo-em-um

Mensagempor JoséQuintas » 11 Fev 2014 16:08

Pior que essa tela mostrou uma nova necessidade ao tudo-em-um:
usar a codepage Português-Brasil.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9259
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 535 vezes

Exemplos tudo-em-um

Mensagempor Duda 'Sgluber' » 14 Fev 2014 12:25

JoséQuintas escreveu:...
em wvg: hbmk2 test
sem ser wvg: hbmk2 testnowvg
...

Quintas,

acho que vale registrar que a compilação deve ser feita com o Harbour 3.2. Eu uso o 3.0 e apresenta erro ao compilar em ambos os casos.

E usando o 3.2, o TESTNOWVG compila perfeitamente. Já o TEST, apresenta erro no FRMCLASS.prg:
Compiling 'frmclass.prg'...
frmclass.prg(209) Warning W0001  Ambiguous reference 'WVG_IMAGE_BITMAPRESOURCE'
Confesso que não fui buscar solução para o erro (talvez seja de fácil identificação), estou postando apenas para informar e saber se você identifica o problema de "bate-pronto".

Obrigado! Imagem
Comecei pra valer nos tempos do MSX e nunca mais parei... grande caminhada! :-)
Avatar de usuário

Duda 'Sgluber'
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 131
Data de registro: 11 Mar 2013 21:57
Cidade/Estado: Interior de São Paulo
Curtiu: 76 vezes
Mens.Curtidas: 14 vezes

Exemplos tudo-em-um

Mensagempor JoséQuintas » 14 Fev 2014 12:46

Pelo nome, é o parâmetro que indica que o bitmap está nos arquivos de resource, embutido no EXE.

A única coisa que me veio à cabeça foi justamente quando comecei a usar botões da WVG: o Pritpal fez uma alteração pra permitir ICO de resource.Acho que isso foi há um ano atrás.
Então teria que ser o Harbour 3.2 depois dessa época.

Aqui está em: wvgparts.ch, neste bloco:

#define WVG_IMAGE_ICONFILE                        1
#define WVG_IMAGE_ICONRESOURCE                    2
#define WVG_IMAGE_BITMAPFILE                      3
#define WVG_IMAGE_BITMAPRESOURCE                  4


Mas se não tem o bloco, é possível que a gtwvg desse Harbour também não tenha a alteração.
Como opção, mas vai perder a identificação dos botões, seria desativar a linha da imagem - mas vai ter ainda o tooltip.

Outra opção é alterar a rotina pra pegar diretamente a imagem do arquivo em disco.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9259
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 535 vezes

Exemplos tudo-em-um

Mensagempor JoséQuintas » 16 Fev 2014 13:17

Faltou um exemplo mais completo da nfe.
Vou fazer aqui durante o post, apenas como referência. No tudo-em-um não tem a assinatura ainda.

cXml :=  "seu xml da nota"
AssinaXml( @cXml, "nomecertificado" )
oSefaz := SefazClass():New()
cXmlRecibo := oSefaz:NfeLoteEnvia( cXml, "numlote", "UF", "nome certificado" )
IF ReciboOk( cXmlRecibo ) // rotina pra checar se ok
   cRecibo := PegaRecibo( cXmlRecibo ) // rotina pega num. recibo
   cXmlRetornoLote := oSefaz:NfeConsultaRecibo( cRecibo, "UF", "nome certificado" )
   IF RetornoOk( cXmlRetornoLote ) // rotina pra checar se ok
      SalvaAutorizado( cXml, cXmlRetornoLote ) // rotina pra montar autorizado
   ENDIF
ENDIF


As rotinas ReciboOk(), RetornoOk() e SalvaAutorizado() provavelmente os ERPs já tem, porque seria a análise dos arquivos recebidos.
Os arquivos temporários que o uninfe, acbrnfe e hbnfe utilizam, seriam os equivalentes às variáveis cXmlRecibo, cXmlRetorno.

Então no geral ficou assim:
- Os Xmls tem o modelo nos manuais da Fazenda
- Os Xmls de comunicação tem nos manuais da Fazenda, e também dá pra olhar pelos webservices
- Os webservices tem nos sites da Fazenda
- A Assinatura e SOAP são padrão

Então, tudo que precisa pra qualquer projeto de NFE, CTE, MDFE, e até nota de serviço tem na classe do tudo-em-um.
A parte a mais é sobre os xmls/webservices, que tem nos manuais oficiais ou webservices.
A análise de retornos, mesmo com produtos de terceiros tem que ser feita em separado, então não dá pra dizer que está faltando na classe.

Também estranhei quando criei. Parece simples demais pra ser verdade.
No meu uso, deixo todos esses XMLs de envio/retorno no MySql. O cliente salva lá, e meu servidor trabalha aqui.
Em caso de problema, acesso aqui comigo pra ver o que aconteceu.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9259
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 535 vezes

Exemplos tudo-em-um

Mensagempor JoséQuintas » 16 Fev 2014 17:51

Aproveitando....

O tudo-em-um representa praticamente tudo que uso em meu aplicativo.
Ao contrário do que eu pensava, mais recursos da GTWVG dependem do Pritpal, porque dependem de parte em linguagem C.

Então, se possível, gostaria de ver as opções do tudo-em-um em outras GTs.
É pouca coisa, botões e menu, então não usa muitos recursos extras.
Tem horas que ficar testando GTs é desanimador.
Por enquanto continuo com a WVG, pouca novidade gráfica mas funcionando.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9259
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 535 vezes

Exemplos tudo-em-um

Mensagempor JoséQuintas » 18 Fev 2014 12:44

Uma coisa embutida no tudo-em-um que não chama atenção:

FUNCTION AppUserName( xValue )
   STATIC AppUserName := ""
   IF xValue != NIL
      AppUserName := xValue
   ENDIF
   RETURN AppUserName


Tinha lá minhas variáveis públicas, criadas no tradicional: PUBLIC AppUserName

Ok, funciona, mas não pra multithread.

Cheguei a criar como uma classe App(), e dentro da classe as variáveis pra usuário, empresa, etc.
Isso facilitava uma única variável a declarar nos fontes.

Mas...
Se digitar errado o nome na classe, não se percebe. App():UserName
Se usar o nome da variável pública errado, não se percebe.
Pra tolerância zero (-w3 -es2) precisa declarar em tudo que é fonte que usa a variável.
Pra multithread, precisa gambiarra....
Do jeito acima, se errar o nome já aparece na compilação, e também já funciona em multithread.
Concordo: Dá trabalho transformar as variáveis públicas em funções usando variáveis estáticas, e é muito mais fonte do que um simples PUBLIC.
Mas o compilador avisar sobre qualquer nome errado, isso é ótimo, evita surpresas.
E elimina MEMVAR nos módulos pra variáveis públicas (o que pode até reduzir código ao invés de aumentar).
No uso é só AppUserName( "NOME" ) pra salvar, ou AppUserName() pra usar o que está salvo.
O APP é do tempo do VB6, onde App se referia ao aplicativo. App.Path era o path do EXE.
Então AppUserName, nome do usuário logado no aplicativo. Acho que tá adequado.

Outra coisa que tem lá é:

THREAD STATIC wTelaSalva := {}


a diferença com THREAD é que essa variável vai se multiplicar: cada thread tem a sua.
Usei pra salvar/restaurar telas. Porque: simples, threads é como programas diferentes rodando, um em cada janela. Então cada thread tem suas próprias telas pra salvar/restaurar, não se pode misturar a tela de um programa/thread com a tela do outro. Ao invés de criar um controle doido, mais fácil adicionar THREAD na declaração, e nem se preocupar com isso depois.

Em tela GUI/Windows nem precisa ficar salvando/restaurando telas. Isso é coisa de console ou de mixto gui/console como GTWVG.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9259
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 535 vezes

Exemplos tudo-em-um

Mensagempor JoséQuintas » 18 Fev 2014 12:55

Por falar nisso, também tem isso:
wSave() salva a tela e wRestore() retorna.
Com a diferença que podem ser várias, que vão entrando no array.
Também bom pra evitar ficar criando variáveis temporárias pra salvar tela.

Se não me engano, isso tem na ctools, que seria a hbct.
No meu uso completo, wSave() tem a opção de salvar apenas um pedaço da tela, pra economizar memória.
Com Harbour memória não é problema, e a não ser que salve muitas telas, do jeito que está é suficiente.

Mas pra quem precisar, já sabe que poderia criar essa opção.
Seria necessário salvar junto também as posições/tamanho, pra restaurar no lugar certo.

Nota:
O tudo-em-um é um conjunto de exemplos. Não sei se é o melhor jeito de se fazer, mas sei que são exemplos interessantes e que uso no dia a dia.
Até peguei ele como base para um projeto de conversão que comecei.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9259
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 535 vezes

Exemplos tudo-em-um

Mensagempor marcos.gurupi » 19 Fev 2014 12:40

Caso Jose, primeiramente parabens pela iniciativa. Gostaria de saber se nestes exemplos vc tem algo relacionado a DOWNLOAD de XML NFe. Obrigado!
Marcos Roberto
NetService Software
marcos.gurupi
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 946
Data de registro: 06 Jul 2004 11:53
Cidade/Estado: Gurupi-TO
Curtiu: 0 vez
Mens.Curtidas: 6 vezes

Próximo



Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro