DLGAUTO Dialogs automáticas (não geração de fontes)
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
DLGAUTO Dialogs automáticas (não geração de fontes)
Só GTWVG, HWGUI e HMG Extended.
Deu erro na segunda thread da HMG Extended, sei lá porque, é mesmo fonte, talvez sejam as alterações da minigui pra classe fazendo efeito.
Talvez interessante destacar aqui:
É o uso simultâneo, e em multithread.
Acho que nada impede de deixar todas as LIBs no EXE, e executar apenas uma.
Ou fazer isso com o dlgauto: um EXE rodando qualquer LIB, sem precisar recompilar.
Essas coisas podem ser boas, pra quem está pensando em migrar aos poucos.
Já fica sabendo dos limites.
Reforçando: LIBS COM SEUS FONTES ORIGINAIS, NÃO ALTEREI NENHUMA
Deu erro na segunda thread da HMG Extended, sei lá porque, é mesmo fonte, talvez sejam as alterações da minigui pra classe fazendo efeito.
Talvez interessante destacar aqui:
É o uso simultâneo, e em multithread.
Acho que nada impede de deixar todas as LIBs no EXE, e executar apenas uma.
Ou fazer isso com o dlgauto: um EXE rodando qualquer LIB, sem precisar recompilar.
Essas coisas podem ser boas, pra quem está pensando em migrar aos poucos.
Já fica sabendo dos limites.
Reforçando: LIBS COM SEUS FONTES ORIGINAIS, NÃO ALTEREI NENHUMA
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
DLGAUTO Dialogs automáticas (não geração de fontes)
O segredo do dlgauto ? fonte pra cada LIB ?
Uso muito isto em multithread, e a maioria das LIBs também
A variável é THREAD STATIC, visível somente nesse módulo, e pra cada thread será uma variável diferente.
Já a função GUI() é de acesso global, visível em qualquer thread.
Com isso, cada thread enxerga uma variável diferente.
E o que tem nesssa variável ?
As funções de criação e montagem de dialog de uma lib específica.
Quer trocar de lib, é só trocar o conteúdo da variável.
Se cada thread tem sua própria variável, cada thread pode trabalhar com uma lib diferente.
Não é nada do outro mundo, é coisa comum do harbour.
Um tipo de variável do harbour, usando classe que é coisa do harbour, e multithread que é coisa do harbour.
O resultado é ter dialogs à vontade, de qualquer lib, ao mesmo tempo, desde que a lib não destrua o recurso do harbour.
Se tudo ok, cada lib funciona no seu canto, na sua thread, como EXE separado.
Se as LIBs funcionam em EXEs separados, porque não em multithread ?
Pois é...
Essa parte acima eu sei, mas a outra parte referente às LIBs eu não sei, foge do meu conhecimento.
Só imagino algo feito a nível de C, com algo também STATIC.
Parece que o harbour tem isso pras GTs, e HWGUI também tem.
Uso muito isto em multithread, e a maioria das LIBs também
Código: Selecionar todos
THREAD STATIC oGUI
FUNCTION GUI()
RETURN oGUI
Já a função GUI() é de acesso global, visível em qualquer thread.
Com isso, cada thread enxerga uma variável diferente.
E o que tem nesssa variável ?
Código: Selecionar todos
oGUI := HMGEClass():New()
Quer trocar de lib, é só trocar o conteúdo da variável.
Se cada thread tem sua própria variável, cada thread pode trabalhar com uma lib diferente.
Não é nada do outro mundo, é coisa comum do harbour.
Um tipo de variável do harbour, usando classe que é coisa do harbour, e multithread que é coisa do harbour.
O resultado é ter dialogs à vontade, de qualquer lib, ao mesmo tempo, desde que a lib não destrua o recurso do harbour.
Se tudo ok, cada lib funciona no seu canto, na sua thread, como EXE separado.
Se as LIBs funcionam em EXEs separados, porque não em multithread ?
Pois é...
Essa parte acima eu sei, mas a outra parte referente às LIBs eu não sei, foge do meu conhecimento.
Só imagino algo feito a nível de C, com algo também STATIC.
Parece que o harbour tem isso pras GTs, e HWGUI também tem.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
DLGAUTO Dialogs automáticas (não geração de fontes)
Programar em GUI é um verdadeiro inferno !!!!
Não tem.
Detalhes ?undefined reference to `HB_FUN_COLOR'
Não tem.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
DLGAUTO Dialogs automáticas (não geração de fontes)
Achei essa meleca....
Juntou com outra meleca do programador, a falta de ponto e vírgula
Aqui, normal:
Mesmo assim, alterei por precaução
Aqui também normal
Aqui em fivewin, teoricamente normal
Tinha esquecido o ponto e vírgula, mas teoricamente normal.
só teoricamente....
é uma péssima compatibilidade com Clipper, e muito usada em LIBs GUI, e seguida por alguns usuários....
Isso pode ser considerado função.
Faz parte do harbour, pra compatibilidade com Clipper.
Mesmo assim, se eu tivesse colocado o ponto e vírgula, cairia na sintaxe da DIALOG, que usa COLOR de outra forma. e chegaria na compilação do harbour de forma diferente.
Pois é.... fazer o que...
Descobri olhando o PPO pra ver que fonte estava sendo compilado.
Nota: pra economia de fonte e pra ser mais seguro, melhor usar função verdadeira ao invés do #define WIN_RGB(), mas isso faz parte do harbour 3.2 e fiz igual,. senão haveria a possibilidade de mais conflitos. Se não me engano no 3.4 isso está diferente, e algumas LIBs tem função própria pra isso.
Juntou com outra meleca do programador, a falta de ponto e vírgula
Aqui, normal:
Código: Selecionar todos
#ifndef WIN_RGB
#define WIN_RGB( r, g, b ) ( r + ( g * 256 ) + ( b * 256 * 256 ) )
#endif
Código: Selecionar todos
#ifndef WIN_RGB
#define WIN_RGB( r, g, b ) r + ( g * 256 ) + ( b * 256 * 256 )
#endif
Código: Selecionar todos
#define COLOR_LIGHTGRAY WIN_RGB( 250, 250, 250 )
Código: Selecionar todos
DEFINE DIALOG xDlg FROM nRow, nCol TO nRow + nHeight, nCol + nWidth ;
PIXEL OF xParent /* FONT oFont */ TITLE cTitle + " (" + GUI():LibName() + ")" ICON "ICOWINDOW" ;
COLOR COLOR_LIGHTGRAY
só teoricamente....
é uma péssima compatibilidade com Clipper, e muito usada em LIBs GUI, e seguida por alguns usuários....
Código: Selecionar todos
COLOR (12345)
Faz parte do harbour, pra compatibilidade com Clipper.
Mesmo assim, se eu tivesse colocado o ponto e vírgula, cairia na sintaxe da DIALOG, que usa COLOR de outra forma. e chegaria na compilação do harbour de forma diferente.
Pois é.... fazer o que...
Descobri olhando o PPO pra ver que fonte estava sendo compilado.
Nota: pra economia de fonte e pra ser mais seguro, melhor usar função verdadeira ao invés do #define WIN_RGB(), mas isso faz parte do harbour 3.2 e fiz igual,. senão haveria a possibilidade de mais conflitos. Se não me engano no 3.4 isso está diferente, e algumas LIBs tem função própria pra isso.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
DLGAUTO Dialogs automáticas (não geração de fontes)
E pra quem não entendeu o teste mixado, e quiser fazer igual:
É meu aplicativo funcionando normalmente.
É meu aplicativo também com dlgauto.
É meu aplicativo também com QUALQUER LIB GUI, uma ou mais.
Por enquanto verificando max_allowed_packed dos MySQLs.... o limite pode ser 4MB e isso é pouco pra salvar o novo EXE no MySQL.
Depois disso, tá liberado à vontade, pra testar em clientes.
Tá na hora de um teste mais amplo, porque só eu testando é pouco.
Principalmente porque o redimensionamento automático da GTWVG não vai existir nas LIBs (talvez)
É meu aplicativo funcionando normalmente.
É meu aplicativo também com dlgauto.
É meu aplicativo também com QUALQUER LIB GUI, uma ou mais.
Por enquanto verificando max_allowed_packed dos MySQLs.... o limite pode ser 4MB e isso é pouco pra salvar o novo EXE no MySQL.
Depois disso, tá liberado à vontade, pra testar em clientes.
Tá na hora de um teste mais amplo, porque só eu testando é pouco.
Principalmente porque o redimensionamento automático da GTWVG não vai existir nas LIBs (talvez)
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
DLGAUTO Dialogs automáticas (não geração de fontes)
Código: Selecionar todos
WITH OBJECT cnSQL
FOR EACH cTable IN :TableList()
AAdd( aAllSetup, { cTable, {}, Nil } )
aFieldList := :FieldList( cTable )
:Execute( "SELECT * FROM " + cTable + " LIMIT 1" )
FOR EACH cField IN aFieldList
aStru := :FStru( cField )
aItem := EmptyFrmClassItem()
aItem[ CFG_CTLTYPE ] := TYPE_TEXT
aItem[ CFG_FNAME ] := aStru[ 1 ]
aItem[ CFG_FTYPE ] := aStru[ 2 ]
aItem[ CFG_FLEN ] := aStru[ 3 ]
aItem[ CFG_FDEC ] := aStru[ 4 ]
aItem[ CFG_VALUE ] := :Value( aStru[ 1 ] )
aItem[ CFG_CAPTION ] := aStru[ 1 ]
aItem[ CFG_FPICTURE ] := PictureFromValue( aItem )
AAdd( Atail( aAllSetup )[ 2 ], aItem )
NEXT
cnSQL:CloseRecordset()
NEXT
ENDWITH
Tabelas, estruturas, dialogs automáticas..
Como GUI não gosta de DBF, modificando pra ADO + MySQL.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
DLGAUTO Dialogs automáticas (não geração de fontes)
Primeiro browse ADO.
Começando por HWGUI, onde geralmente o resultado corresponde ao fonte.
Por enquanto só essa largura de coluna pra resolver.
Aí estiquei a coluna, depois do browse pronto.
Porque a coluna preenchida veio menor do que a vazia ?
Sei lá... GUI tem muitos mistérios...
Começando por HWGUI, onde geralmente o resultado corresponde ao fonte.
Por enquanto só essa largura de coluna pra resolver.
Aí estiquei a coluna, depois do browse pronto.
Porque a coluna preenchida veio menor do que a vazia ?
Sei lá... GUI tem muitos mistérios...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
DLGAUTO Dialogs automáticas (não geração de fontes)
Ao mesmo tempo que DLGAUTO ajuda a detectar problemas mais rápido, tem horas que fica complicado.
Dá pra usar a variação de libs pra ajudar, ou algo mais, mas fica complicado, conforme o problema.
Problema atual: HWGUI O CLIQUE NO BUTTON NÃO FUNCIONA, nem save e nem cancel.
Quais as referências:
TODA dialog tem isso
Em toda dialog funciona.
A função do clique é sempre a mesma, em todas as dialogs, chama o evento SAVE_CLICK() ou CANCEL_CLICK()
Toda dialog tem o get fantasma.
O que tem de diferente nessa dialog ?
Só tem um GET.
Sei lá...
Dá pra usar a variação de libs pra ajudar, ou algo mais, mas fica complicado, conforme o problema.
Problema atual: HWGUI O CLIQUE NO BUTTON NÃO FUNCIONA, nem save e nem cancel.
Quais as referências:
TODA dialog tem isso
Em toda dialog funciona.
A função do clique é sempre a mesma, em todas as dialogs, chama o evento SAVE_CLICK() ou CANCEL_CLICK()
Toda dialog tem o get fantasma.
O que tem de diferente nessa dialog ?
Só tem um GET.
Sei lá...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
DLGAUTO Dialogs automáticas (não geração de fontes)
Encontrei.
A action no lostfocus da HWGUI (não testei em outras libs)
Meus testes são bem parciais e vagarosos.
Fui testar um problema que foi mencionado na HWGUI e calhou de eu testar uma situação com isso.
A situação existe faz tempo, apenas só percebi agora, num determinado teste.
O que coloquei no dlgauto:
Teclando ENTER vai de campo em campo.
O ENTER no último campo de um tabpage move pro primeiro da outra tabpage.
O ENTER no último campo da última tabpage move pro primeiro campo da primeira tabpage.
Pra isso acontecer usei o LOSTFOCUS e o SETFOCUS.
Isso afeta clique em button e até o VALID.
No caso de uma tabela com um único campo, isso ficou em evidência.
É pra isso que serve o dlgauto, fornecer situações diferentes pra testar.
O comportamento das LIBs não é o mesmo pra todas as situações, ou, numa situação fica em evidência.
Quanto mais testes melhor... mas precisaria pessoas diferentes fazendo testes de formas diferentes.
Não se trata de testar dlgauto, e sim de testar as libs.
O dlgauto funciona, as libs é que não.
A action no lostfocus da HWGUI (não testei em outras libs)
Meus testes são bem parciais e vagarosos.
Fui testar um problema que foi mencionado na HWGUI e calhou de eu testar uma situação com isso.
A situação existe faz tempo, apenas só percebi agora, num determinado teste.
O que coloquei no dlgauto:
Teclando ENTER vai de campo em campo.
O ENTER no último campo de um tabpage move pro primeiro da outra tabpage.
O ENTER no último campo da última tabpage move pro primeiro campo da primeira tabpage.
Pra isso acontecer usei o LOSTFOCUS e o SETFOCUS.
Isso afeta clique em button e até o VALID.
No caso de uma tabela com um único campo, isso ficou em evidência.
É pra isso que serve o dlgauto, fornecer situações diferentes pra testar.
O comportamento das LIBs não é o mesmo pra todas as situações, ou, numa situação fica em evidência.
Quanto mais testes melhor... mas precisaria pessoas diferentes fazendo testes de formas diferentes.
Não se trata de testar dlgauto, e sim de testar as libs.
O dlgauto funciona, as libs é que não.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
DLGAUTO Dialogs automáticas (não geração de fontes)
Lado bom e lado ruim:
Se só tem 1 tabpage, não tem porque colocar navegação entre tabs, o if faz isso.
O lado ruim é que essa falha de lostfocus vai ficar mais encondida, somente em determinados campos, enquanto que sem isso fica totalmente visível em tabela com campo único.
Código: Selecionar todos
IF ::lWithTab
GUI():TabPageEnd( ::xDlg, xTab )
IF Len( aPageList ) > 1
GUI():TabNavigate( ::xDlg, xTab, aPageList )
ENDIF
GUI():TabEnd( ::xDlg, xTab, nPageCount )
ENDIF
O lado ruim é que essa falha de lostfocus vai ficar mais encondida, somente em determinados campos, enquanto que sem isso fica totalmente visível em tabela com campo único.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
DLGAUTO Dialogs automáticas (não geração de fontes)
dlgauto compilado com HMGE 25.02
Parece que funciona.
Abri cadastro de clientes
Cliquei em editar
Fui no browse de pedidos (tickets)
Cliquei no pedido, abriu pedido
Fui no browse de produtos do pedido
Cliquei no produto, abriu produto
Parece que funciona.
Abri cadastro de clientes
Cliquei em editar
Fui no browse de pedidos (tickets)
Cliquei no pedido, abriu pedido
Fui no browse de produtos do pedido
Cliquei no produto, abriu produto
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
DLGAUTO Dialogs automáticas (não geração de fontes)
Não lembro mais se funcionava, mas com HWGUI não aprofundou nível.
click no browse fecha dialog.
Revisar quando der na telha.
click no browse fecha dialog.
Revisar quando der na telha.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
DLGAUTO Dialogs automáticas (não geração de fontes)
fivewin ok.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
DLGAUTO Dialogs automáticas (não geração de fontes)
Novo teste de mistura.
Sei lá porque, não deu o resultado que eu esperava, mas depois tento ver porque.
É coisa simples......sei lá....
Tem um fonte de cada lib.
isso não mistura nada.
Vai compilar um fonte, com uma lib gui, e gerar um arquivo de lib
Vai fazer isso 4 vezes, pra 4 libs.
Não dá pra compilar junto, num mesmo projeto, porque as libs minigui tem CH com mesmo nome, se compilar junto dá muito erro.
Ok, nada demais, gerei 4 libs.
por exemplo, um fonte hwgui, compilado com hwgui, que gerou a lib_hwgui.a, que contém o fonte compilado.
qualquer um que use hwgui faz isso.
Não fiquei a fim de criar 4 hbps pra isso, nem de ficar digitando, então foi por bat.
Criei um módulo principal, GTWVG lógico.
Ok ? o módulo principal chama DLGAUTO.
Mas conforme a opção escolhida, cria uma classe diferente.
O módulo principal força GTWVG como default.
Nada demais também.
Aí vém o projeto master, esse talvez complique um pouco, talvez não.
ele compila normalmente o test.prg, e alguns fontes do dlgauto.
indica os arquivos de lib que foram gerados.
indica também as libs.
um projeto normal, com fontes e libs, o diferente é só misturar libs.
habilito/desabilito dependendo se funciona ou não.
Uia.
Desabilitei o automático, de pegar DBFs da pasta, pra incluir no meu aplicativo real, por isso não aparecem os outros.
Vou precisar alterar pra este projeto.
Abriu GTWVG
Abriu DLGAUTO usando HWGUI
Abriu DLGAUTO usando OOHG
Mas deu erro em HMG3, porque tem função repetida, e HMG3 tentou usar a função da OOHG.
4 LIBs no mesmo EXE, apesar de uma não funcionar.
HMG Extended não funcionou, não sei se a versão 25.02 teve alguma mudança, ou se não era pra funcionar mesmo, por isso bloqueada.
Já testei antes HMGE e HWGUI juntas e funcionavam.
Sei lá porque, não deu o resultado que eu esperava, mas depois tento ver porque.
É coisa simples......sei lá....
Tem um fonte de cada lib.
isso não mistura nada.
Vai compilar um fonte, com uma lib gui, e gerar um arquivo de lib
Vai fazer isso 4 vezes, pra 4 libs.
Não dá pra compilar junto, num mesmo projeto, porque as libs minigui tem CH com mesmo nome, se compilar junto dá muito erro.
Código: Selecionar todos
call \tools\util\c.bat /cmd \github\dlgauto\source\lib_hwgui.prg hwgui.hbc -hblib
call \tools\util\c.bat /cmd \github\dlgauto\source\lib_hmg3.prg hmg3.hbc -hblib
call \tools\util\c.bat /cmd \github\dlgauto\source\lib_hmge.prg hmge.hbc -hblib
call \tools\util\c.bat /cmd \github\dlgauto\source\lib_oohg.prg oohg.hbc -hblib
por exemplo, um fonte hwgui, compilado com hwgui, que gerou a lib_hwgui.a, que contém o fonte compilado.
qualquer um que use hwgui faz isso.
Não fiquei a fim de criar 4 hbps pra isso, nem de ficar digitando, então foi por bat.
Criei um módulo principal, GTWVG lógico.
Código: Selecionar todos
THREAD STATIC oGUI
FUNCTION GUI()
RETURN oGUI
PROCEDURE Main
LOCAL nOpc := 1
SetMode(33,100)
CLS
DO WHILE .T.
@ 1, 0 PROMPT "(H)HWGUI"
@ 2, 0 PROMPT "(3)HMG3"
@ 3, 0 PROMPT "(E)HMGE"
@ 4, 0 PROMPT "(O)OOHG"
MENU TO nOpc
DO CASE
CASE LastKey() == 27; EXIT
CASE nOpc == 1; hb_ThreadStart( { || Test2( "DLGAUTOHWGUI" ) } )
CASE nOpc == 2; hb_ThreadStart( { || Test2( "DLGAUTOHMG3" ) } )
CASE nOpc == 3; hb_ThreadStart( { || Test2( "DLGAUTOHMGE" ) } )
CASE nOpc == 4; hb_ThreadStart( { || Test2( "DLGAUTOOOHG" ) } )
ENDCASE
ENDDO
RETURN
FUNCTION Test2( xFrmName )
hb_gtReload("WVG")
DO CASE
//CASE xFrmName == "DLGAUTOFIVEWIN" ; oGui := FIVEWINClass():New()
CASE xFrmName == "DLGAUTOHWGUI" ; oGUI := HWGUIClass():New()
//CASE xFrmName == "DLGAUTOHMGE" ; oGUI := HMGECLASS():New()
CASE xFrmName == "DLGAUTOHMG3" ; oGUI := HMG3Class():New()
CASE xFrmName == "DLGAUTOOOHG" ; oGUI := OOHGClass():New()
ENDCASE
Do( "DLGAUTO" )
//PostQuitMessage(0)
RETURN Nil
FUNCTION HB_GTSYS
REQUEST HB_GT_WVG_DEFAULT
RETURN Nil
Mas conforme a opção escolhida, cria uma classe diferente.
O módulo principal força GTWVG como default.
Nada demais também.
Aí vém o projeto master, esse talvez complique um pouco, talvez não.
Código: Selecionar todos
testmix.prg
-DDLGAUTO_AS_LIB
-Id:\github\dlgauto\source
d:\github\dlgauto\source\frm*.prg
d:\github\dlgauto\source\test.prg
d:\github\dlgauto\source\test_loadsetup.prg
d:\github\dlgauto\source\test_setup.prg
hbct.hbc
-mt
-L.
-llib_hwgui
#-llib_hmge
-llib_oohg
-llib_hmg3
gtwvg.hbc
hwgui.hbc
#hmge.hbc
oohg.hbc
hmg3.hbc
indica os arquivos de lib que foram gerados.
indica também as libs.
um projeto normal, com fontes e libs, o diferente é só misturar libs.
habilito/desabilito dependendo se funciona ou não.
Uia.
Desabilitei o automático, de pegar DBFs da pasta, pra incluir no meu aplicativo real, por isso não aparecem os outros.
Vou precisar alterar pra este projeto.
Abriu GTWVG
Abriu DLGAUTO usando HWGUI
Abriu DLGAUTO usando OOHG
Mas deu erro em HMG3, porque tem função repetida, e HMG3 tentou usar a função da OOHG.
4 LIBs no mesmo EXE, apesar de uma não funcionar.
HMG Extended não funcionou, não sei se a versão 25.02 teve alguma mudança, ou se não era pra funcionar mesmo, por isso bloqueada.
Já testei antes HMGE e HWGUI juntas e funcionavam.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
DLGAUTO Dialogs automáticas (não geração de fontes)
É até difícil dizer o que é mais interessante nisso tudo.
Se é misturar LIBs....
Ou se é o dlgauto.
Lembram? dlgauto, cria tudo automático.
Os fontes do dlgauto estão rodando, mas de forma diferente em cada thread.
É incrível né ?
Nem tanto.
Multithread é igual vários EXEs
Consigo gerar dlgauto em várias LIBs em EXEs separados
Logo... em multithread é como ter um EXE em cada LIB.
Pensando assim, é o dia a dia normal.
O problema é a lib não ter sido preparada pra isso, é como um EXE invadir o outro, ou não ter nome único pra suas funções, o que causa pegar função errada.
É uma amostra que o mundo harbour pode ser unido.
Não tem porque ficar dividindo em grupos isolados, é tudo harbour.
Se é misturar LIBs....
Ou se é o dlgauto.
Lembram? dlgauto, cria tudo automático.
Os fontes do dlgauto estão rodando, mas de forma diferente em cada thread.
É incrível né ?
Nem tanto.
Multithread é igual vários EXEs
Consigo gerar dlgauto em várias LIBs em EXEs separados
Logo... em multithread é como ter um EXE em cada LIB.
Pensando assim, é o dia a dia normal.
O problema é a lib não ter sido preparada pra isso, é como um EXE invadir o outro, ou não ter nome único pra suas funções, o que causa pegar função errada.
É uma amostra que o mundo harbour pode ser unido.
Não tem porque ficar dividindo em grupos isolados, é tudo harbour.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/