Página 1 de 4

Situação atual do demoall.prg

Enviado: 29 Abr 2025 21:10
por JoséQuintas

Código: Selecionar todos

 demoall.prg            ?                        group samples
   demobrowsedbf.prg    Y       ?    ?           browse dbf
   demobrowseado.prg    N       N                ADO Browse (TNX Itamar M. Lins Jr.). For multi platform use BROWSE.
   democheckbox.prg     Y                        Checkboxes and tabs
   democombobox.prg     Y                        Combobox
   demodbfdata.prg                               Database to insert/delete/edit/navigate
   demodlgbox.prg       Y                        Demonstrates few ready to use dialog boxes (extract from tutor)
   demoget1.prg         Y                        Get system: Edit field, Checkboxes, Radio buttons, Combo box, Datepicker
   demoget2.prg         Y       Y                Get system: Colored edit fields, time display, Tooltip ballon, HD serial number
   demogetupdown.prg    Y                        Usage of @ <x> <y> GET UPDOWN ..
`  demogrid1.prg +)     N       N         Y      Grid demo (HGrid class)
   demogrid4.prg +)     N       N         Y      File Viewer
   demogrid5.prg +)     N       N         -      Grid Editor
   demohtrack.prg       Y                        Demo of HTRACK class as substitute for Windows only HTRACKBAR
   demoimage1.prg       Y                        Icons and background bitmaps
   demoimage2.prg       Y                        Icons and bitmaps using hex values
   demoini.prg          P                        Use INI file: create and read
   demolenta.prg        Y                        Multi platform alternative for tab
   demolistbox.prg      S       S         Y      Demo for listbox
   demolistboxsub.prg   Y                 Y      Multi platform substitute for listbox by BROWSE.
   demomenu.prg         Y                        Simple menu
   demomenubitmap.prg   P                        Menu with bitmaps
   demomenuxml.prg      Y                        reading/writing XML file and handling menu items while run-time (testxml.xml)
   demomonthcal.prg     N                 Y      Calendar, Datepicker, TOOLTIP
   demoshadebtn.prg     N       N                Shade buttons (for multi platform usage take OWNERBUTTON)
   demosplit.prg        Y                        Split windows
   demosplitter.prg     Y                        Tree control, Splitter, Tab
   demotab.prg          Y       ?    ?           Tab, owner button, combobox, dateselect, status panel
   demoxmltree.prg      Y                 YW     Show XML-Tree: Open "testxml.xml" for test.
   demoprogbar.prg 12)  Y                        Progress bar
   demotrackbar.prg     P                        Trackbar demo, horizontal und vertical.
   demotree.prg         Y                        Tree view control
Tudo isso funciona dentro e fora do demoall.

Se compilar cada um, dá uma média de 2MB cada
Se compilar o demoall com tudo junto, 3MB
Com compactação fica menor, lógico, menos de 1MB

Pendentes:

SAY não atualizando em TABPAGE (alterar o valor do SAY em run-time)
GRID não funcionou em TABPAGE - o mais usado é BROWSE, nem sei se GRID ainda é pra usar
Imagem de fundo, em dialog ICON não deu certo, usando HICON:AddString() de #pragma, não testei outras opções, talvez só em WINDOW mesmo
MDI é WINDOW
Tem um exemplo de WINDOW com scrollbars, testei em DIALOG mas não consegui
Tem o exemplo de ON OTHER, parece que só WINDOW também
Qualquer exemplo usando WINDOW não pode rodar dentro do demoall, mas o demoall pode compilar e executar.

Ainda não acabou, tem mais uns 40 exemplos pra olhar.....

Dicas são bem vindas.
Exemplos úteis também.
Revisada também... é muita coisa, e eu sou humano... não estou conferindo mínimos detalhes... e pode passar coisa com problema.

Situação atual do demoall.prg

Enviado: 30 Abr 2025 11:15
por JoséQuintas
Só um teste de possibilidades

Fiz no demoall igual fiz nos exemplos: lWithDialog

Código: Selecionar todos

IF lWithDialog
   INIT DIALOG ...
ENDIF
// fonte do demoall
IF lWithDialog
   ACTIVATE DIALOG oDlg
ENDIF
No exemplo de MDI criei este módulo

Código: Selecionar todos

STATIC FUNCTION DlgDemoAll()

   LOCAL oDlg

   INIT WINDOW oDlg ;
      MDICHILD ;
      TITLE "demoall.prg" ;
      STYLE WS_VISIBLE + WS_OVERLAPPEDWINDOW

   DemoAll( .F., oDlg )

   ACTIVATE WINDOW oDlg

   RETURN Nil
demoall.png
Dá pra criar a possibilidade de rodar as coisas em MDI, em WINDOW, em DIALOG, dentro de TABPAGE, etc.

Só criar o modelo vazio e executar o sample dentro.

O chato é que MDI só tem no Windows.

Isso seria pros desenvolvedores, pra testar variações de uso.

Situação atual do demoall.prg

Enviado: 30 Abr 2025 12:13
por JoséQuintas
Uia

A idéia surge, e o troço sai....
testemdi.png
Detalhe do menu
det.png
det.png (16.53 KiB) Exibido 6198 vezes
fonte

Código: Selecionar todos

/*
demomdi.prg
*/

#include "hwgui.ch"

FUNCTION DemoMDI()

   LOCAL oDlg

   INIT WINDOW oDlg ;
      MDI ;
      TITLE "Test samples" ;
      SIZE 1024, 768 ;
      BACKCOLOR 16772062

   MENU OF oDlg
      MENU TITLE "Sample"
         MENUITEM "checkbox.prg" ACTION DlgSample()
      ENDMENU
      MENU TITLE "Option"
         MENUITEM "Window" ID 1001 ;
            ACTION hwg_CheckMenuItem( , 1001, ! hwg_IsCheckedMenuItem( , 1001 ) )
         MENUITEM "Tabpage" ID 1002 ;
            ACTION hwg_CheckMenuItem( , 1002, ! hwg_IsCheckedMenuItem( , 1002 ) )
         MENUITEM "Panel" ID 1003 ;
            ACTION hwg_CheckMenuItem( , 1003, ! hwg_IsCheckedMenuItem( , 1003 ) )
         MENUITEM "MDI" ID 1004 ;
            ACTION hwg_CheckMenuItem( , 1004, ! hwg_IsCheckedMenuItem( , 1004 ) )
      ENDMENU
      MENU TITLE "Window"
         MENUITEM "Tile Horizontal"  ;
            ACTION  hwg_Sendmessage( HWindow():GetMain():handle, WM_MDITILE, MDITILE_HORIZONTAL, 0 )
         MENUITEM "Tile Vertical" ;
            ACTION hwg_Sendmessage( HWindow():GetMain():handle, WM_MDITILE, MDITILE_VERTICAL, 0 )
         MENUITEM "Cascade" ;
            ACTION hwg_Sendmessage( HWindow():GetMain():handle, WM_MDICASCADE, 0, 0 )
      ENDMENU
   ENDMENU

   ACTIVATE WINDOW oDlg CENTER

   RETURN Nil

STATIC FUNCTION DlgSample()

   LOCAL oDlg, lIsWindow, lIsTabPage, lIsPanel, lIsMDI, oTab, oParent

   lIsWindow  := hwg_IsCheckedMenuItem( ,1001 )
   lIsTabPage := hwg_IsCheckedMenuItem( ,1002 )
   lIsPanel   := hwg_IsCheckedMenuItem( ,1003 )
   lIsMDI     := hwg_IsCheckedMenuItem( ,1004 )

   DO CASE
   CASE lIsMDI

      INIT WINDOW oDlg ;
         MDICHILD ;
         TITLE "democheckbox.prg" ;
         SIZE 800, 600 ;
         STYLE WS_VISIBLE + WS_OVERLAPPEDWINDOW

   CASE lIsWindow

      INIT WINDOW oDlg ;
         TITLE "democheckbox.prg" ;
         SIZE 800, 600 ;
         STYLE WS_VISIBLE + WS_OVERLAPPEDWINDOW

   OTHERWISE

      INIT DIALOG oDlg ;
         TITLE "democheckbox.prg" ;
         SIZE 800, 600 ;
         STYLE WS_VISIBLE + WS_OVERLAPPEDWINDOW

   ENDCASE

   oParent := oDlg

   IF lIsTabPage

      @ 3, 30 TAB oTab ITEMS {} OF oDlg SIZE 700, 500

      BEGIN PAGE "test" OF oTab

      oParent := oTab
   ENDIF

   IF lIsPanel
   ENDIF

   DemoCheckbox( .F., oParent )

   IF lIsTabPage
      END PAGE OF oTab
   ENDIF

   DO CASE
   CASE lIsMDI
      ACTIVATE WINDOW oDlg
   CASE lIsWindow
      ACTIVATE WINDOW oDlg CENTER
   OTHERWISE
      ACTIVATE DIALOG oDlg CENTER
   ENDCASE

   (oTab) := Nil       // warning -w3 -es2
   (oTab)

   RETURN Nil
Não entendi porque WINDOW normal não funcionou, talvez tenha que guardar a variável com a dialog.

Então....
Você escolhe...
Quer janela MDI ou comum ?
Quer tabpage ou não ?
o panel ainda não criei.
E sempre o mesmo exemplo de checkbox reutilizado !!!

Situação atual do demoall.prg

Enviado: 30 Abr 2025 12:22
por JoséQuintas
Em partes:

o menu, marcado ou não

Código: Selecionar todos

      MENU TITLE "Option"
         MENUITEM "Window" ID 1001 ;
            ACTION hwg_CheckMenuItem( , 1001, ! hwg_IsCheckedMenuItem( , 1001 ) )
         MENUITEM "Tabpage" ID 1002 ;
            ACTION hwg_CheckMenuItem( , 1002, ! hwg_IsCheckedMenuItem( , 1002 ) )
         MENUITEM "Panel" ID 1003 ;
            ACTION hwg_CheckMenuItem( , 1003, ! hwg_IsCheckedMenuItem( , 1003 ) )
         MENUITEM "MDI" ID 1004 ;
            ACTION hwg_CheckMenuItem( , 1004, ! hwg_IsCheckedMenuItem( , 1004 ) )
      ENDMENU
A rotina que cria
primeiro criar as variáveis com setup pra ficar mais fácil

Código: Selecionar todos

STATIC FUNCTION DlgSample()

   LOCAL oDlg, lIsWindow, lIsTabPage, lIsPanel, lIsMDI, oTab, oParent

   lIsWindow  := hwg_IsCheckedMenuItem( ,1001 )
   lIsTabPage := hwg_IsCheckedMenuItem( ,1002 )
   lIsPanel   := hwg_IsCheckedMenuItem( ,1003 )
   lIsMDI     := hwg_IsCheckedMenuItem( ,1004 )
cria a dialog do tipo que foi escolhida

Código: Selecionar todos

   DO CASE
   CASE lIsMDI

      INIT WINDOW oDlg ;
         MDICHILD ;
         TITLE "democheckbox.prg" ;
         SIZE 800, 600 ;
         STYLE WS_VISIBLE + WS_OVERLAPPEDWINDOW

   CASE lIsWindow

      INIT WINDOW oDlg ;
         TITLE "democheckbox.prg" ;
         SIZE 800, 600 ;
         STYLE WS_VISIBLE + WS_OVERLAPPEDWINDOW

   OTHERWISE

      INIT DIALOG oDlg ;
         TITLE "democheckbox.prg" ;
         SIZE 800, 600 ;
         STYLE WS_VISIBLE + WS_OVERLAPPEDWINDOW

   ENDCASE
se tem tabpage, cria a tabpage.
O detalhe é que o PARENT para as informações depende disso.
oTab se tiver tab, ou oDlg se for direto na janela.
Deixo a informação em oParent

Código: Selecionar todos

   oParent := oDlg

   IF lIsTabPage

      @ 3, 30 TAB oTab ITEMS {} OF oDlg SIZE 700, 500

      BEGIN PAGE "test" OF oTab

      oParent := oTab
   ENDIF
Aí, chamo o exemplo de checkbox indicando aonde vai colocar as coisas

Código: Selecionar todos

  DemoCheckbox( .F., oParent )
Se eu criei tab page, então eu encerro a tabpage

Código: Selecionar todos

   IF lIsTabPage
      END PAGE OF oTab
   ENDIF
Tudo criado, é só ativar

Código: Selecionar todos

   DO CASE
   CASE lIsMDI
      ACTIVATE WINDOW oDlg
   CASE lIsWindow
      ACTIVATE WINDOW oDlg CENTER
   OTHERWISE
      ACTIVATE DIALOG oDlg CENTER
   ENDCASE
É o que todo mundo usa.
Só que eu gosto de fazer no automático, pra ter menos trabalho.

Situação atual do demoall.prg

Enviado: 30 Abr 2025 16:00
por JoséQuintas
mdi.png
Faltou mostrar:

As opções do menu ativam/desativam esses checkmarks.
Eles equivalem ao Sim/Não.

Situação atual do demoall.prg

Enviado: 30 Abr 2025 19:08
por JoséQuintas
sample.png
Estou gostando da "brincadeira".

Estou mexendo no fonte, ia fazer checkbox mas sei lá como faz.
Abri o demoall, olhei o visual, e cliquei em mostrar o fonte.
Agora tá lado a lado com o editor de textos pra fazer igual ou copiar/colar.

Pois é... sou usuário do que criei kkkk

Precisava algo assim em todas as LIBs !!!!

Situação atual do demoall.prg

Enviado: 01 Mai 2025 10:30
por JoséQuintas
demoall.png
Visual levemente alterado.

Os botões do demoall estavam chamando mais atenção que os exemplos kkkkk
Agora mais discretos.

Só não perguntem a diferença de imagem pra WINDOW ou pra DIALOG.
Só estou organizando exemplos....
Suponho.... pelo que vi em fivewin... que a métrica pode ser diferente entre DIALOG e WINDOW, e dar diferença de tamanho.
Foi uma diferença que demorei pra resolver no começo do fivewin... as posições não batiam entre WINDOW e DIALOG.

Situação atual do demoall.prg

Enviado: 01 Mai 2025 12:57
por JoséQuintas
hwguicode.png
Vi essa opção no github e olhei de curioso.
Acho que a mudança perto de 2014 foi da hwgui 2.17.

O github não considera renomear arquivo, e conta como removido/acrescentado.

Com tanta mudança, se eu não for removido... kkkk
Parece a maior mudança depois de 2014

Nota:
Como já disse por aqui, meu fork é cópia exata do oficial.
Tudo foi copiado, desde o zero.

Situação atual do demoall.prg

Enviado: 01 Mai 2025 13:09
por JoséQuintas
demoall.png
Mais recente adição, de hoje.

Se clicar no dlg mostra dialog separada.
Se clicar no code mostra o fonte.

Então....
Imaginem se fosse duplicar esse fonte.....
É a mesma rotina, executa com e sem dialog.

Nota: Na postagem vi que precisa aumentar o tamanho da dialog individual. (ou subir tudo)

Situação atual do demoall.prg

Enviado: 01 Mai 2025 13:14
por JoséQuintas
demoall.png
Pronto, tô ficando rápido nisso.
Na anterior estava cortando o último button.

O botão EXIT está certo.
Fechar a DIALOG, só se estiver rodando em DIALOG.
Por isso não aparece na tabpage.

Situação atual do demoall.prg

Enviado: 01 Mai 2025 14:17
por JoséQuintas
demoall.png
Esta alteração é legal.
Mas não é o que se vê, mas o que não se vê.

Os dois últimos bmp/ico

Código: Selecionar todos

   @ 50, 300 BITMAP HBitmap():AddString( "Dialog", DemoImgResource( "d.bmp" ) )
   @ 160, 300 ICON   HIcon():AddString( "Dialog", DemoImgResource( "d.ico" ) )
eles vém daqui:

Código: Selecionar todos

STATIC FUNCTION DemoImgResource( cFileName )

   DO CASE
#ifdef __PLATFORM__WINDOWS
   CASE cFileName == "d.bmp"; #pragma __binarystreaminclude "..\image\d.bmp" | RETURN %s
   CASE cFileName == "d.ico"; #pragma __binarystreaminclude "..\image\d.ico" | RETURN %s
#else
   CASE cFileName == "d.bmp"; #pragma __binarystreaminclude "../image/d.bmp" | RETURN %s
   CASE cFileName == "d.ico"; #pragma __binarystreaminclude "../image/d.ico" | RETURN %s
#endif
   ENDCASE
   RETURN Nil
Ao compilar, ficam embutidos no EXE.
Mais fácil do que usar o tal bin container hexadecimal.

Nota: já estava usando no demoall.prg pra embutir os fontes PRG.

Situação atual do demoall.prg

Enviado: 01 Mai 2025 14:26
por JoséQuintas
pragma.png
Ao postar aqui pensei...
se não dá pra ver, melhor avisar.

Situação atual do demoall.prg

Enviado: 01 Mai 2025 14:26
por Itamar M. Lins Jr.
Olá!

Código: Selecionar todos

itamar@itamar-desktop:~/dev/hwgui/samples$ ./demoall 
(demoall:1104647): Gtk-WARNING **: 14:02:30.413: GtkSpinButton: setting an adjustment with non-zero page size is deprecated
(demoall:1104647): Gtk-WARNING **: 14:02:30.424: GtkSpinButton: setting an adjustment with non-zero page size is deprecated
(demoall:1104647): Gtk-WARNING **: 14:02:30.481: GtkSpinButton: setting an adjustment with non-zero page size is deprecated
Mandei um FIX para corrigir esse Aviso no GTK.

Saudações,
Itamar M. Lins Jr.

Situação atual do demoall.prg

Enviado: 01 Mai 2025 14:30
por Itamar M. Lins Jr.
Olá!
Agora com erro:

Código: Selecionar todos

demoimage2.prg(120) Error F0029  Can't open #include file '../image/d.bmp'
Saudações,
Itamar M. Lins Jr.

Situação atual do demoall.prg

Enviado: 01 Mai 2025 14:32
por JoséQuintas
Sobre o anterior:

Que estranho, não mexi na parte de GTK.

Facilita pro Wilfried, porque ele pode se perder, só pode ser num dos últimos samples.

Compila o demoimage2.prg sozinho

Parece que tá reclamando de alguma coisa zerada ou sem definição de tamanho.

Mas isso é na execução ?

Sobre esse último
Até vi isso.... acho que é com D maiúsculo.