Aprendendo MiniGui... Onde está o erro?!!!!!!

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

JBPEDROSA
Usuário Nível 1
Usuário Nível 1
Mensagens: 22
Registrado em: 04 Dez 2008 20:01
Localização: RIO DE JANEIRO, RJ

Aprendendo MiniGui... Onde está o erro?!!!!!!

Mensagem por JBPEDROSA »

Continuando a estudar HMG.3.0.35, consegui o executável de quase todos os 22 exemplos do Samples\Tutorial. Incrível, mas o exemplo Tutor20, que coloquei numa pasta e envio anexo, apresenta um erro incompreensível para mim, pois outros exemplos semelhantes (grid.34, 35 e 36) rodam tranquilamnte. Peço aos amigos a gentileza de examinarem o build.log e o error.log, ajudando-me, mais uma vez. Um grande abraço do JBPEDROSA.
Anexos
TUTOR20.rar
(1.92 KiB) Baixado 170 vezes
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Aprendendo MiniGui... Onde está o erro?!!!!!!

Mensagem por Toledo »

Olá João Batista, segue abaixo o fonte com as correções:

Código: Selecionar todos

#include "hmg.ch"

Function Main

OpenTables()

    DEFINE WINDOW Win_1 ;
        AT 0,0 ;
        WIDTH 640 HEIGHT 480 ;
        TITLE 'Tutor 20: GRID Test' ;
        MAIN NOMAXIMIZE 

        DEFINE MAIN MENU 
            POPUP 'File'
                ITEM 'Set Grid RecNo' ACTION Win_1.Grid_1.Value := Val ( InputBox ('Set Grid RecNo','') )
                ITEM 'Get Grid RecNo' ACTION MsgInfo ( Str ( Win_1.Grid_1.RecNo ) )
                SEPARATOR
                ITEM 'Exit' ACTION Win_1.Release
            END POPUP
            POPUP 'Help'
                ITEM 'About' ACTION MsgInfo ("Tutor 20: GRID Test") 
            END POPUP
        END MENU

        @ 10,10 GRID Grid_1 ;
            WIDTH 610 ;
            HEIGHT 390 ; 
            HEADERS { 'Code' , 'First Name' , 'Last Name', 'Birth Date', 'Married' , 'Biography' } ;
            WIDTHS { 150 , 150 , 150 , 150 , 150 , 150 } ;
            VALUE  { 1 , 1 } ;
            ROWSOURCE "Test" ;
            COLUMNFIELDS { 'Code' , 'First' , 'Last' , 'Birth' , 'Married' , 'Bio' } ;
            ALLOWDELETE

    END WINDOW

    CENTER WINDOW Win_1

    ACTIVATE WINDOW Win_1

Return Nil

Procedure OpenTables()
    Use Test
Return Nil
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
JBPEDROSA
Usuário Nível 1
Usuário Nível 1
Mensagens: 22
Registrado em: 04 Dez 2008 20:01
Localização: RIO DE JANEIRO, RJ

Re: Aprendendo MiniGui... Onde está o erro?!!!!!!

Mensagem por JBPEDROSA »

Boa noite, amigo Toledo!

Agradeço as suas correções que, finalmente, resolveram o problema de compilação do hmg\samples\tutot20.

1-Executando o programa, notei um engano do autor na linha abaixo, que consegui corrigir e até acrescentar algo, com a linha seguinte:

ITEM 'Set Grid RecNo' ACTION Win_1.Grid_1.Value := Val ( InputBox ('Set Grid RecNo','') ) ----> engano: ... Value:=Val (...

ITEM 'Set Grid RecNo' ACTION Win_1.Grid_1.RecNo := Val ( InputBox ('Set Grid RecNo','Teste do InputBox','1') ) -----> certo: ... RecNo:=Val (...

2-Por outro lado fiquei me perguntando: por que ALLOWEDIT provoca um erro de compilação? Quando tiver um tempinho, agradeço se tiver uma resposta.

Um abraço do JBPEDROSA
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Aprendendo MiniGui... Onde está o erro?!!!!!!

Mensagem por Toledo »

Olá João Batista, com certeza deve ser algum bug na função GRID. Agora, se no lugar da função GRID você usar o DEFINE GRID, o parâmetro ALLOWEDIT funciona certinho. Mas, neste caso, como será permitido a edição dos campos, é necessário definir o controle dos tipos de dados de cada coluna através do COLUMNCONTROLS.

Veja como fica o código:

Código: Selecionar todos

#include "hmg.ch"

Function Main

OpenTables()

    aCtrl_1 := {'TEXTBOX','NUMERIC','9999999999'}
    aCtrl_2 := {'TEXTBOX','CHARACTER'}
    aCtrl_3 := {'TEXTBOX','CHARACTER'}
    aCtrl_4 := {'DATEPICKER','UPDOWN'}
    aCtrl_5 := { 'CHECKBOX' , 'Yes' , 'No' }
    aCtrl_6 := { 'EDITBOX' }

    DEFINE WINDOW Win_1 ;
        AT 0,0 ;
        WIDTH 640 HEIGHT 480 ;
        TITLE 'Tutor 20: GRID Test' ;
        MAIN NOMAXIMIZE 

        DEFINE MAIN MENU 
            POPUP 'File'
                ITEM 'Set Grid RecNo' ACTION Win_1.Grid_1.Recno := Val ( InputBox ('Set Grid RecNo','') )
                ITEM 'Get Grid RecNo' ACTION MsgInfo ( Str ( Win_1.Grid_1.RecNo ) )
                SEPARATOR
                ITEM 'Exit' ACTION Win_1.Release
            END POPUP
            POPUP 'Help'
                ITEM 'About' ACTION MsgInfo ("Tutor 20: GRID Test") 
            END POPUP
        END MENU

        DEFINE GRID Grid_1
            ROW 10
            COL 10
            WIDTH 610
            HEIGHT 390 
            HEADERS { 'Code' , 'First Name' , 'Last Name', 'Birth Date', 'Married' , 'Biography' }
            WIDTHS { 150 , 150 , 150 , 150 , 150 , 150 } 
            VALUE { 1 , 1 }
            ROWSOURCE "Test" 
            COLUMNCONTROLS { aCtrl_1 , aCtrl_2 , aCtrl_3 , aCtrl_4 , aCtrl_5 , aCtrl_6 }
            COLUMNFIELDS { 'Code' , 'First' , 'Last' , 'Birth' , 'Married' , 'Bio' } 
            ALLOWDELETE .T.
            ALLOWEDIT .T.
        END GRID

    END WINDOW

    Win_1.Grid_1.RecNo := Test->(RecNo())

    CENTER WINDOW Win_1

    ACTIVATE WINDOW Win_1

Return Nil

Procedure OpenTables()
    Use Test
Return Nil
Mas se pode também usar na função GRID o parâmetro EDIT que vai ter o mesmo efeito do ALLOWEDIT no DEFINE GRID.

Veja como fica o código neste caso, usando a função GRID:

Código: Selecionar todos

#include "hmg.ch"

Function Main

OpenTables()

    aCtrl_1 := {'TEXTBOX','NUMERIC','9999999999'}
    aCtrl_2 := {'TEXTBOX','CHARACTER'}
    aCtrl_3 := {'TEXTBOX','CHARACTER'}
    aCtrl_4 := {'DATEPICKER','UPDOWN'}
    aCtrl_5 := { 'CHECKBOX' , 'Yes' , 'No' }
    aCtrl_6 := { 'EDITBOX' }

    DEFINE WINDOW Win_1 ;
        AT 0,0 ;
        WIDTH 640 HEIGHT 480 ;
        TITLE 'Tutor 20: GRID Test' ;
        MAIN NOMAXIMIZE 

        DEFINE MAIN MENU 
            POPUP 'File'
                ITEM 'Set Grid RecNo' ACTION Win_1.Grid_1.Recno := Val ( InputBox ('Set Grid RecNo','') )
                ITEM 'Get Grid RecNo' ACTION MsgInfo ( Str ( Win_1.Grid_1.RecNo ) )
                SEPARATOR
                ITEM 'Exit' ACTION Win_1.Release
            END POPUP
            POPUP 'Help'
                ITEM 'About' ACTION MsgInfo ("Tutor 20: GRID Test") 
            END POPUP
        END MENU

        @ 10,10 GRID Grid_1 ;
            WIDTH 610 ;
            HEIGHT 390 ; 
            HEADERS { 'Code' , 'First Name' , 'Last Name', 'Birth Date', 'Married' , 'Biography' } ;
            WIDTHS { 150 , 150 , 150 , 150 , 150 , 150 } ;
            VALUE  { 1 , 1 } ;
            ROWSOURCE "Test" ;
            COLUMNCONTROLS { aCtrl_1 , aCtrl_2 , aCtrl_3 , aCtrl_4 , aCtrl_5 , aCtrl_6 } ;
            COLUMNFIELDS { 'Code' , 'First' , 'Last' , 'Birth' , 'Married' , 'Bio' } ;
            ALLOWDELETE ;
            EDIT

    END WINDOW

    Win_1.Grid_1.RecNo := Test->(RecNo())

    CENTER WINDOW Win_1

    ACTIVATE WINDOW Win_1

Return Nil

Procedure OpenTables()
    Use Test
Return Nil
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
JBPEDROSA
Usuário Nível 1
Usuário Nível 1
Mensagens: 22
Registrado em: 04 Dez 2008 20:01
Localização: RIO DE JANEIRO, RJ

Re: Aprendendo MiniGui... Onde está o erro?!!!!!!

Mensagem por JBPEDROSA »

Boa noite, amigo Toledo!

Sinto-me honrado em receber tanta atenção. Agradeço demais, estou aprendendo muito, muito mesmo.

Abri dois projetos no HMG com os códigos que o amigo sugeriu. Funcionou tudo perfeitamente. Mais uma vez, obrigado e... até a próxima. Um abraço do amigo JBPEDROSA.
Responder