Clipper On Line • Ver Tópico - Meu modo de trabalho

Meu modo de trabalho

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

Moderador: Moderadores

 

Meu modo de trabalho

Mensagempor microvolution » 16 Jul 2017 17:58

JoséQuintas escreveu:Fiz um teste agora, mas é um controle meu que não existe na GTWVG oficial.
Ainda não coloquei recurso no controle de redimensionar imagem, mas fica igual outras LIBs.

telajpa.png


Parece piada, mas é sério: até criei controles de uso em tela Windows, pra GTWVG, mas eu mesmo não uso.

meu professor, você conseguiu resolver o problema dos textos/imagens que sobrepõem aí no menu e textos?
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1007
Data de registro: 02 Set 2011 22:17
Curtiu: 58 vezes
Mens.Curtidas: 10 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 16 Jul 2017 23:53

A saída seria usar menu Windows, e deixar a imagem fixa de fundo, igual outras LIBs fazem.
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: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 18 Set 2017 18:41

Como é um uso pessoal, colocar aqui, mas vale pra vocês e pra tudo que usam, se for Harbour.
Vale pra hmg3, hmge, oohg, hwgui, e tudo mais, seja qual for a versão do Harbour ou compilador C.
É o meu jeito, não tem a ver com o uso oficial, e como uso pra teste apenas, não sei num uso pesado.

Cada LIB está em um lugar:

- d:\cdrom\fontes\integra\sefazclass
- d:\cdrom\fontes\integra\josequintas
- d:\cvsfiles\allgui\hmg3
- d:\cvsfiles\allgui\hmge
- d:\cvsfiles\allgui\hwgui
- d:\cvsfiles\allgui\oohg

Agora vamos por partes....

1) Localização de arquivos
No caso das LIBs gráficas juntei todos HBP e HBC numa única pasta d:\cvsfiles\allgui\allgui
E no caso de HBX e LIBs, deixei a saída pra pasta d:\harbour\addons, assim o HBMK2 pega automático

2) Coloquei pro HBMK2 encontrar tudo
Criei um HBMK.HBC com isto, dentro da pasta d:\harbour\bin
É algo como um SET PATH pro HBMK2

harbour\bin\hbmk.hbc

libpaths=d:\cdrom\fontes\integra\sefazclass
libpaths=d:\cdrom\fontes\integra\josequintas
libpaths=d:\cvsfiles\allgui\allgui


3) Na sefazclass, configurei apenas a sefazclass

sefazclass.hbc

Description=any
libs=hbhpdf.hbc hbzebra.hbc hbwin.hbc hbct.hbc sefazclass
libpaths=${hb_install_prefix}\addons\lib\${hb_plat}\${hb_comp}
incpaths=include


sefazclass.hbp

source\ze_capicom.prg
source\ze_SpedAssina.prg
source\ze_spedAssinachk.prg
source\ze_SpedDaCte.prg
source\ze_SpedDaEvento.prg
source\ze_SpedDaMdfe.prg
source\ze_SpedDaNfe.prg
source\ze_SpedDaNFCe.prg
source\ze_SpedDaGeral.prg
source\ze_spedsefazclass.prg
source\ze_spedxmlclass.prg
source\ze_xmlfunc.prg
source\ze_miscfunc.prg
source\ze_xharbour.prg
source\ze_digitodoc.prg
source\ze_extenso.prg
source\ze_inscestadual.prg

-w3
-es2
-m
-n

-o${hb_install_prefix}\addons\lib\${hb_plat}\${hb_comp}\${hb_name}

sefazclass.hbc

-hblib
-hbx=${hb_install_prefix}\addons\${hb_name}


Notem o seguinte:
a única indicação direta de pasta é pra saída da lib: hbx na pasta do Harbour\addons, e lib na pasta por exemplo add-ons\lib\win\mingw
a pasta de include é relativa à pasta aonde está o HBC e/ou HBP, não precisa colocar path completo

4) josequintas
Exatamente a mesma coisa, só mudam os fontes
Mas ela depende da sefazclass.hbc, por isso consta das libs

josequintas.hbc

Description=any
libs=josequintas sefazclass.hbc
libs=sefazclass.hbc hbhpdf.hbc hbwin.hbc hbzebra.hbc gtwvg.hbc hbct.hbc hbtip.hbc hbnetio.hbc hbziparc.hbc hbmisc.hbc
libpaths=${hb_install_prefix}\addons\lib\${hb_plat}\${hb_comp}
incpaths=include
incpaths=..\..\build


josequintas.hbp

source\*.prg
source\particular\*.prg
source\renomear\*.prg
josequintas.hbc
-workdir=c:\temp
-hblib
-o${hb_install_prefix}\addons\lib\${hb_plat}\${hb_comp}\${hb_name}
-hbx=${hb_install_prefix}\addons\${hb_name}
-w3
-es2
-m
-n
-inc


5) As LIBs gráficas.....
Como todas as LIBs gráficas tem algo em comum, e antes testava misturar todas, criei um HBC com o que tem de comum nelas.

allgui.hbc

Description=allgui.hbc
incpaths=.
libpaths=${HB_INSTALL_PREFIX}\addons\lib\win\${hb_comp}
libs=msvfw32 vfw32 hbmisc.hbc hbziparc.hbc hbhpdf.hbc hbct.hbc gtwvg hbwin
gui=yes
mt=yes


Nada demais, só a pasta fixa de todas harbour\add-ons\lib\win\mingw (exemplo), e algumas libs padrão

6) HWGUI. Na verdade pra todas as demais LIBs, tudo igual, só altera a lista de fontes, e talvez um parâmetro a mais específico.

Description=hwgui.hbc
incpaths=..\hwgui\include
libs=allgui.hbc hwgui


hwgui.hbp

..\hwgui\source\winapi\*.prg
..\hwgui\source\winapi\*.c
..\hwgui\source\common\procmisc\*.prg
..\hwgui\source\common\procmisc\*.c
..\hwgui\contrib\ext_controls\*.prg
..\hwgui\contrib\ext_controls\*.c
{!msvc}..\hwgui\contrib\activex\*.prg
{!msvc}..\hwgui\contrib\activex\*.c
{!msvc}..\hwgui\source\common\xml\*.prg
{!msvc}..\hwgui\source\common\xml\*.c

-cflag=-DHWG_USE_POINTER_ITEM

-o${hb_install_prefix}\addons\lib\win\${hb_comp}\hwgui

hwgui.hbc

-hblib
-quiet
-w1
-es2

-hbx=${hb_install_prefix}\addons\${hb_name}


No HBC indicando aonde buscar os arquivos INCLUDE e LIB
No HBP a lista de fontes, e a saída pra harbour\add-ons

7) OOHG
oohg.hbc

Description=oohg.hbc
incpaths=..\oohg\include
libs=allgui.hbc oohg


../oohg/source/*.c
../oohg/source/*.prg
-hblib
oohg.hbc
-inc
-o${HB_INSTALL_PREFIX}/addons/lib/win/%{h_comp}/${hb_name}
-hbx=${HB_INSTALL_PREFIX}/addons/${hb_name}


8) HMG3

hmg3.hbc

Description=hmg3.hbc
incpaths=..\hmg3\include
libs=allgui.hbc hmg3


hmg3.hbp

..\hmg3\source\*.prg
..\hmg3\source\*.c
..\hmg3\source\bostaurus\*.prg
..\hmg3\source\bostaurus\*.c
..\hmg3\source\class\*.prg
..\hmg3\source\class\*.c
..\hmg3\source\crypt\*.prg
..\hmg3\source\crypt\*.c
..\hmg3\source\edit\*.prg
..\hmg3\source\edit\*.c
..\hmg3\source\editex\*.prg
..\hmg3\source\editex\*.c
..\hmg3\source\graph\*.prg
..\hmg3\source\graph\*.c
..\hmg3\source\hbvpdf\*.prg
..\hmg3\source\hbvpdf\*.c
..\hmg3\source\ini\*.prg
..\hmg3\source\ini\*.c
..\hmg3\source\report\*.prg
..\hmg3\source\report\*.c
..\hmg3\hfcl\source\*.prg
..\hmg3\hfcl\source\*.c

-stop{msvc}

-o${hb_install_prefix}\addons\lib\win\${hb_comp}\hmg3

-hblib

hmg3.hbc

-dflag="pthread -static -lpthread"

-quiet
-w0
-es0

-hbx=${hb_install_prefix}\addons\${hb_name}


9) HMG Extended

hmge.hbc

Description=hmge.hbc
incpaths=..\hmge\include
libs=allgui.hbc hmge


hmge.hbp

..\hmge\source\*.prg
..\hmge\source\*.c
..\hmge\source\bostaurus\bostaurus.prg
..\hmge\source\calldll\*.prg
#..\hmge\source\hbprinter\*.prg
#..\hmge\source\hbprinter\*.c
#..\hmge\source\miniprint\*.prg
#..\hmge\source\miniprint\*.c
#..\hmge\source\hbole\*.prg
#..\hmge\source\hbole\*.c
..\hmge\source\propgrid\*.prg
..\hmge\source\propgrid\*.c
..\hmge\source\propsheet\*.prg
..\hmge\source\propsheet\*.c
..\hmge\source\qhtm\*.prg
..\hmge\source\qhtm\*.c
..\hmge\source\socket\*.prg
..\hmge\source\socket\*.c
..\hmge\source\tget\*.prg
..\hmge\source\tsbrowse\*.prg
..\hmge\source\tsbrowse\*.c
..\hmge\source\winreport\*.prg
..\hmge\source\winreport\*.c

-o${hb_install_prefix}\addons\lib\win\${hb_comp}\hmge

hmge.hbc

hbhpdf.hbc
hbzebra.hbc
hbwin.hbc

-hblib
-w1
-es2

-hbx=${hb_install_prefix}\addons\${hb_name}


pronto.
Cada lib tem seu HBP, configurado de acordo com a "pasta atual"
Cada lib tem seu HBC, configurado de acordo com a "pasta atual"
A única pasta fixa é harbour\add-ons, que é obtida pela variável HB_INSTALL_PREFIX
As LIBs vão ser geradas com os nomes hmg3, hmge, hwgui, oohg, sefazclass, josequintas
A pasta da SAÍDA da lib vai depender do compilador C: pode ser add-ons\lib\win\mingw, add-ons\lib\win\msvc, add-ons\lib\win\bcc, add-ons\lib\win\mingw64, etc.

A partir daí é só usar.
Compilar normal: hbmk2 test.prg
Compilar com sefaz: hbmk2 test.prg sefazclass.hbc
Compilar com hwgui: hbmk2 test hwgui.hbc
Compilar com hmg3: hbmk2 test hmg3.hbc

NÃO FUNCIONA, NÃO SÃO COMPATÍVEIS, mas se fosse compilar com todas de uma vez:
hbmk2 test sefazclass.hbc josequintas.hbc hwgui.hbc hmg3.hbc hmge.hbc oohg.hbc gtwvg.hbc

Também poderia ser cada lib (.lib,.a) numa pasta da lib, junto com o hbx, mas aí o hbx não teria o mesmo efeito.

Achei legal o resultado.
Máquina com Harbour funcionando, com ou sem as LIBs, só vão ser usadas se indicar o HBC delas.
Tanto faz a pasta das LIBs, o HBP e HBC delas sempre vai funcionar.
Tanto faz o compilador C, um não mistura com o outro, pode usar todos ao mesmo tempo
Tanto faz o Harbour, mas depende de primeiro criar a variável HB_INSTALL_PREFIX, pra não misturar um com o outro (e paths do Harbour)

Se tiver mais de um Harbour na máquina, só configurar PATH e HB_INSTALL_PREFIX pro Harbour, e colocar o HBMK.HBC na pasta harbour\bin
Nem precisa mexer em nada das LIBs, só ir na pasta allgui e digitar HBMK2 *.HBP (aliás faltou dizer isto antes).
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: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 18 Set 2017 18:47

Faltou dizer:
Não precisa, e NEM DEVEM copiar daqui.
É bom tentar comentar com os desenvolvedores das LIBs, porque eles devem fazer os arquivos mais adequados, os meus são só para meus testes, e podem estar errados.

Mesmo assim, estão todos aqui.

https://github.com/JoseQuintas/AllGui

Os fontes das LIBs são originais, mas os HBP e HBC não vieram com as LIBs, então é só pra teste mesmo.
Pra produção é melhor usar os arquivos originais, porque são eles que vão ser usados para suporte.

Mas fica aí a dica, pra cobrar dos autores de suas LIBs.

E podem criar pra fivewin também, no mesmo estilo.

E numa IDE, bastaria a IDE ter arquivos iguais.....
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: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes

Meu modo de trabalho

Mensagempor microvolution » 31 Jan 2018 18:50

JoséQuintas escreveu:Mas fica aí a dica, pra cobrar dos autores de suas LIBs.

prezado professor, por incrível que pareça, estava num outro tópico onde eu tenho "umas muitas dúvidas" e alguém havia me dado uma pasta (eu perguntando sobre HMG) e que eu não achava... até que o MSDN disse que era referente à HMG-E.

Se o Sr. que é "ninja" está com este montão de "trecos/troços", imagina "euzinho" que estou ainda de fraldas...

Eu, disse no outro tópico, que deveria haver uma união e homogenia entre as LIBs, pois são tantas: HMG, HMGE, OOHG, HWGUI, WVW, VWG, etc... e o que a gente aprende numa - apesar de tudo ser HARBOUR, não é do mesmo jeito na outra...
deveria ser padronizado como são o ABNT e ABNT2, ou ASC e ASCII.

#ficaAdica
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1007
Data de registro: 02 Set 2011 22:17
Curtiu: 58 vezes
Mens.Curtidas: 10 vezes

Meu modo de trabalho

Mensagempor juniorcamilo » 24 Set 2019 07:35

Avatar de usuário

juniorcamilo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 309
Data de registro: 10 Nov 2006 08:12
Cidade/Estado: Pará
Curtiu: 23 vezes
Mens.Curtidas: 2 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 24 Set 2019 09:51

juniorcamilo escreveu:como pós imagem em modo console?


DrawImage(), e depois o texto por cima.
Mas a imagem some se mover tela, minimizar, etc... por isso só usei em teste.
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: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes

Meu modo de trabalho

Mensagempor juniorcamilo » 24 Set 2019 10:57

estou atrás disso!!!
viewtopic.php?f=4&t=19031#p122172

como será?
Avatar de usuário

juniorcamilo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 309
Data de registro: 10 Nov 2006 08:12
Cidade/Estado: Pará
Curtiu: 23 vezes
Mens.Curtidas: 2 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 24 Set 2019 16:37

Vixe.....

HB_FUNC_TRANSLATE( WVG_DRAWTEXT , WAPI_DRAWTEXT )


Nem precisa da GTWVG !!!
No Harbour 3.4 o Viktor transferiu a função, que é da API Windows pra hbwin.

Ta aí uma coisa interessante:
No 3.2, a função está na GTWVG, mas era pura API Windows
No 3.4, o Viktor padronizou e moveu a função pra HBWIN, que contém rotinas do Windows.

Diferença?
É API Windows... nem precisa GTWVG.
IGUAL EM QUALQUER LIB GRÁFICA.

Tão entendendo o que digo sobre padronizar LIBs?
O que era GTWVG... que era API Windows... foi para o lugar certo.
Igual todas as LIBs poderiam fazer, e ficaria muito mais padronizado !!!!
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: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 24 Set 2019 16:39

/* mappings to hbwin */
HB_FUNC_TRANSLATE( WVG_APPENDMENU , WAPI_APPENDMENU )
HB_FUNC_TRANSLATE( WVG_BRINGWINDOWTOTOP , WAPI_BRINGWINDOWTOTOP )
HB_FUNC_TRANSLATE( WVG_CALLWINDOWPROC , WAPI_CALLWINDOWPROC )
HB_FUNC_TRANSLATE( WVG_CHECKDLGBUTTON , WAPI_CHECKDLGBUTTON )
HB_FUNC_TRANSLATE( WVG_CHECKMENUITEM , WAPI_CHECKMENUITEM )
HB_FUNC_TRANSLATE( WVG_CHECKRADIOBUTTON , WAPI_CHECKRADIOBUTTON )
HB_FUNC_TRANSLATE( WVG_CLIENTTOSCREEN , WAPI_CLIENTTOSCREEN )
HB_FUNC_TRANSLATE( WVG_CREATEMENU , WAPI_CREATEMENU )
HB_FUNC_TRANSLATE( WVG_CREATEPOPUPMENU , WAPI_CREATEPOPUPMENU )
HB_FUNC_TRANSLATE( WVG_CREATEWINDOWEX , WAPI_CREATEWINDOWEX )
HB_FUNC_TRANSLATE( WVG_DEFWINDOWPROC , WAPI_DEFWINDOWPROC )
HB_FUNC_TRANSLATE( WVG_DELETEMENU , WAPI_DELETEMENU )
HB_FUNC_TRANSLATE( WVG_DESTROYMENU , WAPI_DESTROYMENU )
HB_FUNC_TRANSLATE( WVG_DESTROYWINDOW , WAPI_DESTROYWINDOW )
HB_FUNC_TRANSLATE( WVG_DRAWMENUBAR , WAPI_DRAWMENUBAR )
HB_FUNC_TRANSLATE( WVG_DRAWTEXT , WAPI_DRAWTEXT )
HB_FUNC_TRANSLATE( WVG_ENABLEMENUITEM , WAPI_ENABLEMENUITEM )
HB_FUNC_TRANSLATE( WVG_ENABLEWINDOW , WAPI_ENABLEWINDOW )
HB_FUNC_TRANSLATE( WVG_FILLRECT , WAPI_FILLRECT )
HB_FUNC_TRANSLATE( WVG_GETDESKTOPWINDOW , WAPI_GETDESKTOPWINDOW )
HB_FUNC_TRANSLATE( WVG_GETDIALOGBASEUNITS , WAPI_GETDIALOGBASEUNITS )
HB_FUNC_TRANSLATE( WVG_GETDLGITEM , WAPI_GETDLGITEM )
HB_FUNC_TRANSLATE( WVG_GETDLGITEMTEXT , WAPI_GETDLGITEMTEXT )
HB_FUNC_TRANSLATE( WVG_GETFOCUS , WAPI_GETFOCUS )
HB_FUNC_TRANSLATE( WVG_GETSTOCKOBJECT , WAPI_GETSTOCKOBJECT )
HB_FUNC_TRANSLATE( WVG_HINSTANCE , WIN_HINSTANCE )
HB_FUNC_TRANSLATE( WVG_HIWORD , WAPI_HIWORD )
HB_FUNC_TRANSLATE( WVG_INSERTMENU , WAPI_INSERTMENU )
HB_FUNC_TRANSLATE( WVG_ISDLGBUTTONCHECKED , WAPI_ISDLGBUTTONCHECKED )
HB_FUNC_TRANSLATE( WVG_ISICONIC , WAPI_ISICONIC )
HB_FUNC_TRANSLATE( WVG_ISWINDOW , WAPI_ISWINDOW )
HB_FUNC_TRANSLATE( WVG_ISZOOMED , WAPI_ISZOOMED )
HB_FUNC_TRANSLATE( WVG_LOWORD , WAPI_LOWORD )
HB_FUNC_TRANSLATE( WVG_MAKELPARAM , WAPI_MAKELPARAM )
HB_FUNC_TRANSLATE( WVG_MESSAGEBOX , WAPI_MESSAGEBOX )
HB_FUNC_TRANSLATE( WVG_MOVEWINDOW , WAPI_MOVEWINDOW )
HB_FUNC_TRANSLATE( WVG_POSTMESSAGE , WAPI_POSTMESSAGE )
HB_FUNC_TRANSLATE( WVG_SCREENTOCLIENT , WAPI_SCREENTOCLIENT )
HB_FUNC_TRANSLATE( WVG_SENDDLGITEMMESSAGE , WAPI_SENDDLGITEMMESSAGE )
HB_FUNC_TRANSLATE( WVG_SENDMESSAGE , WAPI_SENDMESSAGE )
HB_FUNC_TRANSLATE( WVG_SENDMESSAGETEXT , WAPI_SENDMESSAGE )
HB_FUNC_TRANSLATE( WVG_SETBKCOLOR , WAPI_SETBKCOLOR )
HB_FUNC_TRANSLATE( WVG_SETBKMODE , WAPI_SETBKMODE )
HB_FUNC_TRANSLATE( WVG_SETDLGITEMTEXT , WAPI_SETDLGITEMTEXT )
HB_FUNC_TRANSLATE( WVG_SETFOCUS , WAPI_SETFOCUS )
HB_FUNC_TRANSLATE( WVG_SETFOREGROUNDWINDOW , WAPI_BRINGWINDOWTOTOP )
HB_FUNC_TRANSLATE( WVG_SETPARENT , WAPI_SETPARENT )
HB_FUNC_TRANSLATE( WVG_SETTEXTCOLOR , WAPI_SETTEXTCOLOR )
HB_FUNC_TRANSLATE( WVG_SETWINDOWLONG , WAPI_SETWINDOWLONGPTR )
HB_FUNC_TRANSLATE( WVG_SETWINDOWTEXT , WAPI_SETWINDOWTEXT )
HB_FUNC_TRANSLATE( WVG_SHOWWINDOW , WAPI_SHOWWINDOW )
HB_FUNC_TRANSLATE( WVG_SLEEP , WAPI_SLEEP )
HB_FUNC_TRANSLATE( WVG_TREEVIEW_SELECTITEM , WAPI_TREEVIEW_SELECTITEM )
HB_FUNC_TRANSLATE( WVG_TREEVIEW_SETBKCOLOR , WAPI_TREEVIEW_SETBKCOLOR )
HB_FUNC_TRANSLATE( WVG_TREEVIEW_SETLINECOLOR , WAPI_TREEVIEW_SETLINECOLOR )
HB_FUNC_TRANSLATE( WVG_TREEVIEW_SETTEXTCOLOR , WAPI_TREEVIEW_SETTEXTCOLOR )
HB_FUNC_TRANSLATE( WVG_UPDATEWINDOW , WAPI_UPDATEWINDOW )
HB_FUNC_TRANSLATE( WVT__MAKEDLGTEMPLATE , __WAPI_DLGTEMPLATE_RAW_NEW )

#ifdef HB_LEGACY_LEVEL5

/* local synonyms (deprecated) */
HB_FUNC_TRANSLATE( WVT_APPENDMENU , WAPI_APPENDMENU )
HB_FUNC_TRANSLATE( WVT_CREATEMENU , WAPI_CREATEMENU )
HB_FUNC_TRANSLATE( WVT_CREATEPOPUPMENU , WAPI_CREATEPOPUPMENU )
HB_FUNC_TRANSLATE( WVT_DELETEMENU , WAPI_DELETEMENU )
HB_FUNC_TRANSLATE( WVT_DESTROYMENU , WAPI_DESTROYMENU )
HB_FUNC_TRANSLATE( WVT_ENABLEMENUITEM , WAPI_ENABLEMENUITEM )
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: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 24 Set 2019 17:13

hazael escreveu:você pode (sempre pôde) fazer isso


Em parte...
O Viktor padronizou mais, movendo e padronizando as chamadas à API Windows.
Talvez no 3.2 não existam todas essas funções, e precise mais código fonte pra fazer a mesma coisa.

Foi nessa padronização que acabei tendo o recurso do Windows de redimensionar imagem, que faz parte do Windows !!!
Acho que no 3.2 ainda não tem isso, já que não atualizaram a GTWVG com as atualizações do 3.4, e nem a hbwin.
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: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 24 Set 2019 17:15

Mas voltando à pergunta sobre letra maior na GTWVG

Provavelmente a próxima vai ser: e como uso isso?

Se é função da API Windows.... tem manual detalhado na Microsoft, não precisa manual no Harbour, e nem na 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: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 18 Out 2019 23:43

Continuando....

Em posts anteriores, de 2016, eu havia comentado de acabar com DBFs, mas parei de mexer por alguns anos.
Faltaram telas em GTWVG.
Agora usando ícones multiresolução, que ficam bons em qualquer resolução de monitor.
E o EXE... que tinha cerca de 2MB na época das postagens, agora tem 6.5MB por conta das imagens.

jpa1.png


jpa2.png
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: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 19 Out 2019 01:18

Então....
Na continuação da migração pra MySQL, comecei a mexer em outras coisas ao mesmo tempo...
Então anulei tudo, e fazer uma coisa de cada vez.

Uma coisa é o seguinte: tenho um único cadastro pra clientes/fornecedores e transportadoras.
clientes/fornecedores usa cdtipo="1", e transportadoras usa cdtipo="3".
Vou separar as transportadoras e acabar com esse cdtipo.

Primeiro passo: confirmar índices
   IndexDbf( "jpcadas", "Cadastros (Cli/Forn/Transp)" )
   IndexInd( "jpcadas1", "cdTipo + cdCodigo" )
   IndexInd( "jpcadas2", "cdTipo + cdNome + cdCodigo" )
   IndexInd( "jpcadas3", "cdTipo + cdCnpj + cdDivisao + cdCodigo" )
   IndexInd( "jpcadas4", "cdTipo + cdApelido + cdCodigo" )
   IndexInd( "telefone", "cdTipo + cdTelefone + cdCodigo" )
   IndexInd( "numlan",   "cdCodigo" )
   IndexInd( "nome",     "cdNome + cdCodigo" )
   IndexInd( "cnpj",     "cdCnpj+cdCodigo" )


Já tenho índices com e sem o cdtipo, e já faço muito uso desses índices sem cdtipo, isso vai facilitar.

Só lembrando:

usando NTX, temos lá trocentos arquivos de índice
SET INDEX TO ntx1, ntx2, ntx3, ntx4, ntx5, ntx6, ntx7, ntx8, ntx9, ntx10, ntx11

usando CDX, é um único arquivo, e os índices são internos
SET INDEX TO jpcadas

Além disso, ao invés de SET ORDER TO 1, SET ORDER TO 2, etc...., podemos usar o nome: OrdSetFocus( "numlan" )
Com isso, vou poder apagar os índices jpcadas1 a 4 tranquilamente (após retirar o uso nos fontes, lógico).
Se usasse SET ORDER por número... isso não seria possível.

Primeiro rotina de criar/atualizar estrutura do arquivo:
STATIC FUNCTION JPTRANSPCreateDbf()

   LOCAL mStruOk := { ;
      { "TPCODIGO",   "C", 6 }, ;
      { "TPNOME",     "C", 50 }, ;
      { "TPAPELIDO",  "C", 20 }, ;
      { "TPCNPJ",     "C", 18 }, ;
      { "TPENDERECO", "C", 40 }, ;
      { "TPNUMERO",   "C", 10 }, ;
      { "TPCOMPL",    "C", 20 }, ;
      { "TPBAIRRO",   "C", 20 }, ;
      { "TPCIDADE",   "C", 21 }, ;
      { "TPUF",       "C", 2 }, ;
      { "TPCEP",      "C", 9 }, ;
      { "TPTELEFONE", "C", 30 }, ;
      { "TPINSEST",   "C", 18 }, ;
      { "TPCONTATO",  "C", 30 }, ;
      { "TPTELEF2",   "C", 15 }, ;
      { "TPTELEF3",   "C", 15 }, ;
      { "TPFAX",      "C", 30 }, ;
      { "TPEMAIL",    "C", 250 }, ;
      { "TPHOMEPAGE", "C", 100 }, ;
      { "TPOBS",      "C", 100 }, ;
      { "TPSTATUS",   "C", 6 }, ;
      { "TPINFINC",   "C", 80 }, ;
      { "TPINFALT",   "C", 80 } }

   SayScroll( "JPTRANSP, verificando atualizações" )

   IF ! ValidaStru( "jptransp", mStruOk )
      MsgStop( "jptransp não disponível!" )
      QUIT
   ENDIF

   RETURN NIL


Depois rotina de reindexar:

   IndexDbf( "jptransp", "Transportadoras" )
   IndexInd( "numlan",   "tpCodigo" )
   IndexInd( "nome",     "tpNome + tpCodigo" )
   IndexInd( "cnpj",     "tpCnpj + tpCodigo" )


Pronto, na próxima atualização do sistema, arquivo será criado automaticamente.
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: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 19 Out 2019 01:47

Agora a transferência.
Já tenho a rotina de atualização automática, então é só acrescentar mais essa.

// ze_update2019.prg
FUNCTION ze_Update2019()

   IF AppVersaoDbfAnt() < 20191011; Update1011(); ENDIF
   IF AppVersaoDbfAnt() < 20191019; Update1019(); ENDIF

   RETURN NIL


E agora criar a Update1019() (19/10) fazendo a transferência de cdtipo="3" para o novo jptransp.

Na próxima vez que o cliente atualizar versão, terá um arquivo novo só com transportadoras.

Agora é alterar os fontes, para ao invés de usar jpcadas, passar a usar jptransp.

Neste ponto não posso liberar pra cliente, só quando terminar a alteração pra usar jptransp ao invés de jpcadas, senão a conversão vai ficar desatualizada.

Terminado isto, já posso liberar pra clientes.

Depois, mexer nos fontes pra eliminar de vez o campo cdtipo.

Começar eliminando o uso dos índices jpcadas1 a jpcadas4.
Primeiro eliminar as pesquisas por esses índices.
Nesta etapa, tanto faz se atualizar ou não nos clientes durante o processo.

Depois, ajustar os fontes de clientes/fornecedores pra não usarem o cdtipo, deixando a remoção definitiva por último.
Mesma coisa: vou poder atualizar nos clientes a qualquer momento.

Por último: eliminar de vez, mas....antes de eliminar o campo, preciso pegar as transportadoras, lembram? cdtipo="3"
Então, cdtipo só vai deixar de existir no arquivo depois, quando realmente não precisar mais.
Uso isto na fase intermediária:

IF AppVersaoDbfAnt() < 20191019
   AAdd( mStruOk, { "CDTIPO", "C", 1 }  )
ENDIF


Ou seja, defino até quando o campo vai existir.
Quem atualizar versão depois desta, após a transferência o campo vai ser eliminado.

Quando terminar por definitivo, altero aqui também:

FUNCTION AppVersaoDbf()

   RETURN 20191014


Esse é o controle de versão de DBF.
Ao alterar o número de versão, obrigatoriamente o aplicativo faz backup de tudo.
Só depois do backup é que o aplicativo vai alterar estruturas, e transferir transportadoras.

Isso já venho usando desde a versão de 2002, desde o Clipper, que já mostrei neste post.
Apenas coloquei no aplicativo pra ele fazer automático, o que muito antigamente eu fazia manualmente.
É criar uma rotina que atualiza, e com o tempo vai melhorando, conforme as necessidades que forem aparecendo.
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: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes

Anterior Próximo



Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: RamonXHB e 1 visitante


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
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro