Página 8 de 11

Gerador/criação de telas/executor

Enviado: 20 Abr 2024 19:50
por JoséQuintas
fivewin.png
Label com borda nos textox pesquisados.

Na parte visual só falta o browse, e o calendário no menu.

Gerador/criação de telas/executor

Enviado: 21 Abr 2024 17:19
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.

Gerador/criação de telas/executor

Enviado: 21 Abr 2024 18:08
por JoséQuintas
five1.png
five2.png
Tinha colocado parent errado, era xTabPage e coloquei xDlg
Agora todos aparecendo.
Acima, cada aba da tab.

Gerador/criação de telas/executor

Enviado: 23 Abr 2024 10:08
por JoséQuintas
edit.png
Tinha esquecido de um campo texto gigante ou campo memo.

Gerador/criação de telas/executor

Enviado: 29 Abr 2024 18:49
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.

Gerador/criação de telas/executor

Enviado: 02 Mai 2024 22:11
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;

Gerador/criação de telas/executor

Enviado: 07 Mai 2024 17:05
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.

Gerador/criação de telas/executor

Enviado: 09 Mai 2024 19:44
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.

Gerador/criação de telas/executor

Enviado: 16 Mai 2024 15:38
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.

Gerador/criação de telas/executor

Enviado: 16 Mai 2024 19:46
por JoséQuintas
hwgui.png
Não mexi em mais nada.
Fui olhar hwgui, e está funcionando também.

Gerador/criação de telas/executor

Enviado: 16 Mai 2024 20:12
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 ) }

Gerador/criação de telas/executor

Enviado: 17 Mai 2024 20:12
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 17304 vezes
Pra curiosidade, em qualquer LIB está por volta de 1MB.

Gerador/criação de telas/executor

Enviado: 17 Mai 2024 20:50
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

Gerador/criação de telas/executor

Enviado: 18 Mai 2024 04:43
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.

Gerador/criação de telas/executor

Enviado: 18 Mai 2024 19:20
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.