Fiz só um "rascunho" de como poderia usar OOP em HMG Extended, postei lá no fórum da HMG Extended.
Um exemplo usando o que criei
#include "i_var.ch"
*-----------------------------------------------------------------------------*
FUNCTION OBJ_HMG_GetFormControls( cFormName, aUserType ...
Pesquisa resultou em 360 ocorrências: +OOP
Termo pesquisado: +oop
- 01 Out 2025 02:09
- Fórum: MiniGui
- Tópico: HMG Extended OOP
- Respostas: 0
- Exibições: 5590
- 29 Ago 2025 16:59
- Fórum: Contribuições, Dicas e Tutoriais
- Tópico: Uia, descobri algo interessante do AScan() / hb_AScan()
- Respostas: 0
- Exibições: 1497
Uia, descobri algo interessante do AScan() / hb_AScan()
Tava tentando entender alguns erros ao mudar HMG 3 pra OOP.......
Achei...
PROCEDURE Main
LOCAL aList := { 0, "A", {0,0} }
SetMode(25,80)
CLS
? hb_ASCan( aList, "J" )
Inkey(0)
RETURN
Isso resulta em ZERO.
mas.....
? AScan( aList, { | e | e == "J" } )
Já isso vai dar erro de type ...
Achei...
PROCEDURE Main
LOCAL aList := { 0, "A", {0,0} }
SetMode(25,80)
CLS
? hb_ASCan( aList, "J" )
Inkey(0)
RETURN
Isso resulta em ZERO.
mas.....
? AScan( aList, { | e | e == "J" } )
Já isso vai dar erro de type ...
- 28 Ago 2025 12:52
- Fórum: [x]Harbour
- Tópico: HB_WebView (a cross-platform Webview library)
- Respostas: 15
- Exibições: 15862
HB_WebView (a cross-platform Webview library)
... 321 ] -> EXPERIMENTAL/NOT FULLY IMPLEMENTED: VIRTUAL GRID EDIT ALLOW TAB FLAG
* _HMG_SYSDATA [ 322 ] -> _RESERVED_
* _HMG_SYSDATA [ 323 ] -> OOP Object Counter
* _HMG_SYSDATA [ 324 ] -> OOP Last Window Object
* _HMG_SYSDATA [ 325 ] -> Current Control Definition: 'Buffered'
* _HMG_SYSDATA ...
* _HMG_SYSDATA [ 322 ] -> _RESERVED_
* _HMG_SYSDATA [ 323 ] -> OOP Object Counter
* _HMG_SYSDATA [ 324 ] -> OOP Last Window Object
* _HMG_SYSDATA [ 325 ] -> Current Control Definition: 'Buffered'
* _HMG_SYSDATA ...
- 21 Ago 2025 19:27
- Fórum: MiniGui
- Tópico: Só uma idéia que veio na cabeça pra OOP na HMG3
- Respostas: 12
- Exibições: 1600
Só uma idéia que veio na cabeça pra OOP na HMG3
É incrível.
Variáveis da classe App
CREATE CLASS _HmgAppClass STATIC
VAR aFormList INIT {}
Variáveis da classe do form
CREATE CLASS _HmgFormClass
VAR _nIndex INIT 0
É só isso.
O array tem todos os forms, todos os forms disponíveis em uma única variável.
E no form, tem o Index, toda ...
Variáveis da classe App
CREATE CLASS _HmgAppClass STATIC
VAR aFormList INIT {}
Variáveis da classe do form
CREATE CLASS _HmgFormClass
VAR _nIndex INIT 0
É só isso.
O array tem todos os forms, todos os forms disponíveis em uma única variável.
E no form, tem o Index, toda ...
- 21 Ago 2025 19:09
- Fórum: MiniGui
- Tópico: Só uma idéia que veio na cabeça pra OOP na HMG3
- Respostas: 12
- Exibições: 1600
Só uma idéia que veio na cabeça pra OOP na HMG3
change.png
E olhando assim, dá até pra agilizar.
Tá procurando um form com essas características...
Pra isso existe AScan()
nPos := hb_AScan( oHmgApp():AllForms(),
{ | e | e:Name == cFormName .AND. e:Type == "X" .AND. e:ParentHandle == hWnd } )
IF nPos != 0
RETURN oHmgApp():FormByIndex( nPos ...
E olhando assim, dá até pra agilizar.
Tá procurando um form com essas características...
Pra isso existe AScan()
nPos := hb_AScan( oHmgApp():AllForms(),
{ | e | e:Name == cFormName .AND. e:Type == "X" .AND. e:ParentHandle == hWnd } )
IF nPos != 0
RETURN oHmgApp():FormByIndex( nPos ...
- 21 Ago 2025 13:11
- Fórum: MiniGui
- Tópico: Só uma idéia que veio na cabeça pra OOP na HMG3
- Respostas: 12
- Exibições: 1600
Só uma idéia que veio na cabeça pra OOP na HMG3
erro.png
Isto mostra que as alterações estão surtindo efeito.
O erro era esperado.
Hoje achei melhor alterar form:Active pra form:IsActive.
Esqueci de alterar na classe, então deu falta.
Também alterei form:Deleted pra form:IsDeleted
O importante do erro é: é erro esperado, fácil de resolver ...
Isto mostra que as alterações estão surtindo efeito.
O erro era esperado.
Hoje achei melhor alterar form:Active pra form:IsActive.
Esqueci de alterar na classe, então deu falta.
Também alterei form:Deleted pra form:IsDeleted
O importante do erro é: é erro esperado, fácil de resolver ...
- 20 Ago 2025 18:32
- Fórum: MiniGui
- Tópico: Só uma idéia que veio na cabeça pra OOP na HMG3
- Respostas: 12
- Exibições: 1600
Só uma idéia que veio na cabeça pra OOP na HMG3
Sem dúvida que o Array da forma que está, precisa a todo tempo consultar a tabela de referencia dos elementos (saber sua função).
Mudar _HMG_SYSDATA para Hash vai quebrar compatibilidade com qualquer código de usuário que utilize o Array diretamente.
Mudar _HMG_SYSDATA para Static idem, pois muda a ...
Mudar _HMG_SYSDATA para Hash vai quebrar compatibilidade com qualquer código de usuário que utilize o Array diretamente.
Mudar _HMG_SYSDATA para Static idem, pois muda a ...
- 20 Ago 2025 12:42
- Fórum: MiniGui
- Tópico: Só uma idéia que veio na cabeça pra OOP na HMG3
- Respostas: 12
- Exibições: 1600
Só uma idéia que veio na cabeça pra OOP na HMG3
Olhe este bloco, ok, está parcialmente alterado:
For i := 1 To oHmgApp():FormCount
If _HMG_SYSDATA [ 65 ] [i] == .F.
If _HMG_SYSDATA [ 69 ] [i] != 'X'
If oHmgApp():FormByIndex( i ):Handle != ModalHandle
DisableWindow ( oHmgApp():FormByIndex( i ):Handle )
EndIf
EndIf
EndIf
Next i
Com ...
For i := 1 To oHmgApp():FormCount
If _HMG_SYSDATA [ 65 ] [i] == .F.
If _HMG_SYSDATA [ 69 ] [i] != 'X'
If oHmgApp():FormByIndex( i ):Handle != ModalHandle
DisableWindow ( oHmgApp():FormByIndex( i ):Handle )
EndIf
EndIf
EndIf
Next i
Com ...
- 20 Ago 2025 11:20
- Fórum: MiniGui
- Tópico: Só uma idéia que veio na cabeça pra OOP na HMG3
- Respostas: 12
- Exibições: 1600
Só uma idéia que veio na cabeça pra OOP na HMG3
Hash não vai mudar nada, só vai piorar as coisas.
Quanto mais alternativas pior, mais difícil consertar depois.
HMG Extended acho que vai ser difícil refazer, por tantas opções alternativas que foram criadas e ainda são mantidas.
Manter compatibilidade com tudo que inventaram torna tudo cada vez ...
Quanto mais alternativas pior, mais difícil consertar depois.
HMG Extended acho que vai ser difícil refazer, por tantas opções alternativas que foram criadas e ainda são mantidas.
Manter compatibilidade com tudo que inventaram torna tudo cada vez ...
- 19 Ago 2025 15:24
- Fórum: MiniGui
- Tópico: Só uma idéia que veio na cabeça pra OOP na HMG3
- Respostas: 12
- Exibições: 1600
Só uma idéia que veio na cabeça pra OOP na HMG3
Mudar _HMG_SYSDATA para hash seria opção (intenção de melhorar a legibilidade) ?
*--------------------------------------------------------------------*
Function GetSplitChildWindowHandle (cFormName, cParentForm)
*--------------------------------------------------------------------*
LOCAL i, hWnd ...
*--------------------------------------------------------------------*
Function GetSplitChildWindowHandle (cFormName, cParentForm)
*--------------------------------------------------------------------*
LOCAL i, hWnd ...
- 19 Ago 2025 14:22
- Fórum: MiniGui
- Tópico: Só uma idéia que veio na cabeça pra OOP na HMG3
- Respostas: 12
- Exibições: 1600
Só uma idéia que veio na cabeça pra OOP na HMG3
Então.....
Essas coisas acontecem.....
Por descuido, estava alterando hmg3 e testando hmg extended.
Joguei todas as alterações fora.
O pior disso, é que original também não funciona.
Essas coisas acontecem.....
Por descuido, estava alterando hmg3 e testando hmg extended.
Joguei todas as alterações fora.
O pior disso, é que original também não funciona.
- 19 Ago 2025 10:38
- Fórum: MiniGui
- Tópico: Só uma idéia que veio na cabeça pra OOP na HMG3
- Respostas: 12
- Exibições: 1600
Só uma idéia que veio na cabeça pra OOP na HMG3
Não faço a menor idéia e não interessa no momento.
Compare os fontes
Antes de alterar
*--------------------------------------------------------------------*
Function GetSplitChildWindowHandle (cFormName, cParentForm)
*--------------------------------------------------------------------*
LOCAL i ...
Compare os fontes
Antes de alterar
*--------------------------------------------------------------------*
Function GetSplitChildWindowHandle (cFormName, cParentForm)
*--------------------------------------------------------------------*
LOCAL i ...
- 19 Ago 2025 09:23
- Fórum: MiniGui
- Tópico: Só uma idéia que veio na cabeça pra OOP na HMG3
- Respostas: 12
- Exibições: 1600
Só uma idéia que veio na cabeça pra OOP na HMG3
A criação de uma classe OOP para a hmg3 seria diferente da implementação usada na oohg ?
hmg3 tem algum controle a mais que oohg ?
Os comandos nessa tela oohg me parecem idênticos a hmg3

*Ainda não fiz testes com oohg
hmg3 tem algum controle a mais que oohg ?
Os comandos nessa tela oohg me parecem idênticos a hmg3

*Ainda não fiz testes com oohg
- 18 Ago 2025 21:15
- Fórum: MiniGui
- Tópico: Só uma idéia que veio na cabeça pra OOP na HMG3
- Respostas: 12
- Exibições: 1600
Só uma idéia que veio na cabeça pra OOP na HMG3
Tem estes casos também
_HMG_SYSDATA [ 271 ] := .F. // _HMG_IsModalActive
_HMG_SYSDATA [ 167 ] := 0 // _HMG_ActiveModalHandle
esses ficariam na classe principal.
oHmgApp():IsModalActive := .F.
oHmgApp():ActiveModalHandle := 0
E na classe principal mesmo estilo:
METHOD IsModalActive ...
_HMG_SYSDATA [ 271 ] := .F. // _HMG_IsModalActive
_HMG_SYSDATA [ 167 ] := 0 // _HMG_ActiveModalHandle
esses ficariam na classe principal.
oHmgApp():IsModalActive := .F.
oHmgApp():ActiveModalHandle := 0
E na classe principal mesmo estilo:
METHOD IsModalActive ...
- 18 Ago 2025 18:22
- Fórum: MiniGui
- Tópico: Só uma idéia que veio na cabeça pra OOP na HMG3
- Respostas: 12
- Exibições: 1600
Só uma idéia que veio na cabeça pra OOP na HMG3
O que me parece agora:
_HMG_SYSDATA é a variável pública com tudo.
Digamos assim, cada nova variável que a HMG precisa, é adicionada uma nova coluna a esse array.
De certa forma, é o que fazemos com classes, a diferença é que está tudo nesse array público.
O array é multidimensional.
Compare com ...
_HMG_SYSDATA é a variável pública com tudo.
Digamos assim, cada nova variável que a HMG precisa, é adicionada uma nova coluna a esse array.
De certa forma, é o que fazemos com classes, a diferença é que está tudo nesse array público.
O array é multidimensional.
Compare com ...