Clipper On Line • Ver Tópico - LIB JoséQuintas

LIB JoséQuintas

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

Moderador: Moderadores

 

LIB JoséQuintas

Mensagempor JoséQuintas » 02 Jul 2017 16:23

https://github.com/JoseQuintas/LibJoseQuintas

Pode ser download direto do endereço, mas preferencialmente via linha de comando, pra que tudo venha em formato Windows. (necessário GIT.EXE)

cd \harbour\addons
git clone https://github.com/JoseQuintas/LibJoseQuintas josequintas


Atualizações posteriores, só digitar git pull.

A partir daí, já fica integrado ao hbmk2.

Por exemplo:
hbmk2: Hint: Add input file 'josequintas.hbc' for missing Harbour function(s):
XmlToDoc()


hbmk2 -find xmltodoc
josequintas.hbc (installed):
XmlToDoc()


Não esquecer de gerar a lib:
cd \harbour\addons\josequintas
hbmk2 josequintas


A LIB tem os fontes direto do meu aplicativo, então vai ser normal faltarem funções, que podem ser facilmente substituídas.
Mas vou adicionar mais funções de minha LIB ao projeto.

No momento faltam:
hbmk2: Hint: Add input file 'hbct.hbc' for missing Harbour function(s):
SaveSetKey(), Sin(), Cos(), FToC()
hbmk2: Hint: Correct possibly mistyped function name(s):
CLS() -> Cos()
hbmk2: Error: Referenced, missing, but unrecognized Harbour function(s):
MSGWARNING(), NOMEMES(), SETCOLORMENSAGEM(), MENSAGEM(), PICVAL(),
SETCOLORFOCUS(), WSAVE(), WRESTORE(), APPGUIHIDE(), APPGUISHOW(),
SETCOLORALERTA(), BUILDBLOCKHB_KEYPUT(), RESTORESETKEY(), SETCOLORBOX(),
SETCOLORTITULOBOX(), SAYSCROLL(), GRAVAOCORRENCIA(), CLS(), MACROTYPE(),
RUNCMD(), MSGYESNO(), MYTEMPFILE(), MSGEXCLAMATION()


SetColor* - Funções que retornam a cor a ser usada SetColorMensagem(), SetColorFocus(), SetColorAlerta(), SetColorBox(), SetColorTituloBox()
Msg* - Funções pra mensagem MsgWarning(), MsgYesNo(), MsgExclamation(), Mensagem()

Só vai dar falta das funções adicionais se usar a rotina que as usa.
Relativamente normal: se vai mostrar uma mensagem na tela, precisa ser de acordo com a tela/LIB do aplicativo.

Ainda em fase de padronização/montagem.
Estão em pleno uso no meu aplicativo, apenas vão receber as funções faltantes, ou alguma padronização pra facilitar o uso em outros aplicativos.

Vai incluir toda parte da SefazClass, PDFClass, e tudo mais.

Lembrando que uso Harbour 3.4 em Windows, onde GTWVG faz parte do Harbour, e certas funções são mais compatíveis com fonte Harbour.
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: 13529
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 839 vezes

LIB JoséQuintas

Mensagempor JoséQuintas » 02 Jul 2017 16:46

Só uma visão inicial:

Sped:

CapicomAssinaXml() CapicomCertificado() CapicomEscolheCertificado() ChkSignature()
DateTimeXml() DateXml() DocSpedClass() hbNfeDaCte() hbNfeDaEvento() hbNfeDaGeral()
hbNfeDaMdfe() hbNfeDaNfce() hbNfeDaNfe() HorarioVeraoInicio() HorarioVeraoTermino()
DomingoDePascoa() FakeSignature() NfeCadastroClass() NfeCofinsClass() NfeDuplicataClass()
NfeEnderecoEntregaClass() NfeIcmsClass() NfeIcmsStClass() NfeIiClass() NfeIpiClass()
NfeIssClass() NfePisClass() NfeProdutoClass() NfeTotaisClass() NfeTransporteClass()
NfeVolumesClass() PicNfe() SefazClass() TercaDeCarnaval()

Tabelas Brasil:

ze_TabCest() ze_TabCfop() ze_TabCidade() ze_TabCnae() ze_TabIcmCst() ze_TabIpiCst()
ze_TabModFis() ze_TabNcm() ze_TabPais() ze_TabPisCst() ze_TabPisEnq() ze_TabProAnp()
ze_TabUf() ze_TabUnidade()

Brasil:

CalculaDigito() Extenso() ExtensoClass() ExtensoDolar() FormatCnpj() FormatNumber()
ValidCnhAntiga() ValidCnhAtual() ValidCnhImpresso() ValidCnpjCpf() ValidGtin() ValidIE()
ValidRenavam()

GTWVG:

tstBitmap() tstButton() tstCheckbox() tstCombobox() tstCommandLink() tstControl()
tstEdit() tstEditMultiline() tstFrame() tstGroupbox() tstIcon() tstLineHorizontal()
tstLineVertical() tstListbox() tstListview() tstMonthCalendar() tstPushbutton()
tstRadiobutton() tstRectangle() tstScrollbar() tstScrolltext() tstStatusbar()
tstText() tstTrackbar() tstUpdown() WriteLogWndproc()

Util

Calculadora() Calendario() LabelClass() RDbase() RMChartClass()

XML

MultipleNodeToArray() NumberXml() StringToXml() TrimXml() XmlDate() XmlElement()
XmlNode() XmlTag() XmlToDoc() XmlToHash() XmlToString() XmlTransform()

Geral

GrafProc() GrafTempo() RecAppend() RecDelete() RecLock() RecUnlock() SoNumeros()
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: 13529
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 839 vezes

LIB JoséQuintas

Mensagempor JoséQuintas » 02 Jul 2017 17:19

É só uma apresentação, alguns nomes vão ser alterados.
Por exemplo, eu usava PicCnpj(), e PicVal(), alterei pra FormatCnpj() e FormatVal()
PicNfe() está duvidoso.

Tinha chamado de Pic* porque era relacionado com PICTURE, mas isso confunde se retorna uma Picture ou o campo formatado.

PicVal() vou pensar, pode ser interessante já formatar de uma vez...

@ 5, 5 SAY nNumero PICTURE PicVal( 10, 2 )
@ 5, 5 GET nNumero PICTURE PicVal( 10, 2 )
@ 5, 5 SAY FormatVal( nNumero, 10, 2 )


Por outro lado, se a fórmula de cálculo for grande, ou pra GET, em separado fica mais interessante.

PicNfe() é uma formatação que pensei como forma de facilitar memorizar a chave de acesso.
UF, mês/ano, CNPJ, modelo de documento, série, número, tipo de emissão, randômico, e dígito

FUNCTION PicNfe( cChave )

   RETURN Transform( cChave, "@R 99-99/99-99.999.999/9999-99.99.999.999999999.9.99999999.9" )


Mas se olhar direito, tá mais pra Format() do que pra Picture()
Talvez melhor as duas, uma SAY e outra pra GET, que só precisa picture.
Ou um parâmetro pra só retornar Picture.... pra não encher de funções.
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: 13529
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 839 vezes

LIB JoséQuintas

Mensagempor JoséQuintas » 02 Jul 2017 17:47

Uma boa redução:

DocSpedClass() NfeCadastroClass() NfeCofinsClass() NfeDuplicataClass()
NfeEnderecoEntregaClass() NfeIcmsClass() NfeIcmsStClass() NfeIiClass() NfeIpiClass()
NfeIssClass() NfePisClass() NfeProdutoClass() NfeTotaisClass() NfeTransporteClass()
NfeVolumesClass() XmlToDoc()


virou

XmlToDoc()


Pra que as classes pra uso externo, se só usa dentro de XmlToDoc()....
Menos nomes pra atrapalhar o uso.

Pois é.
Melhorando o HBX, que é a saída do HBMK2 também estou melhorando os fontes.

É mais um recurso interessante do Harbour.... ajudar a tornar as LIBs mais limpas !
Ele ajuda... vai do programador querer usar a informação...
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: 13529
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 839 vezes

LIB JoséQuintas

Mensagempor JoséQuintas » 02 Jul 2017 18:31

Ainda a avaliar, não estão na classe:

ze_adoclass.prg
ze_Application.prg
ZE_APRES.prg
ze_barchart.prg
ze_cest.prg
ze_dbf.prg
ze_excel1.prg
ze_excel2.prg
ze_forca.prg
ze_frmcadclass.prg
ze_FrmMainClass.prg
ze_ftp.prg
ze_func.prg
ze_funcapp.prg
ze_help.prg
ze_index.prg
ze_logerr.prg
ze_mensagem.prg
ze_mt.prg
ze_pdfclass.prg
ze_preview.prg
ze_prompt.prg
ze_prot.prg
ze_resource.prg
ze_sendmailclass.prg
ze_spedcadastroclass.prg
ze_spedxmleventomdfe.prg
ze_spedxmllist.prg
ze_spedxmlmdfe.prg
ze_spedxmlnfe.prg
ze_sqlbackup.prg
ze_sqlfromdbf.prg
ze_testeqi.prg
ze_usrmsg.prg
ze_webservice.prg
ze_winapi.prg
ze_window.prg
ze_wmenu.prg


ze_geral.prg
ZE_IE.prg
ZZ_MRBOLETO.PRG
zz_nfebol.prg


getsys.prg
errorsys.prg
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: 13529
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 839 vezes

LIB JoséQuintas

Mensagempor JoséQuintas » 03 Jul 2017 16:16

Sobre o nome da LIB:

Precisava de um nome de LIB que não existe...
E considerando que todos os fontes estão saindo do meu aplicativo...
me pareceu uma boa opção.

E agora é definitivo:
O que está entrando pra LIB, estou apagando do meu aplicativo.
Das outras vezes não foi assim.

E é por isso que pode acusar falta de funções....

Pegando PDFClass como exemplo:

Ao deixar a minha de uso disponível, que aciona rotina de preview, deu falta da rotina de preview.
Não tinha isso antes, se não tiver agora não mudou nada, seria só criar uma função pra preview vazia pra não dar erro.

Adicionei minha rotina de preview..... agora dá falta da rotina de envio de email, porque permito enviar email a partir do preview....
Mesma coisa: cria rotina de enviar email vazia pra não dar erro, ou cria rotina pra envio de email.

É por aí.... ou aguardar....

No momento minha preocupação maior é que os meus aplicativos continuem funcionando, e conforme estou retirando estou fazendo alguns ajustes/mudanças pra continuar tudo compatível, por isso completar funções na LIB está em segundo plano.

No momento:
- 61 fontes na LIB
- 24 fontes ze_* no aplicativo principal, candidatos a irem pra LIB, além de outros
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: 13529
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 839 vezes

LIB JoséQuintas

Mensagempor JoséQuintas » 10 Jul 2017 13:25

Por enquanto mais desorganizando do que organizando a LIB.

Aproveitei pra eliminar do aplicativo cotações, ordens de serviço e demonstrativos financeiros, fora de uso há alguns anos.
Esse demonstrativo financeiro era um controle estilo cartão de crédito.

Ainda pensando se aproveito e elimino todo controle de código de barras.
Mesmo fora de uso, cheguei a converter pra MySQL, mas continua fora de uso.
Já foi muito usado no passado.
Quando precisar, melhor fazer tudo novo.

Tirando vários módulos, esses de cotações, ordens de serviço/assistência técnica e demonstrativos financeiros, o aplicativo reduziu só 100kb.
Por isso deixo todos os aplicativos em um único EXE, parece não ter vantagem separar.
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: 13529
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 839 vezes

LIB JoséQuintas

Mensagempor JoséQuintas » 11 Jul 2017 11:12

Algumas rotinas da LIB podem ser usadas mas não precisam ser usadas, porque são direcionadas ao meu aplicativo.

É chato dizer isso, mas tem programador que não pensa, então PENSEM.

Exemplo: porque uma rotina de reindexação na LIB?
Simples: e porque não? Se todo aplicativo DBF precisa disso, faz uma vez só, e vai melhorando a cada dia. Não precisa inventar uma pra cada aplicativo, precisa ter uma que funcione.
Essa funciona pra mim, cada um que verifique se serve pra si, ou crie sua própria, porque depende da RDD, dos nomes dos arquivos, etc.
Pelo menos pensem nisso: pra que inventar rotinas de indexação em cada aplicativo, se podem fazer uma só padrão, e apenas em cada aplicativo colocar nomes de arquivo, índices, etc.
Ok essa depende de uma lista de arquivos: lógico cada aplicativo tem sua própria lista, não adianta eu enviar a minha lista...

Rotina pra detectar versão nova de EXE, reindexar, salvar cores, salvar fonte (letra), uso em rede, etc.
Mesma coisa: pode não servir pra usar, mas pode servir pra pensar - cada lib gráfica e cada aplicativo tem seu prório esquema de mensagens.

Até pensei em separar em console, wvg, etc.... mas complica demais.
Melhor o programador pensar um pouco antes de usar, talvez montar seu fork com funções diferentes, ou mesmo lib particular.
Mas a idéia geral acho interessante, é o que uso.
Se der pra usar direto, melhor ainda, não tem trabalho.

Outro exemplo: cores. Isso é direto do aplicativo, então se eu alterar as cores no meu aplicativo, vou ter que alterar as funções SetColor* ou gtSetupPallete da LIB.

No final, o exemplo de uso vai acabar sendo uma versão reduzida do meu aplicativo, com alguns módulos REAIS.
Por enquanto 32 módulos do aplicativo já estão na LIB, mas nada extraordinário, só cadastros simples de tabelas auxiliares.
Ainda não funcionais na LIB, por causa de dependência: Lógico, se depende até de DBF ou MySQL, vai depender do arquivo ou da base MySQL, ou até de ícone.

É a primeira vez que estou tentando separar as rotinas do aplicativo, ainda tentando organizar a LIB e o aplicativo, fazendo um pouco de cada vez.
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: 13529
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 839 vezes

LIB JoséQuintas

Mensagempor JoséQuintas » 17 Jul 2017 19:27

Temporariamente removida, porque ao mesmo tempo que está crescendo demais, está ficando inutilizável.
Vai precisar de uma versão reduzida do meu aplicativo pra tudo funcionar.
Por enquanto 30% dos fonts do aplicativo estão na LIB.
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: 13529
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 839 vezes

LIB JoséQuintas

Mensagempor JoséQuintas » 02 Ago 2017 06:34

De volta
Vai uma parte do aplicativo junto
Algumas rotinas

- Cadastro de bancos
- Cadastro de Centros de Custo
- Cadastro de Grupos de Cliente
- Cadastro de configuração de EDI
- Cadastro de filiais
- Cadastro de operações do financeiro
- Cadastro de portadores do financeiro
- Cadastro de tipos de licença - objetos
- Cadastro de tipos de licença
- Cadastro de tipo de mídia
- Cadastro de tipos de preço
- Cadastro de departamentos
- Cadastro de grupos
= Cadastro de localização
- Cadastro de CFOP
- Cadastro de CNAE
- Cadastro de códigos de carta de correção
- Cadastro de decretos
- Cadastro do IBPT
- Cadastro de ICM CST
- Cadastro de IPI CST
- Cadastro de IPI Enquadramento
- Cadastro de modelos fiscais
- Cadastro de origem de mercadoria
- Cadastro de PIS CST
- Cadastro de PIS Enquadramento
- Cadastro de unidades de produto
- Cadastro de qualificação de assinantes
- Cadastro de referência de contas (Sped Contábil)
- Cadastro de tributação de cadastro
- Cadastro de tributação de empresa
- Cadastro de tributação de produtos
- Cadastro de tributação de UFs
- Cadastro de UFs
- Configuração de cor
- Configuração de número
- Outras configurações
- Configuração do Windows
- Testes diversos
- Dbase like
- Rotina de abertura de arquivos
- Classe ADO
- Classe pra cadastros
- Classe pra parte gráfica
- Classe pra cadastros auxiliares
- Classe pra cadastros auxiliares numéricos
- Calculadora
- Calendário
- RM Chart
- Rotina de pesquisa
- Rotinas Excel
- Rotina de browse
- Rotina de filtro
- Gráfico com estimativa de tempo
- help on line
- Imprime help on-line
- Rotina de indexação
- Rotina de atualização de estruturas
- Rotina de etiquetas
- Rotina d emensagens
- Rotina de PDF
- Rotina pra "falar"
- Rotina de preview de impressão
- Rotina de email
- Rotina de funções pra rede
- Rotina de salvar/restaurar tela
- Rotina de backup MySQL
- Rotina pra converter pra MySQL
- Tabelas UF, Cidade, CFOP, CNAE, IPI Cst, ICM CST, PIS CST, PIS Enquadramento, etc
- Rotinas pra GTWVG
- Rotina de atualização automática
- Rotina pra consulta de CEP
- Conversão DBF/MDB
- Messenger em Harbour
- Etc

Por enquanto só.
A grande maioria em uso no meu aplicativo, mesmo alguns de teste.

Caso seja compilado como EXE ao invés de LIB, vai dar falta de todas as demais rotinas do meu aplicativo., já que até o menu faz parte desses fontes.
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: 13529
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 839 vezes

LIB JoséQuintas

Mensagempor JoséQuintas » 02 Ago 2017 09:59

Adicionei mais módulos.
Também toda parte de criação/atualização de arquivos DBF e MySQL.

Tem fontes de pouco uso, faltando atualização pro meu padrão atual, testes.

Tem alguns que me fizeram pensar:
Será que precisava mesmo existir uma listagem de cidades?
Será que digitar percentuais de imposto, deveria ser chamado IBPT?
E outras coisas mais.

Talvez libere mais módulos do aplicativo, ainda tem mais 213 na pasta.

Relatórios Fiscais e relatórios contábeis, nem sei se alguém ainda usa isso....
Estes não estão na LIB, mas vou pensar.
É tudo coisa tão comum...
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: 13529
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 839 vezes

LIB JoséQuintas

Mensagempor JoséQuintas » 02 Ago 2017 10:06

Esqueci de dizer....
Como a parte de atualização do meu aplicativo está na LIB, tem mudanças aí que ainda nem estão instaladas nos clientes, como nomes de módulos renomeados.
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: 13529
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 839 vezes

LIB JoséQuintas

Mensagempor JoséQuintas » 02 Ago 2017 10:56

Tem horas que não sei dizer se não estou aprendendo coisas novas, ou se meu estilo é bom mesmo... rs

Vamos lá, usando fontes que já existem, criar um módulo novo.

Um módulo simples: digitar a sigla de uma UF e mostrar a descrição.
Aproveitei um nome de variável já definido pra economizar mudança no fonte RPESQ.PRG, responsável pelas pesquisas por F9.


#include "inkey.ch"

PROCEDURE ConsultaUmaUF

   LOCAL mcdUF := Space(2), GetList := {}

   IF ! AbreArquivos( "JPUF" )
      RETURN
   ENDIF
   DO WHILE .T.
      Mensagem( "Digite UF, F9 pesquisa, ESC sai" )
      @ 5, 0 SAY "UF:" GET mcdUF PICTURE "@!" VALID JPUFClass():Valida( mcdUF )
      READ
      Mensagem()
      IF LastKey() == K_ESC
         EXIT
      ENDIF
      MsgExclamation( jpuf->ufDescri )
   ENDDO
   CLOSE DATABASES

   RETURN


Alteração adicional: acrescentar a opção em RMENU.PRG

      MenuOption( "Consulta uma UF",           "CONSULTAUMAUF" }


Pronto.
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: 13529
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 839 vezes

LIB JoséQuintas

Mensagempor JoséQuintas » 02 Ago 2017 11:24

O fonte em ação:

A opção que foi acrescentada no menu
novo1.png


O próprio menu deixa a tela pronta para o fonte
novo2.png


A pesquisa por F9, que já existe pra variável mcdUF
novo3.png


A consulta
novo4.png


A validação, que já existe no cadastro de UF
novo5.png


E finalmente a configuração de acessos de usuário/grupo
novo6.png


Só aquele fonte, e só aquela alteração no menu, e nada mais.

AbreArquivos() já se vira pra abrir DBF, seja local ou NETIO, inclusive indexar se for necessário.
Ah sim, ia esquecendo....

E multithread, podendo abrir em várias janelas.
novo7.png


É isso que eu chamo de fonte simples.
Não precisa complicar o fonte do dia a dia, é melhor usar a complicação pra rotinas que realmente merecem complicação... rs

Tem horas que fico na dúvida se esse esquema realmente é bom, ou se sou eu que estou acostumado a trabalhar sempre do mesmo jeito.
Mas acho que tudo indica que o esquema é bom... pelo menos até eu conhecer um melhor.
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: 13529
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 839 vezes

LIB JoséQuintas

Mensagempor JoséQuintas » 02 Ago 2017 11:37

Faltou dizer:
Como não tem liberação nenhuma pra ninguém, só aparece na minha senha, e em nenhum cliente.

Agora vamos lá aos detalhes:

O conjunto dessas alterações:

https://github.com/JoseQuintas/JoseQuintas/commit/b3850317c7d2d7cc573ca382b1c3c113f1ba601c

o menu fica aqui:
https://github.com/JoseQuintas/JoseQuintas/blob/master/source/rmenu.prg

A rotina de chamada que já monta a tela para o módulo em multithread está aqui.
Até esqueci, mas é registrado um log de uso, caso a opção seja usada por um tempo superior a n minutos.

https://github.com/JoseQuintas/JoseQuintas/blob/master/source/ze_mt.prg

A rotina que já desvia pra pesquisa conforme a variável está aqui (fiz uma vez pra UF, não precisa outra)

https://github.com/JoseQuintas/JoseQuintas/blob/master/source/rpesq.prg

E o cadastro de UFs, que já contém validação de UF está aqui (qual o melhor lugar pra conter a rotina de validar UF senão o cadastro de UFs)

https://github.com/JoseQuintas/JoseQuintas/blob/master/source/pleisuf.prg

E apesar de não aparecer em cliente nenhum, depois do teste removi tudo.

https://github.com/JoseQuintas/JoseQuintas/commit/44e43aefd7b72733d9e17223fa0550677ebc5676

É por isso que o aplicativo acaba ficando com algumas rotinas de teste, porque só eu vejo.... rs
Melhor do que ficar espalhando fontes pela máquina.

Mesmo assim: (em MSVC seria menor)
02/08/2017  11:10         2.332.464 JPA.exe
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: 13529
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 839 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 2 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
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