Como iniciar o conteúdo de HCEDIT

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

Como iniciar o conteúdo de HCEDIT

Mensagem por JoséQuintas »

Código: Selecionar todos

#include "hwgui.ch"
#include "directry.ch"

FUNCTION DlgTextView()

   LOCAL aFileList, nIndex, cFileSpec := "*.prg"
   LOCAL oDlg, oEdit, oFont := HFont():Add( "MS Sans Serif", 0, -13 )

   aFileList := Directory( cFileSpec )
   nIndex := 1

   INIT DIALOG oDlg CLIPPER TITLE "Text view"  ;
      AT 0,0  SIZE 800, 600 ;
      FONT oFont ON INIT Dlg_Init( oEdit, aFileList, nIndex )

   @ 10, 10 HCEDIT oEdit SIZE oDlg:nWidth - 40, oDlg:nHeight - 100

   ACTIVATE DIALOG oDlg

RETURN Nil

STATIC FUNCTION Dlg_Init( oEdit, aFileList, nIndex )

   LOCAL cTxt

   IF Len( aFileList ) == 0
      cTxt := ""
   ELSE
      cTxt := MemoRead( aFileList[ nIndex ], F_NAME )
   ENDIF
   oEdit:SetText( cTxt )
   (cTxt)
   (oEdit)
   (aFileList)
   (nIndex)

RETURN Nil
Como iniciar o conteúdo de HCEDIT ?
Desse jeito dá erro de não existir o método SetText()
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

Como iniciar o conteúdo de HCEDIT

Mensagem por Itamar M. Lins Jr. »

Olá!
Tente com VALUE
oEdit:VALUE( cTxt )

Código: Selecionar todos

CLASS HEdit INHERIT HControl

   CLASS VAR winclass  INIT "EDIT"
   DATA lMultiLine     INIT .F.
   DATA cType INIT "C"
   DATA bSetGet
   DATA bValid
   DATA cPicFunc, cPicMask
   DATA lPicComplex    INIT .F.
   DATA lFirst         INIT .T.
   DATA lChanged       INIT .F.
   DATA lNoPaste       INIT .F.
   DATA nMaxLength     INIT Nil
   DATA bkeydown, bkeyup, bchange
   DATA aColorOld      INIT { 0,0 }
   DATA bColorBlock

   METHOD New( oWndParent, nId, vari, bSetGet, nStyle, nLeft, nTop, nWidth, nHeight, ;
      oFont, bInit, bSize, bGfocus, bLfocus, ctooltip, ;
      tcolor, bcolor, cPicture, lNoBorder, nMaxLength, lPassword, bKeyDown, bChange )
   METHOD Activate()
   METHOD Init()
   METHOD onEvent( msg, wParam, lParam )
   METHOD Redefine( oWndParent, nId, vari, bSetGet, oFont, bInit, bSize, bGfocus, ;
      bLfocus, ctooltip, tcolor, bcolor, cPicture, nMaxLength )
   METHOD SetGet( value ) INLINE Eval( ::bSetGet, value, self )
   METHOD Refresh()
   METHOD Value ( xValue ) SETGET
   METHOD SelStart( nStart ) SETGET
   METHOD SelLength( nLength ) SETGET
   METHOD ParsePict( cPicture, vari )

ENDCLASS
Se entendi direito.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
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

Como iniciar o conteúdo de HCEDIT

Mensagem por Itamar M. Lins Jr. »

Olá!
Editando um campo MEMO, ou texto grande. Tanto faz.
cMinhaVar := oBJTxt:GetText()

Código: Selecionar todos

   @ 085,380 Get oCl21 Var vCl21 size 330,130 VALID {||vCl21:=oCl21:GetText(),.T.} BACKCOLOR 16777215 STYLE ES_MULTILINE + ES_AUTOVSCROLL + ;
                                                                                    WS_VSCROLL + ES_WANTRETURN ;
                                                                                    TOOLTIP "Observação sobre o cliente."                                                                                                                                   
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

Como iniciar o conteúdo de HCEDIT

Mensagem por JoséQuintas »

Me baseei aqui:

Código: Selecionar todos

FUNCTION hwg_MemoEdit(mpmemo , cTextTitME , cTextSave ,  cTextClose , ;
 cTTSave , cTTClose , oHCfont )
...
   IF oHCfont == NIL
    @ 10, 10 HCEDIT oEdit SIZE oModDlg:nWidth - 20, 240
   ELSE
    @ 10, 10 HCEDIT oEdit SIZE oModDlg:nWidth - 20, 240 ;
       FONT  oHCfont
   ENDIF
...
a classe tem:

Código: Selecionar todos

CLASS HCEdit INHERIT HControl
...
   METHOD SetText( xText, cPageIn, cPageOut )
Vou testar a outra opção.
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

Como iniciar o conteúdo de HCEDIT

Mensagem por Itamar M. Lins Jr. »

Olá!
Entendi...(acredito)
Precisa primeiro colocar tudo na DIALOG.
Depois que você vai usar funções para mostrar os conteúdos das variáveis no caso os GETS.

Por exemplo:

Código: Selecionar todos

ANTES aqui em cima eu digo:

   INIT DIALOG oDlg CLIPPER NOEXIT TITLE cTitulo Font oFont AT 0,0 SIZE 1280,640 STYLE WS_OVERLAPPEDWINDOW ;
   On Init {|| hwg_WriteStatus( oDlg,2,'Reg: ' + Transform( cl->(lastRec()) ,"9,999,999" )) }  

   //coloco browse, botões de navegação etc...

  cNomeCliente :=  -> posso "MARIA" ou alias->cliente //Posso já começar com browse no primeiro recno() clientes.dbf
  ou 
  cNomeCliente := space(60)

[b]   @ 085,010 get oNomeCliente var cNomeCliente  [/b]

  //desenho TODOS OS CONTROLES

   oDlg:Activate(,,,.T.) //EQUIVALENTE AO READ

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
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

Como iniciar o conteúdo de HCEDIT

Mensagem por Itamar M. Lins Jr. »

Olá!
Não pode fazer USO do OBJETO ANTES de colocar (FECHAR) eles dentro da DIALOG.
O OBJETO só passa a existir DEPOIS DO:
ACTIVATE DIALOG oDlg

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
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

Como iniciar o conteúdo de HCEDIT

Mensagem por Itamar M. Lins Jr. »

Olá!
ON INIT Dlg_Init( oEdit, aFileList, nIndex )
Bem... Aqui acredtio que está fazendo uso do objeto oEDIT, ANTES dele ser criado.
Me ensinaram a usar dessa forma:

Código: Selecionar todos


 //Objetos da DIALOG

  oDlg:bActivate := {||oDlg:Show(),FuncaoA(),FuncaoB(),FuncaoC(),oEDIT:Disable() }

 ACTIVATE DIALOG oDlg

Esse :bActivate só vai executar depois que a DIALOG mostrar todos os (objetos) ou seja ativada.

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

Como iniciar o conteúdo de HCEDIT

Mensagem por JoséQuintas »

Mesmo erro, agora não existe :Value ao invés de :SetText()

E com MEMVAR dá que variável não existe.
O que tem de errado então?

Código: Selecionar todos

#include "hwgui.ch"
#include "directry.ch"

MEMVAR oEdit

FUNCTION DlgTextView()

   LOCAL aFileList, nIndex, cFileSpec := "*.prg"
   LOCAL oDlg, oFont := HFont():Add( "MS Sans Serif", 0, -13 )

   aFileList := Directory( cFileSpec )
   nIndex := 1

   INIT DIALOG oDlg CLIPPER TITLE "Text view"  ;
      AT 0,0  SIZE 800, 600 ;
      FONT oFont ON INIT Dlg_Init( aFileList, nIndex )

   @ 10, 10 GET oEdit SIZE oDlg:nWidth - 40, oDlg:nHeight - 100 FONT oFont ;
      STYLE ES_MULTILINE + ES_AUTOVSCROLL + WS_VSCROLL + WS_HSCROLL

   ACTIVATE DIALOG oDlg

RETURN Nil

STATIC FUNCTION Dlg_Init( aFileList, nIndex )

   LOCAL cTxt

   IF Len( aFileList ) == 0
      cTxt := ""
   ELSE
      cTxt := MemoRead( aFileList[ nIndex ], F_NAME )
   ENDIF
   oEdit:Value := cTxt
   (cTxt)
   (oEdit)
   (aFileList)
   (nIndex)

RETURN Nil
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

Como iniciar o conteúdo de HCEDIT

Mensagem por Itamar M. Lins Jr. »

Olá!
Tá respondido nas 3 ai em cima o pq.
Tente assim:

Código: Selecionar todos

#include "hwgui.ch"
#include "directry.ch"

MEMVAR oEdit

FUNCTION DlgTextView()

   LOCAL aFileList, nIndex, cFileSpec := "*.prg"
   LOCAL oDlg, oFont := HFont():Add( "MS Sans Serif", 0, -13 )

   aFileList := Directory( cFileSpec )
   nIndex := 1

   INIT DIALOG oDlg CLIPPER TITLE "Text view"  ;
      AT 0,0  SIZE 800, 600 ;
      FONT oFont //ON INIT Dlg_Init( aFileList, nIndex )

   @ 10, 10 GET oEdit SIZE oDlg:nWidth - 40, oDlg:nHeight - 100 FONT oFont ;
      STYLE ES_MULTILINE + ES_AUTOVSCROLL + WS_VSCROLL + WS_HSCROLL

   oDlg:bActivate := {|| Dlg_Init( aFileList, nIndex ) }

   ACTIVATE DIALOG oDlg

RETURN Nil

STATIC FUNCTION Dlg_Init( aFileList, nIndex )

   LOCAL cTxt

   IF Len( aFileList ) == 0
      cTxt := ""
   ELSE
      cTxt := MemoRead( aFileList[ nIndex ], F_NAME )
   ENDIF
   oEdit:Value := cTxt
   (cTxt)
   (oEdit)
   (aFileList)
   (nIndex)

RETURN Nil
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
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

Como iniciar o conteúdo de HCEDIT

Mensagem por Itamar M. Lins Jr. »

Olá!
Fix, do FIX, do fix...

Código: Selecionar todos

FUNCTION DlgTextView()

   LOCAL aFileList, nIndex, cFileSpec := "*.prg"
   LOCAL oDlg, oFont := HFont():Add( "MS Sans Serif", 0, -13 )
   LOCAL cEdit := ""

   aFileList := Directory( cFileSpec )
   nIndex := 1

   INIT DIALOG oDlg CLIPPER TITLE "Text view"  ;
      AT 0,0  SIZE 800, 600 ;
      FONT oFont //ON INIT Dlg_Init( aFileList, nIndex )

   @ 10, 10 GET oEdit var cEdit SIZE oDlg:nWidth - 40, oDlg:nHeight - 100 FONT oFont STYLE ES_MULTILINE + ES_AUTOVSCROLL + WS_VSCROLL + WS_HSCROLL

   oDlg:bActivate := {|| Dlg_Init( aFileList, nIndex, oDlg ) }

   ACTIVATE DIALOG oDlg

RETURN Nil

STATIC FUNCTION Dlg_Init( aFileList, nIndex, oDlg )

   LOCAL cTxt

   IF Len( aFileList ) == 0
      cTxt := ""
   ELSE
      cTxt := MemoRead( aFileList[ nIndex ], F_NAME )
   ENDIF
   oDlg:oEdit:Value := cTxt

   (cTxt)
   (oEdit)
   (aFileList)
   (nIndex)

RETURN Nil
Aqui rodou e não deu erro, só a DIALOG com GET em BRANCO.

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

Como iniciar o conteúdo de HCEDIT

Mensagem por JoséQuintas »

novo.png
Tem que funcionar do jeito que eu quero.
Assim foi.

Conjunto de erros:

INIT é com codeblock e não direto como eu tinha feito.
HCEDIT NÃO TEM VAR, EDIT tem, SEM VAR não funciona.

Não tinha chegado lá ainda:
Tava errado FC_NAME, fora do colchete
Refresh após atualizar

Valeu pelo GET, fazer o que.....
Sair do console que usa GETS pra...... usar GETS kkkkk
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

Como iniciar o conteúdo de HCEDIT

Mensagem por JoséQuintas »

Faltam os buttons...

Como HCEDIT não é pra usar, é GET....

O que usar pra button ? ownbutton mesmo? (chute do nome)
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

Como iniciar o conteúdo de HCEDIT

Mensagem por Itamar M. Lins Jr. »

Ola!
Aqui dá erro: ON INIT {|| Dlg_Init( @oEdit, aFileList, nIndex ) }

Código: Selecionar todos

Error BASE/1004  No exported method: OEDIT
Called from ->OEDIT(0)
Called from hedit.prg->DLG_INIT(37)
Called from hedit.prg->(b)DLGTEXTVIEW(17)
Called from source\winapi\hdialog.prg->INITMODALDLG(312)
Called from source\winapi\hdialog.prg->(b)(_INITSTATICS00003)(0)
Called from source\winapi\hdialog.prg->HDIALOG:ONEVENT(232)
Called from ->HWG_DLGBOXINDIRECT(0)
Called from source\winapi\hdialog.prg->HDIALOG:ACTIVATE(177)
Called from hedit.prg->DLGTEXTVIEW(23)

HWGUI 2.23 dev Build 3
Date:01/23/23
Time:18:30:13
Vc está cansando a minha beleza...
Linha 37 é: oDlg:oEdit:Value := cTxt
Não quer usar GET use EDITBOX:

Código: Selecionar todos

#xcommand @ <x>,<y> EDITBOX [ <oEdit> CAPTION ] <caption> ;
            [ OF <oWnd> ]              ;
            [ ID <nId> ]               ;
            [ SIZE <width>, <height> ] ;
            [ COLOR <color> ]          ;
            [ BACKCOLOR <bcolor> ]     ;
            [ ON INIT <bInit> ]        ;
            [ ON SIZE <bSize> ]        ;
            [ ON GETFOCUS <bGfocus> ]  ;
            [ ON LOSTFOCUS <bLfocus> ] ;
            [ ON KEYDOWN <bKeyDown>]   ;
            [ ON CHANGE <bChange> ]    ;
            [ STYLE <nStyle> ]         ;
            [<lnoborder: NOBORDER>]    ;
            [<lPassword: PASSWORD>]    ;
            [ FONT <oFont> ]           ;
            [ TOOLTIP <ctoolt> ]       ;
Ou faz com a palavra que te agradar...

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
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

Como iniciar o conteúdo de HCEDIT

Mensagem por Itamar M. Lins Jr. »

Olá!
O que usar pra button ? ownbutton mesmo? (chute do nome)
Ta tudo aqui: \include\guilib.ch

Button:

Código: Selecionar todos

#xcommand @ <x>,<y> BUTTON [ <oBut> CAPTION ] <caption> ;
            [ OF <oWnd> ]              ;
            [ ID <nId> ]               ;
            [ SIZE <width>, <height> ] ;
            [ COLOR <color> ]          ;
            [ BACKCOLOR <bcolor> ]     ;
            [ ON INIT <bInit> ]        ;
            [ ON SIZE <bSize> ]        ;
            [ ON PAINT <bDraw> ]       ;
            [ ON CLICK <bClick> ]      ;
            [ STYLE <nStyle> ]         ;
            [ FONT <oFont> ]           ;
            [ TOOLTIP <ctoolt> ]       ;
OwnerButton:

Código: Selecionar todos

#xcommand @ <x>,<y> OWNERBUTTON [ <oOwnBtn> ]  ;
            [ OF <oWnd> ]              ;
            [ ID <nId> ]               ;
            [ SIZE <width>, <height> ] ;
            [ BACKCOLOR <bcolor> ]     ;
            [ ON INIT <bInit> ]        ;
            [ ON SIZE <bSize> ]        ;
            [ ON PAINT <bPaint> ]      ;
            [ ON CLICK <bClick> ]      ;
            [ HSTYLES <aStyles,...> ]  ;
            [ <flat: FLAT> ]           ;
            [ <enable: DISABLED> ]     ;
            [ TEXT <cText>             ;
                 [ COLOR <color>] [ FONT <font> ] ;
                 [ COORDINATES  <xt>, <yt>, <widtht>, <heightt> ] ;
            ] ;
            [ BITMAP <bmp>  [<res: FROM RESOURCE>] [<ltr: TRANSPARENT> [COLOR  <trcolor> ]] ;
                 [ COORDINATES  <xb>, <yb>, <widthb>, <heightb> ] ;
            ] ;
            [ TOOLTIP <ctoolt> ]    ;
            [ <lCheck: CHECK> ]     ;
          => ;
    [<oOwnBtn> :=] HOWNBUTTON():New( <oWnd>,<nId>,\{<aStyles>\},<x>,<y>,<width>, ;
          <height>,<bInit>,<bSize>,<bPaint>, ;
          <bClick>,<.flat.>, ;
              <cText>,<color>,<font>,<xt>, <yt>,<widtht>,<heightt>, ;
              <bmp>,<.res.>,<xb>,<yb>,<widthb>,<heightb>,<.ltr.>,<trcolor>, <ctoolt>,!<.enable.>,<.lCheck.>,<bcolor> );
    [; hwg_SetCtrlName( <oOwnBtn>,<(oOwnBtn)> )]
E os demais controles.

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

Como iniciar o conteúdo de HCEDIT

Mensagem por JoséQuintas »

testhwgui.png
Aqui normal.
Segue fonte, talvez tenha faltado alterar o codeblock no init?

Código: Selecionar todos

#include "hwgui.ch"
#include "directry.ch"

FUNCTION DlgTextView()

   LOCAL aFileList, nIndex, cFileSpec := hb_cwd() + "*.prg"
   LOCAL oDlg, oEdit, cEdit, oFont := HFont():Add( "MS Sans Serif", 0, -13 )

   aFileList := Directory( cFileSpec )
   nIndex := 1

   INIT DIALOG oDlg CLIPPER TITLE "Text view"  ;
      AT 0,0  SIZE 800, 600 ;
      FONT oFont ON INIT { || Dlg_Init( oEdit, aFileList, nIndex ) }

   @ 10, 10 GET oEdit VAR cEdit SIZE oDlg:nWidth - 40, oDlg:nHeight - 100 FONT oFont ;
       STYLE ES_MULTILINE + ES_AUTOVSCROLL + WS_VSCROLL + WS_HSCROLL

   ACTIVATE DIALOG oDlg

RETURN Nil

STATIC FUNCTION Dlg_Init( oEdit, aFileList, nIndex )

   LOCAL cTxt

   IF Len( aFileList ) == 0
      cTxt := ""
   ELSE
      cTxt := MemoRead( aFileList[ nIndex, F_NAME ] )
   ENDIF
   oEdit:Value := cTxt
   oEdit:Refresh()

RETURN Nil
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