Dicas sobre LIBs
Enviado: 27 Mar 2024 20:18
Não perguntem detalhes, é apenas meu ponto de vista, e não sou conhecedor de nenhuma, continuo achando um pé no saco ficar pesquisando sobre as LIBs, mas pelo menos isso ajuda muito.
O principal problema das LIBs é criar linguagem própria, então você pensa que é uma coisa, mas é outra.
Mas... isso tem uma saída interessante.
hwgui em boa parte é OOP, mas não é totalmente OOP
minigui não tem OOP, é simulada através de arquivos CH, e isso confunde.
As causam modificação nos comandos do harbour, nem adianta falar o contrário.
hwgui não tem muito o que falar, boa parte é OOP, segue boa parte o normal conhecido do harbour, na maior parte do tempo o que se escreve é o que acontece.
minigui era... ou é... depende do ponto de vista.
minigui se divide em no mínimo 3, na verdade acho que tem muito mais, menos famosas, como MarinasGUI por exemplo usando QT
hwgui também se divide, as mais conhecidas são 2.17 e 2.23, mas tem outras versões, menos famosas.
A melhor ? acho que fivewin comercial, é a mais antiga, com mais suporte, e onde todos se ajudam.
Quanto mais usada, mais problemas resolvidos, e segue-se em frente.
Mas nas grátis tem a minigui, a atenção a ela aqui não tem nada a ver com ser melhor ou não, mas porque há diversas formas de uso, e dependendo da escolhida pode atrapalhar ao invés de ajudar.
1) Sintaxe alternativa
exemplo prático pra mostrar a diferença:
note acima que tem ponto e vírgula, uma linha é continuação da outra.
Ainda não alterei essa criação pro outro formato, o chamado altsyntax.ch
Esse acima é usando o altsyntax.ch
Parece a mesma coisa.... mas não é.
Nesse formato CADA LINHA é compilada de forma independente, se der erro na linha, é ela que precisa ser corrigida.
Acho muito melhor, vai ser apresentado o erro da linha exata que contém o erro, não é igual ao anterior, que precisa revisar várias linhas sem saber no que mexer.
O principal problema das LIBs é criar linguagem própria, então você pensa que é uma coisa, mas é outra.
Mas... isso tem uma saída interessante.
hwgui em boa parte é OOP, mas não é totalmente OOP
minigui não tem OOP, é simulada através de arquivos CH, e isso confunde.
As causam modificação nos comandos do harbour, nem adianta falar o contrário.
hwgui não tem muito o que falar, boa parte é OOP, segue boa parte o normal conhecido do harbour, na maior parte do tempo o que se escreve é o que acontece.
minigui era... ou é... depende do ponto de vista.
minigui se divide em no mínimo 3, na verdade acho que tem muito mais, menos famosas, como MarinasGUI por exemplo usando QT
hwgui também se divide, as mais conhecidas são 2.17 e 2.23, mas tem outras versões, menos famosas.
A melhor ? acho que fivewin comercial, é a mais antiga, com mais suporte, e onde todos se ajudam.
Quanto mais usada, mais problemas resolvidos, e segue-se em frente.
Mas nas grátis tem a minigui, a atenção a ela aqui não tem nada a ver com ser melhor ou não, mas porque há diversas formas de uso, e dependendo da escolhida pode atrapalhar ao invés de ajudar.
1) Sintaxe alternativa
exemplo prático pra mostrar a diferença:
Código: Selecionar todos
FUNCTION gui_DialogCreate( xDlg, nRow, nCol, nWidth, nHeight, cTitle, bInit, xOldDlg )
IF Empty( xDlg )
xDlg := gui_newctlname( "DLG" )
ENDIF
IF Empty( bInit )
bInit := { || Nil }
ENDIF
DEFINE WINDOW ( xDlg ) ;
AT nCol, nRow ;
WIDTH nWidth x ;
HEIGHT nHeight ;
TITLE cTitle ;
; // MODAL ; // bad using WINDOW MAIN OFF
ON INIT Eval( bInit ) ;
ON RELEASE iif( Empty( xOldDlg ), Nil, DoMethod( xOldDlg, "SETFOCUS" ) )
IF ! Empty( xOldDlg )
ON KEY ALT+F4 ACTION doMethod( xOldDlg, "SETFOCUS" )
ENDIF
END WINDOW
RETURN Nil
Tem erro, mas qual ? ok, esse tá visível, é o X, mas nem sempre é assim.lib_hmge.prg:232: error E0030 Syntax error "syntax error at 'WINDOW'"
Ainda não alterei essa criação pro outro formato, o chamado altsyntax.ch
Código: Selecionar todos
FUNCTION gui_TextCreate( xDlg, xControl, nRow, nCol, nWidth, nHeight, ;
xValue, cPicture, nMaxLength, bValid )
IF Empty( xControl )
xControl := gui_newctlname( "TXT" )
ENDIF
DEFINE GETBOX ( xControl )
PARENT ( xDlg )
ROW nRow
COL nCol
HEIGHT nHeight
WIDTH nWidth
FONTNAME DEFAULT_FONTNAME
IF ValType( xValue ) == "N"
NUMERIC .T.
INPUTMASK cPicture
ELSEIF ValType( xValue ) == "D"
DATE .T.
DATEFORMAT cPicture
ELSEIF ValType( xValue ) == "L" // workaround to do not get error
xValue := " "
ELSEIF ValType( xValue ) == "C"
MAXLENGTH nMaxLength
ENDIF
VALUE xValue
//ON LOSTFOCUS Eval( bValid )
VALID bValid
END GETBOX
(bValid)
RETURN Nil
Parece a mesma coisa.... mas não é.
Nesse formato CADA LINHA é compilada de forma independente, se der erro na linha, é ela que precisa ser corrigida.
Acho muito melhor, vai ser apresentado o erro da linha exata que contém o erro, não é igual ao anterior, que precisa revisar várias linhas sem saber no que mexer.