DLGAUTO Dialogs automáticas (não geração de fontes)

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

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

fivewin.png
Label com borda nos textox pesquisados.

Na parte visual só falta o browse, e o calendário no menu.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

browfive.png
Aleluia.
Funcionou.
Não funciona direito, mas funcionou.
Tá doidão quanto às coordenadas.
E na opção de mostrar um ou mais na tab... aí ferrou.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

five1.png
five2.png
Tinha colocado parent errado, era xTabPage e coloquei xDlg
Agora todos aparecendo.
Acima, cada aba da tab.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

edit.png
Tinha esquecido de um campo texto gigante ou campo memo.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

Até agora:

1) Dialog
2) Menu
3) Label
4) Textbox
5) Browse
6) Checkbox
7) Combobox
8) DatePicker
9) Tab / TabPage
10) Month Calendar
11) Textbox com Button
12) Statusbar
13) Textbox multilinhas

Por enquanto foram esses que encontrei uma forma de fazer uso.
Continua gtwvg não operacional, e fivewin precisando ajustes.
Os demais, seja como for, funcionando.
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/
ivanil
Usuário Nível 3
Usuário Nível 3
Mensagens: 166
Registrado em: 11 Set 2004 15:13
Localização: Florianópolis/SC

Gerador/criação de telas/executor

Mensagem por ivanil »

No meu caso, no fonte onde crio os controles genéricos, eu só redefino as translates logo depois dos includes, como é tudo centralizado é tranquilo administrar, alias, se faz uma única vez.

Código: Selecionar todos

// Ajuste para corrigir o problema de bloco dentro do bloco...
    #xcommand ONCHANGE <onchange>                  =>  _HMG_ActiveControlOnChange        := <onchange>
    #xcommand ONSELECT <onselect>                  =>  _HMG_ActiveControlOnSelect        := <onselect>
    #xcommand ONQUERYDATA <onquerydata>            =>  _HMG_ActiveControlOnQueryData     := <onquerydata>
    #xcommand ONGOTFOCUS <ongotfocus>              =>  _HMG_ActiveControlOnGotFocus      := <ongotfocus>
    #xcommand ONLOSTFOCUS <onlostfocus>            =>  _HMG_ActiveControlOnLostFocus     := <onlostfocus>
    #xcommand ACTION <action>                      =>  _HMG_ActiveControlAction          := <action>
    #xcommand ACTION2 <action>                     =>  _HMG_ActiveControlOnHeadClick     := <action>
    #xcommand ONDISPLAYCHANGE <displaychange>      =>  _HMG_ActiveControlDisplayChange   := <displaychange>
    #xcommand ONENTER <enter>                      =>  _HMG_ActiveControlOnEnter         := <enter>
    #xcommand ONLISTDISPLAY <listdisplay>          =>  _HMG_ActiveControlOnListDisplay   := <listdisplay>
    #xcommand ONLISTCLOSE <listclose>              =>  _HMG_ActiveControlOnListClose     := <listclose>
    #xcommand ONCLOSEUP <listclose>                =>  _HMG_ActiveControlOnListClose     := <listclose>
    #xcommand ONDBLCLICK <dblclick>                =>  _HMG_ActiveControlOnDblClick      := <dblclick>
    #xcommand ONSCROLL  <vscroll>                  =>  _HMG_ActiveControlAction          := <vscroll>
    #xcommand ONCLOSEUP <listclose>                =>  _HMG_ActiveControlOnListClose     := <listclose>
    #xcommand ONVSCROLL    <vscroll>               =>  _HMG_ActiveControlAction          := <vscroll>
    #xcommand ONMOUSEHOVER <ongotfocus>            =>  _HMG_ActiveControlOnGotFocus      := <ongotfocus>
    #xcommand ONMOUSELEAVE <onlostfocus>           =>  _HMG_ActiveControlOnLostFocus     := <onlostfocus>
    #xcommand ONINIT <onInit>                      =>  _HMG_ActiveControlShowAll         := <onInit>
    #xcommand ONCANCEL <OnCancel>                  =>  _HMG_ActiveControlDefault         := <OnCancel>
    #xcommand ONLINK   <link>                      =>  _HMG_ActiveControlFile            := <link>    
    #xcommand ONRCLICK  <action>                   =>  _HMG_ActiveControlWrap            := <action>    
Desta forma podemos lidar melhor com as chamadas por funções passando os blocos como parâmetro;
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

dlgauto.png
Não é controle a mais.
Apenas adicionei pequenos buttons quando for um browse editável.

Devagarzinho, alguns recursos vão aparecendo.
Não tem a ver com LIB, e sim com programador fazer uso deles.

É disso que falo: faltam idéias, seja controle novo ou controle que já esteja na lista.

Notas:
- Tudo no automático
- NÃO tem uso de macro
- LIBs originais sem alteração
- Tanto faz se a LIB é OOP ou 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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

Se olharem a imagem anterior, o "memoedit" está com tamanho maior que o "browse".

Mas os dois estão com o tamanho dialog width - 30

Isso acontece em todas as LIBs, sobre definir tamanho em pixels, e controles ficarem diferentes.
Em LIB open source a gente ainda tem a opção de mexer nos fontes, mas em LIB comercial não.

Por isso, não estranhem os tamanhos no DLGAUTO...
Eu faço certo.... mas tem que fazer errado pra dar certo kkkkk

E não é igual em todas as LIBs... em cada uma é uma coisa diferente que precisa estar errada

Ainda bem que no dlgauto é só alterar uma vez....
Como eu já disse antes, estou usando as LIBs do jeito que estão.
Se eu tiver que alterar, vai ser quando começar a usar pra valer.

Ainda não sei como fazer a versão disso em SQL.
Vai ser obrigatório chave de pesquisa, não vai dar pra fazer com qualquer tabela.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

Primeiro protótipo de teclas no browse:

https://www.youtube.com/watch?v=an0Y30Mmz8E



Coisa simples.... só continuam infinitas telas e infinitos browses.

Nem de GUI eu gosto, por isso só resta fazer tudo automático.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

hwgui.png
Não mexi em mais nada.
Fui olhar hwgui, e está funcionando também.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

hmg3.png
hmg3 deu um erro inexplicável.
À primeira vista, está tentando encontrar o MÉTODO EVAL

Encontrei pelos fontes da hmg3, mas sem entender.
eval.png
Lembro disso existir, de definir uma classe pra um tipo de variável, mas sei lá....

Já OOHG parou.
Não sai do campo com tab, e não dá pra prosseguir.

A linha do erro é a do Eval

Código: Selecionar todos

   cFocusedControl := GetProperty( ::xDlg, "FOCUSEDCONTROL" )
   nPos := hb_AScan( ::aDlgKeyDown, { | e | cFocusedControl == e[1] .AND. nKey == e[ 2 ] } )
   IF nPos != 0
      IF GetProperty( ::xDlg, cFocusedControl, "ENABLED" )
         Eval( ::aDlgKeyDown[ nPos ][ 3 ] )
      ENDIF
   ENDIF
E o possível conteúdo é este:

Código: Selecionar todos

{ || ::BrowseAction( aItem, VK_INSERT ) }
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

Faltou bloquear os campos chave, agora sim,
Nota: O vídeo contém as mensagens de debug que coloquei pra confirmar o nome dos campos chave.

https://www.youtube.com/watch?v=NtITi3MkpWU


test2.png
test2.png (10.81 KiB) Exibido 17306 vezes
Pra curiosidade, em qualquer LIB está por volta de 1MB.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

Então.... classe é pra coisas desse tipo.

criei uma configuração a mais para os campos

Código: Selecionar todos

#define CFG_SAVEONLY   29    // not load from database
E ajustei na classe pra usar isso, por exemplo aqui:

Código: Selecionar todos

         IF aItem[ CFG_ISKEY ] .OR. aItem[ CFG_SAVEONLY ]
            gui_ControlEnable( ::xDlg, aItem[ CFG_FCONTROL ], .F. )
         ELSE
E antes de chamar a sub-dialog, apenas uso isso e carrego o valor default.

Código: Selecionar todos

      FOR EACH aItem IN oFrm:aEditList
         DO CASE
         CASE aItem[ CFG_FNAME ] == aItemOld[ CFG_BRWKEYTO ]
            aItem[ CFG_SAVEONLY ] := .T.
            aItem[ CFG_VALUE ] := ( nSelect )->( FieldGet( FieldNum( aItemOld[ CFG_BRWKEYFROM ] ) ) )
         CASE aItem[ CFG_FNAME ] == aItemOld[ CFG_BRWKEYTO2 ]
            aItem[ CFG_SAVEONLY ] := .T.
            aItem[ CFG_VALUE ] := FieldGet( FieldNum( aItem[ CFG_FNAME ] ) )
          ENDCASE
      NEXT
      :Execute()
Pense bem: no seu programa, quando tem browse dos produtos do pedido, você não vai pedir pro usuário digitar o pedido em cada produto....
E do mesmo jeito, vai ter o número do pedido pra poder salvar em cada produto do pedido.
É isso que estou fazendo aí nas linhas acima, o nome vém da configuração que foi feita pro browse.
É como ensinar alguém a programar, no caso estou ensinando o dlgauto.
O dlgauto é minha inteligência artificial, treinada para um objetivo específico kkkk
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

Porque não estender isso aos códigos em geral?

Atenção à alteração no valid, saiu uma linha e entraram 3:

Código: Selecionar todos

      IF ! lFound
         IF MsgYesNo( "Code does not exists. Create new one?" )
            frm_Main( aItem[ CFG_VTABLE ], ::aAllSetup )
         ENDIF
         //::Browse( ::xDlg, @aItem[ CFG_FCONTROL ], aItem[ CFG_VTABLE ] )
         gui_SetFocus( ::xDlg, aItem[ CFG_FCONTROL ] ) // minigui need this
      ENDIF
https://www.youtube.com/watch?v=l4kZmtEAzjA



Agora abre o cadastro que está sendo pesquisado, pra incluir um novo ou fazer o que quiser.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

Vamos complicar:

hwgui

https://www.youtube.com/watch?v=HDNIiqy4ZOg



hmg extended

https://www.youtube.com/watch?v=dnjs7u-aYeI



primeiro o cadastro do financeiro.
do financeiro, código de cliente, abriu cliente
do cliente, browse de pedidos, abriu pedidos
do pedido, browse de produtos, abriu produtos

No vídeo chegou no quarto nível de cadastro, mas é ilimitado, depende de ter situação pra isso.

Funcionando em HWGUI e HMG Extended. (minigui)
em HMG3 e em OOHG funcionamento limitado, tem erros pra resolver.
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/
Responder