Modificando samples

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

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

Modificando samples

Mensagem por JoséQuintas »

Estou inventando moda, sei lá....
Mas encontrei um comportamento que não sei explicar.
Talvez a invenção de moda ajude a criar bugs.

Postar um fonte de cada vez.

Primeiro exemplo, um browse dbf relativamente simples.

Código: Selecionar todos

/*
 demobrowsedbf.prg
 browse dbf

 called from demomenumt.prg
 called from all.prg

*/

#include "hwgui.ch"

FUNCTION DemoBrowseDbf( lWithDialog, oDlg )

   LOCAL oBrowse, aList, aItem

   hb_Default( @lWithDialog, .T. )

   CreateDBF( "test" )
   USE test SHARED

   aList := { ;
      { "Name",   { || field->Name } }, ;
      { "Adress", { || field->Address } } }

   IF lWithDialog
      INIT DIALOG oDlg ;
         TITLE "demobrowsedbf.prg - BROWSE DBF" ;
         AT 0,0 ;
         SIZE 800, 600
   ENDIF

   @ 20, 50 BROWSE oBrowse ;
      DATABASE ;
      SIZE 500, 400 ;
      STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL

   FOR EACH aItem IN aList
      ADD COLUMN aItem[ 2 ] TO oBrowse HEADER aItem[ 1 ] LENGTH 30
   NEXT

   @ 500, 450 BUTTON "Browse nCurrent" ;
      SIZE 180,36 ;
      ON CLICK { || hwg_MsgInfo( "Browse Current:" + Ltrim( Str( oBrowse:nCurrent ) ) ) } // will close all

   IF lWithDialog
      ACTIVATE DIALOG oDlg CENTER
      CLOSE DATABASES
   ENDIF

   RETURN Nil

STATIC FUNCTION CreateDbf( cFileName )

   LOCAL aList

   IF hb_vfExists( cFileName + ".dbf" )
      RETURN NIL
   ENDIF

   aList := { ;
      { "NAME", "C", 30, 0 }, ;
      { "ADDRESS", "C", 30, 0 } }

   dbCreate( cFileName , aList )

   USE ( cFileName )
   APPEND BLANK
   REPLACE field->name WITH "DBF_AAAA", field->address WITH "DBF_AAAA"
   APPEND BLANK
   REPLACE field->name WITH "DBF_BBBB", field->address WITH "DBF_BBBB"
   APPEND BLANK
   REPLACE field->name WITH "DBF_CCCC", field->address WITH "DBF_CCCC"
   USE

   RETURN NIL
Nada demais, só uma opção de usar ou não dialog.
Acho estranho funcionar sem Main(), mas tudo bem, melhor ainda.

Compilou funciona, pode ser estranho dizer isso mas vão entender depois....
demobrowsedbf.png
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

Modificando samples e bug(*) encontrado(*)

Mensagem por JoséQuintas »

Segundo exemplo: demotab.prg

Código: Selecionar todos

/*
demotab.prg
show tab

At momment using source code using parts from hwgui tutorial  hwgui/utils/tutorial

*/

#include "hwgui.ch"

#ifdef __GTK__
   #include "gtk.ch"
#endif

FUNCTION DemoTab( lWithDialog )

   LOCAL oTab, oDlg

   hb_Default( @lWithDialog, .T. )

   IF lWithDialog
      INIT DIALOG oDlg ;
         TITLE "demotab.prg" ;
         AT    0, 0 ;
         SIZE  800, 600 ;
         FONT  HFont():Add( "MS Sans Serif",0,-15 )
         // STYLE DS_CENTER + WS_VISIBLE + WS_POPUP + WS_CAPTION + WS_SYSMENU
   ENDIF

   @ 30, 50 TAB oTab ;
      ITEMS {} ;
      SIZE  700, 500

   BEGIN PAGE "say" ;
      OF oTab

      DemoSay( .F. )

   END PAGE OF oTab

   BEGIN PAGE "dateselect" ;
      OF oTab

      DemoDateSelect( .F. )

   END PAGE OF oTab

   BEGIN PAGE "combobox" ;
      OF oTab

      DemoCombobox( .F. )

   END PAGE of oTab

   BEGIN PAGE "browse array" ;
      OF oTab

      DemoBrowseArray( .F. )

   END PAGE OF oTab

   BEGIN PAGE "browse dbf" ;
      OF oTab

      DemoBrowseDBF( .F., oDlg )

   END PAGE OF oTab

   BEGIN PAGE "button" ;
      OF oTab

      DemoButton( .F., oDlg )

   END PAGE OF oTab

   // A STATUS PANEL may be used instead of a standard STATUS control
   ADD STATUS PANEL ;
      TO     oDlg ;
      HEIGHT 30 ;
      PARTS  80, 200, 0

   hwg_WriteStatus( oDlg, 1, "all.prg", .F. )
   hwg_WriteStatus( oDlg, 2, hwg_Version(), .F. )
   hwg_WriteStatus( oDlg, 3, "See more on hwgui tutorial", .F. )

   IF lWithDialog
      ACTIVATE DIALOG oDlg ;
         CENTER
   ENDIF

   RETURN Nil

// to be external
STATIC FUNCTION DemoSay()

   @ 10, 50 SAY "a text" ;
      SIZE 80, 30

   @ 10, 100 SAY "Need SIZE (*)" ;
      SIZE 300, 30

   RETURN Nil

// to be external
STATIC FUNCTION DemoDateSelect()

   LOCAL oDate

   @ 10, 50 SAY "Date" ;
      SIZE 80, 30

   @ 100, 50 DATESELECT oDate ;
      SIZE 120,28

   RETURN Nil

// to be external
STATIC FUNCTION DemoCombobox()

   LOCAL oCombo1, oCombo2
   LOCAL aComboList  := { "White", "Blue", "Red", "Black" }

#ifndef __PLATFORM__WINDOWS
   @ 10, 50 COMBOBOX oCombo1 ;
      ITEMS aComboList ;
      SIZE  100, 25              // size for GTK
   (oCombo2) // ok, not used, warning -w3 -es2
#else
   @ 10, 50 COMBOBOX oCombo1 ;
      ITEMS aComboList ;
      SIZE  100, 100             // size for GTK

   @ 100, 50 COMBOBOX oCombo2 ;
      ITEMS   aComboList ;
      SIZE    100, 100 ;
      EDIT                       // crash on GTK
#endif

   @ 10, 200 SAY "size height include list height on win" ;
      SIZE 300, 30

   RETURN Nil

// to be external
STATIC FUNCTION DemoBrowseArray()

   LOCAL oBrowse
   LOCAL aBrowseList := { ;
      { "Alex",   17, 12600 }, ;
      { "Victor", 42, 1600 }, ;
      { "John",   31, 15000 } }

   @ 10, 30 BROWSE oBrowse ;
      ARRAY ;
      SIZE  450, 250 ;
      STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL

   // array stored on browse aArray, and codeblocks using it
   oBrowse:aArray := aBrowseList
   oBrowse:AddColumn( HColumn():New( "Name",  { | v, o | (v), o:aArray[ o:nCurrent, 1 ] }, "C", 16, 0 ) )
   oBrowse:AddColumn( HColumn():New( "Age",   { | v, o | (v), o:aArray[ o:nCurrent, 2 ] }, "N", 6, 0 ) )
   oBrowse:AddColumn( HColumn():New( "Number",{ | v, o | (v), o:aArray[ o:nCurrent, 3 ] }, "N", 8, 0 ) )

   RETURN Nil

// to be external
STATIC FUNCTION DemoButton( lWithDialog, oDlg )

   LOCAL oBtn1, oBtn2, oBtn3

   @ 0, 10 OWNERBUTTON oBtn1 ;
      OF       oDlg ;
      SIZE     60, 24;
      TEXT     "But1" ;
      ON CLICK { || hwg_MsgInfo( "Button 1" ) }

   @ 64, 10 OWNERBUTTON oBtn2 ;
      OF       oDlg ;
      SIZE     60, 24 ;
      TEXT     "But.2" ;
      ON CLICK { || hwg_MsgInfo( "Button 2" ) }

   @ 128, 10 OWNERBUTTON oBtn3 ;
      OF       oDlg ;
      SIZE     60, 24 ;
      TEXT     "But.3" ;
      ON CLICK { || hwg_MsgInfo( "Button 3" ) }

   (lWithDialog) // not used, warning -w3 -es2

   RETURN Nil

* ============================== EOF of demotab.prg ========================
Está bem legível o uso de tab.
O resto vai ser excluído depois.

Atenção a esta parte do fonte:

Código: Selecionar todos

   BEGIN PAGE "browse dbf" ;
      OF oTab

      DemoBrowseDBF( .F., oDlg )

   END PAGE OF oTab
demotab.png
Não parece que é o exemplo anterior, É O EXEMPLO ANTERIOR.
Pra que criar outro exemplo do que já tem, apenas chamei o exemplo anterior indicando lWithDialog false.
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

Modificando samples e bug(*) encontrado(*)

Mensagem por JoséQuintas »

kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
Não é bug... kkkkkkkkkkkkkkkk

Terceiro fonte

Código: Selecionar todos

/*
all.prg
menu for samples on samples/ folder

DF7BE:
This seems to be a bug in Harbour:
all.prg(182) Warning W0032  Variable 'CBINHBMK' is assigned but not used in function 'EXECUTEEXE(159)'

*/

#ifdef __LINUX__
   #define __IS_AVAILABLE 3
#else
   #ifdef __MACOS__
      #define __IS_AVAILABLE 4
   #else
      #define __IS_AVAILABLE 2
   #endif
#endif

#include "hwgui.ch"

PROCEDURE Main

   LOCAL oDlg, aItem, nIndex := 1, lCloseMenu := .F., nCont
   LOCAL lIsAvailable, lIsEXE
   LOCAL aList := { ;
       ; // NAME,                  WIN, LINUX, MACOS, DESCRIPTION
       { "a.prg",                  .T., .F., .F., "MDI, Tab, checkbox, combobox, browse array, others" }, ;
       ;
       { "",                       .F., .F., .F., "" }, ;
       ;
       { "demotab",                .T., .T., .T., "Tab and more samples" } , ;
       { "demobrowsedbf.prg",      .T., .T., .T., "Browse DBF (demotab)"  }, ;
       ;
       { "",                       .T., .F., .F., "" }, ;
       ;
       { "demodbfdata.prg",        .T., .T., .T., "DBF data using tab" }, ;
       { "demoini.prg",            .T., .F., .F., "Read/write Ini" }, ;
       { "demomenuxml.prg",        .T., .T., .T., "Setup menu from XML ***error on new item***" }, ;
       { "demoxmltree.prg",        .T., .T., .T., "Show XML using hxmldoc and tree" }, ;
       { "hello.prg",              .T., .F., .F., "RichEdit, Tab, Combobox" }, ;
       { "tab.prg",                .T., .F., .F., "Tab, checkbox, editbox, combobox, browse array" }, ;
       ;
       ; // controls
       ;
       { "demogetupdown.prg",      .T., .T., .T., "Get UpDown" }, ;
       { "demobrowsearr.prg",      .T., .T., .T., "browse array editable" }, ;
       { "democheckbox.prg",       .T., .T., .T., "Checkbox and tab" }, ;
       { "democombobox.prg",       .T., .T., .T., "Combobox" }, ;
       { "demodatepicker.prg",     .T., .T., .T., "Date Picker" }, ;
       { "demolistbox.prg",        .T., .F., .F., "Listbox" }, ;
       { "demolistboxsub.prg",     .T., .T., .T., "Listbox Substitute" }, ;
       { "demomonthcal.prg",       .T., .T., .T., "Month Calendar" }, ;
       { "demoonother.prg",        .T., .F., .F., "ON OTHER MESSAGES" }, ;
       { "demotreebox.prg",        .T., .T., .T., "Treebox, Splitter and tab" }, ;
       ;
       { "",                       .F., .F., .F., "" }, ;
       ;
       ; // not recommended. Move to contrib ?
       { "demoshadebtn.prg",        .T., .F., .F., "Shade button" }, ;
       ;
       { "",                       .F., .F., .F., "" }, ;
       { "",                       .F., .F., .F., "" }, ;
       ;
       ; // first review
       { "nice.prg",               .T., .F., .F., "Nice button" }, ;
       { "nice2.prg",              .T., .F., .F., "Nice button 2 ***?***" }, ;
       ;
       { "",                       .F., .F., .F., "" }, ;
       ;
       ; // next review
       { "colrbloc.prg",           .T., .T., .T., "Color Block" }, ;
       { "dbview.prg",             .T., .T., .T., "DBView" }, ;
       { "dialogboxes.prg",        .T., .T., .T., "Dialogboxes" }, ;
       { "escrita.prg",            .T., .T., .T., "Escrita" }, ;
       { "fileselect.prg",         .T., .T., .T., "File Select" }, ;
       { "graph.prg",              .T., .T., .T., "Graph" }, ;
       { "grid_1.prg",             .T., .F., .F., "Grid1" }, ;
       { "grid_2.prg",             .F., .F., .F., "Grid2 PostGres" }, ;
       { "grid_3.prg",             .F., .F., .F., "Grid3 PostGres" }, ;
       { "grid_4.prg",             .T., .F., .F., "Grid4" }, ;
       { "grid_5.prg",             .T., .F., .F., "Grid5" }, ;
       { "helpstatic.prg",         .T., .T., .T., "Help Static" }, ;
       { "htrack.prg",             .T., .T., .T., "HTrack" }, ;
       { "icons.prg",              .T., .T., .T., "Icons" }, ;
       { "icons2.prg",             .T., .T., .T., "Icons2" }, ;
       { "testado.prg",            .T., .F., .F., "Test ADO" }, ;
       { "testalert.prg",          .T., .F., .F., "Test Alert" }, ;
       { "testbrwq.prg",           .T., .F., .F., "Test browse" }, ;
       { "testget1.prg",           .T., .F., .F., "Test Get 1" }, ;
       { "testget2.prg",           .T., .F., .F., "Test Get 2" }, ;
       { "testmenubitmap.prg",     .T., .F., .F., "Test Menu Bitmap" }, ;
       { "testtree.prg",           .T., .F., .F., "Treebox Editable *** error on edit***" }, ;
       { "testrtf.prg",            .T., .F., .F., "Test RTF" }, ;
       { "tstscrlbar.prg",         .T., .T., .T., "Scrollbar" }, ;
       { "tstspach.prg",           .T., .F., .F., "Test Splash" }, ;
       { "twolistbox.prg",         .T., .F., .F., "Two List Box" }, ;
       { "helpdemo.prg",           .T., .T., .T., "Help Demo ***outdated***" }, ;
       { "hole.prg",               .T., .F., .F., "Ole ***error***" }, ;
       { "propsh.prg",             .T., .F., .F., "Propsheet ***error***" }, ;
       { "testtray.prg",           .T., .F., .F., "Test Tray ***Error***" }, ;
       { "tstprdos.prg",           .T., .F., .F., "test DOS ***outdated***" }, ;
       { "",                       .F., .F., .F., "" }, ;
       { "notexist",               .F., .F., .F., "Test for menu, about not available" } }

   INIT WINDOW oDlg ;
      MAIN ;
      TITLE "ALL - Samples list-------------------------------------" ;
      AT 0,0 ;
      SIZE 600, 400

   MENU OF oDlg
      FOR nCont = 1 TO Len( aList ) // not sure about Xharbour for/each
         IF Mod( nCont, 10 ) == 1 // 10 options by group
            MENU TITLE "Samples" + Str( nIndex, 1 )
            nIndex     += 1
            lCloseMenu := .T.
         ENDIF
         FOR EACH aItem IN { aList[ nCont ] } // for/each isolate aItem to codeblock
            IF Empty( aItem[ 1 ] )
               SEPARATOR
               LOOP
            ENDIF
            lIsAvailable := aItem[ __IS_AVAILABLE ]
            lIsExe       := Right( aItem[ 1 ], 4 ) == ".prg"
            IF lIsAvailable
               IF lIsExe
                  MENUITEM aItem[ 1 ] + " - " + aItem[ 5 ] ACTION { || ExecuteExe( aItem[ 1 ] ) }
               ELSE
                  MENUITEM aItem[ 1 ] + " - " + aItem[ 5 ] ACTION { || Do( aItem[ 1 ] ) }
               ENDIF
            ELSE
               MENU TITLE aItem[ 1 ] + " - " + aItem[ 5 ] + " not available"
               ENDMENU
            ENDIF
         NEXT
         IF Mod( nCont, 10 ) == 0 // 10 options by group
            ENDMENU
            lCloseMenu := .F.
         ENDIF
      NEXT
      IF lCloseMenu // close menu if not closed before
         ENDMENU
      ENDIF
      MENUITEM "&Exit" ACTION hwg_EndWindow()
   ENDMENU

   ACTIVATE WINDOW oDlg CENTER

   RETURN

STATIC FUNCTION ExecuteExe( cFileName )

   LOCAL cFileNoExt, cBinName, cBinHbmk

   cFileNoExt := Left( cFileName, At( ".", cFileName ) - 1 )

#ifndef __PLATFORM__WINDOWS
   cBinName := "./" + cFileNoExt
   cBinHbmk := "hbmk2"
#else
   cBinName := cFileNoExt + ".exe"
   cBinHbmk := "hbmk2.exe"
#endif

   IF ! File( cBinName )
      IF ! hwg_MsgYesNo( cBinName + " not found, try create it?" )  && DF7BE: cFileName ==> cBinName
         RETURN Nil
      ENDIF

      // hwg_RunApp( cBinHbmk + " " + cFileNoExt, .T. ) // hbmk2 will use hbp or prg
      // do not wait
      * See bug in Harbour, not recognized,that CBINHBMK is used here!
      // RUN( CBINHBMK + " " + cFileNoExt, .T. ) // hbmk2 will use hbp or prg
      hwg_RunConsoleApp( CBINHBMK + " " + cFileNoExt, , .T. )

      IF ! File( cBinName )
         hwg_MsgInfo( "Can't create " + cBinName )
         RETURN Nil
      ENDIF
   ENDIF
   HWG_RunApp( cBinName )

   RETURN Nil

* ================================= EOF of all.prg ===========================
É um menu pra todos os samples.
Se precisar, já compila.

Código: Selecionar todos

       { "",                       .F., .F., .F., "" }, ;
       ;
       { "demotab",                .T., .T., .T., "Tab and more samples" } , ;
       { "demobrowsedbf.prg",      .T., .T., .T., "Browse DBF (demotab)"  }, ;
       ;
       { "",                       .T., .F., .F., "" }, ;
Agora que vi, esqueci de remover o ".prg".
demotab está compilado junto, a dialog modal... é modal.
demobrowsedbf.prg é fonte, por isso é usado um EXE externo.
O resultado é que demotab congela o menu, mas demobrowsedbf não, abre janelas à vontade.
Pensei que era bug, mas esqueci de remover o .prg.

Aproveitando o erro pro print-screen
all.png
Qual o resultado:

Basta compilar o ALL.HBP, e o usuário tem tudo.

Se quiser mexer na tab, colocar tooltip, etc., é só mexer no demotab.prg

Se quiser mexer no browse dbf, é só mexer no demobrowsedbf.prg

Desse jeito temos um exemplo completo, mas de fácil manutenção.
Variáveis do browsedbf não atrapalham os outros exemplos.
Variáveis da tab não atrapalham os outros exemplos.
O all não tem muito jeito, por enquanto, mas pode virar um simples menu depois.
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

Modificando samples e bug(*) encontrado(*)

Mensagem por JoséQuintas »

tem também o demomenumt.prg

Código: Selecionar todos

/*
 demomenumt.prg
 menu using multithread
 compile using -mt

CAUTION

- *** MT is experimental ***

- *** Make your own tests with another multithread GT ***

- If do not build hwgui using HB_GUI_MT_EXPERIMENTAL,
  need to close dialogs in reverse order of open

- If use INIT WINDOW it crashes.

- Using multithread, when a module crashes,
  may be needed to close on task manager.

- I use Windows only, but I am using more than this:
  I am using GTWVG, HWGUI and other GUI library together
  I think default harbour GUI GT is valid, on Windows is GTWVT
*/

#include "hbgtinfo.ch"
#include "hwgui.ch"

FUNCTION Main()

   LOCAL oDlg
   LOCAL bCodeBrowseDBF := { || DemoBrowseDbf() }
   LOCAL bCodeDemoTab   := { || DemoTab() }

   INIT DIALOG oDlg ;
      TITLE "demomenumt.prg - Menu using Multithread" ;
      AT 200,0 ;
      SIZE 400,150

   MENU OF oDlg
      MENU TITLE "Options"
         MENUITEM "&Browse DBF" ACTION hb_ThreadStart( { || DoMt( bCodeBrowseDbf ) } )
         MENUITEM "&Tab"        ACTION hb_ThreadStart( { || DoMt( bCodeDemoTab ) } )
         MENUITEM "&Exit" ACTION hwg_EndDialog()
      ENDMENU
   ENDMENU

   ACTIVATE DIALOG oDlg

   hb_ThreadWaitForAll()

   RETURN Nil

STATIC FUNCTION DoMt( bCode )

   hb_gtReload( hb_gtInfo( HB_GTI_VERSION ) )
   hwg_initProc() // init hwgui on thread
   Eval( bCode )

   RETURN Nil
Basicamente só tem o menu e nada mais.
Usa os outros exemplos.
demomenumt.png
Os exemplos são feios, visual ruim.
Mas cada exemplo trata de seu asssunto.
Essa é a parte legal.
Nada de ficar repetindo a mesma coisa em tudo que é exemplo.

E também pra usuário novo.
É compilar um exemplo e ver tudo.
Se o usuário quiser, olha cada um individual e compila cada um individual.

Se o usuário quer ver como usa tab, é só olhar o fonte de tab, não precisa olhar o fonte de browse.

Agora é só deixar os exemplos mais decentes, com visual melhor, e com mais recursos sobre o que ele trata.
Por exemplo, tooltip nas tabs, no fonte demotab.prg
Num demobutton.prg, as variações do button.

O que acham ?

Nota:
Assim também não repete o que já tem no tutorial.
Lá tem exemplo de muitos controles, individuais.
Desse jeito vai dar pra criar exemplos recheados.
Por exemplo, a dialog MDI, usando exemplos que já existem em MDI Child.
É criar o que interessa, dialogs vazias, e rechear com os exemplos existentes.
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

Modificando samples e bug(*) encontrado(*)

Mensagem por JoséQuintas »

Tem o tal HLENTA pra substituir TAB.
É só fazer um exemplo igual o demotab, mas com o hlenta.
Só com a parte que interessa também.

Jeito rápido de testar/comparar.

Acho que vai ser interessante deixar tudo nesse esquema.
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
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Modificando samples e bug(*) encontrado(*)

Mensagem por Itamar M. Lins Jr. »

Olá!
O que acham ?
Cavalo dado não se olha os dentes.
Muito código complica para o iniciante.
O browse da 2.17 é impossível de manutenção(Assim disse Kresin) por contas dos efeitos gráficos só para windows e de coisas só do BCC. 5x

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Modificando samples e bug(*) encontrado(*)

Mensagem por JoséQuintas »

Detesto fonte GUI.

Por exemplo:

Código: Selecionar todos

   @ 20, 50 SAY "demobrowsedbf.prg" ;
      SIZE 500, 30
Porque raios isso não aparece na tela ?

Isto funciona

Código: Selecionar todos

   @ 10, 50 SAY "a text" ;
      SIZE 80, 30
Qual a diferença pra não aparecer ?
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

Modificando samples e bug(*) encontrado(*)

Mensagem por JoséQuintas »

sample.png
Falta só o texto aparecer encima, com o nome do fonte que tem o browse.
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/
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Modificando samples e bug(*) encontrado(*)

Mensagem por alxsts »

Olá!
JoséQuintas escreveu:Porque raios isso não aparece na tela ?
Geralmente acontece quando algum outro componente sobrepõe aquele que não está aparecendo.
Tem algo em cima dele..
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Modificando samples e bug(*) encontrado(*)

Mensagem por JoséQuintas »

Na imagem dá pra ver que no outro funcionou, alterei mais coisas e agora foi.
Valeu.

Então.....
Os exemplos só tem o parametro lWithDialog e oDlg, que pode ser dialog ou tab.

Pra usar o demodbf, por exemplo:

Código: Selecionar todos

INIT DIALOG oDLG ....

   DemoBrowseDbf( .F., oDlg )
Se quiser usar numa tabpage

Código: Selecionar todos

   BEGIN PAGE "browse dbf" ;
      OF oTab

      DemoBrowseDBF( .F., oTab )

   END PAGE OF oTab
Apenas a dialog ou tab é passada como parâmetro.
É algo como copiar/colar pelo fonte.

E se rodar sozinho, ele usa o INIT DIALOG do fonte mesmo.

Acho que principiante não vai ter problema.

Se ele quer ver como usa TAB, o fonte demotab.prg mostra, o resto não importa.
Se ele quer ver MDI, MDI Child, o fonte demomdi.prg (que não existe ainda) mostra, o resto não importa.
Se ele quer ver o browse dbf, aí o fonte demobrowsedbf.prg mostra.
Fica cada fonte bem simples, com a parte que o usuário estiver procurando.
O inicial que postei de tab, é ainda sem a separação do que tem dentro.

Agora.... se o usuário tentar tab dentro de tab, usando o exemplo de tab, aí vai dar um erro inesperado.
Vai ser infinito, tab com tab com tab com tab..... teria que fazer outro tab com esse atual dentro.
Sei lá se o usuário pode tentar 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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Modificando samples e bug(*) encontrado(*)

Mensagem por JoséQuintas »

O all.prg

Código: Selecionar todos

   INIT WINDOW oDlg ;
      MAIN ;
      TITLE "ALL - Samples list-------------------------------------" ;
      AT 0,0 ;
      SIZE 800, 600

   MENU OF oDlg
...
ENDMENU

   DemoTab( .F., oDlg )

   ACTIVATE WINDOW oDlg CENTER

   RETURN
O que o all fez:
- criou a dialog
- criou o menu
- chamou demotab, informando que não é pra criar dialog, que vai usar a atual.
O resultado é o demotab.prg fazendo parte da dialog do all.
É a última imagem postada.
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

Modificando samples e bug(*) encontrado(*)

Mensagem por JoséQuintas »

label.png
E pro usuário não ficar perdido, o nome do fonte que cria cada parte.
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

Modificando samples e bug(*) encontrado(*)

Mensagem por JoséQuintas »

Como eu fiz isso ?
Ué... simples...

demotab.prg

Código: Selecionar todos

   @ 30, 30 SAY "demotab.prg" ;
      SIZE 500, 20 ;
      OF oDlg

   @ 30, 60 TAB oTab ;
      ITEMS {} ;
      SIZE  700, 500
demobrowsedbf.prg

Código: Selecionar todos

   @ 3, 30 SAY "demobrowsedbf.prg" ;
      SIZE 500, 30

   @ 20, 80 BROWSE oBrowse ;
O próprio exemplo coloca seu nome em oDLG recebido por parâmetro, que pode ser dialog, tab, ou o que inventar depois, ou a própria dialog do exemplo, se rodar sozinho.
O exemplo só tem o IF lWithDialog -> cria dialog.

É engraçado como parece uma coisa super avançada, e é só um parâmetro oDlg, e o IF se cria dialog.
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

Modificando samples e bug(*) encontrado(*)

Mensagem por JoséQuintas »

demomonth.png
Mais um.
na tab, e chamado pelo menu.

Esse precisou algo mais.

no hbp:

Código: Selecionar todos

{win}demomonthcal.prg
No fonte do demotab.prg

Código: Selecionar todos

   BEGIN PAGE "button" ;
      OF oTab

      DemoButton( .F., oTab )

   END PAGE OF oTab

#ifdef __PLATFORM__WINDOWS

   BEGIN PAGE "monthcal" ;
      OF oTab

      DemoMonthCal( .F., oTab )

   END PAGE OF oTab
#endif
Pois é.... esse não roda em Linux nem MacOs
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

Modificando samples e bug(*) encontrado(*)

Mensagem por JoséQuintas »

Só comentário:

Foi alguém que criou a maioria dos exemplos antes.

Só estou ajustando as coordenadas de exemplos que já existem.
Com isso, acrescento no demotab.prg, que já entra no all.prg

Só criei o jeito de juntar tudo, por tab page, ou por opção do menu, ou executando EXE se não der pra juntar diretamente.

É que me empolguei com essa idéia de um exemplo com tudo.

É o que eu sempre quis:
Olhar o visual primeiro, pra olhar o fonte depois.
E fonte com a parte que interessa, pra dar atenção somente a isso.
E mostrando o nome do fonte, pra não precisar ficar caçando nada.

Agora sim, começa a ser um complemento do tutorial.
No tutorial não dá pra ver a imagem primeiro, tem que executar um por um.
Deste jeito, é só procurar mais informação depois no tutorial ou na documentação, sabendo o nome do que procurar.
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