No exported method: PROPS2ARR (Faltou oFont pro browse)

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

No exported method: PROPS2ARR (Faltou oFont pro browse)

Mensagem por JoséQuintas »

Código: Selecionar todos

Error BASE/1004  No exported method: PROPS2ARR  
Called from PROPS2ARR(0)  
Called from HBROWSE:EDIT(1837)  
Called from HBROWSE:BUTTONDBL(1757)  
Called from HBROWSE:ONEVENT(423)  
Called from HWG_ACTIVATEMAINWINDOW(0)  
Called from HMAINWINDOW:ACTIVATE(400)  
Called from HWGUIBROWSE(56)  
Called from PTESHWGUI(17)  
Called from DOPRG(139)  
Called from (b)RUNMODULE(115)  
Como sair do browse com ENTER, sem entrar no modo de ediçã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/
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Error BASE/1004 No exported method: PROPS2ARR

Mensagem por alxsts »

Olá!

Se entendi bem, são coisas mutuamente exclusivas. Se você teclar enter em um browse, é porque ele tem o foco e vai poder detectar o enter no evento keyPress. Normalmente, se o browse não estiver vazio, enter serve para selecionar a linha sobre a qual foi detectado o enter. Se quiser tratar a linha ou sair do browse, é só tratar isto no evento keyPress...
[]´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

Error BASE/1004 No exported method: PROPS2ARR

Mensagem por JoséQuintas »

alxsts escreveu: vai poder detectar o enter no evento keyPress
a evento keypress, se refere a keydown?

Código: Selecionar todos

   oBrowse:bKeyDown := { | o, key | oBrowseKey( o, key, @cText ) }
   oBrowse:bEnter   := { || oBrowse:oParent:Close() }

   ACTIVATE WINDOW oDlgPesquisa

   RETURN NIL

STATIC FUNCTION oBrowseKey( oBrowse, nKey, cText )

   DO CASE
   CASE nKey == K_ENTER .OR. nKey = K_ESC
      oBrowse:oParent:Close()
   CASE nKey == K_BS
   CASE nKey == K_F5 .AND. OrdCount() > 1 .AND. lCanChangeOrder
   CASE nKey == K_ALT_L .OR. nKey == K_CTRL_L .OR. nKey == K_ALT_T
   CASE nKey == K_ALT_F
   ENDCASE

   HB_SYMBOL_UNUSED( cText )

   RETURN .T.
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

Error BASE/1004 No exported method: PROPS2ARR

Mensagem por JoséQuintas »

Esqueci de mencionar:

Isso que postei já está no fonte, mas dá erro assim mesmo.
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

Error BASE/1004 No exported method: PROPS2ARR

Mensagem por alxsts »

Olá!

O caminho é este mas, na HwGUI, o teste de teclas é diferente. Veja:

Código: Selecionar todos

FUNCTION Teste()

   LOCAL oForm, aArray := {}, oBr

   INIT DIALOG oForm TITLE "Teste" AT 374,216 SIZE 778,425;
        FONT HFont():Add( "Verdana",0,-13,400,,,) CLIPPER  NOEXIT STYLE DS_CENTER + WS_VISIBLE + WS_CAPTION + WS_SYSMENU ICON NIL
   
   @ 006,005 BROWSE oBr ARRAY SIZE 770,400 FONT HFont():Add( '',0,-13,400,,,) AUTOEDIT STYLE WS_TABSTOP+WS_VSCROLL+WS_HSCROLL ;

   oBr:bKeyDown := {|o,oForm| oBr_KeyPress(o, oForm) }

...

RETURN NIL
//---------------------------------------------------------------------------------------------------------------------------------------

STATIC FUNCTION oBr_KeyPress(o, oForm )

   If GetKeyState(VK_RETURN,.F.,.T.) < 0
      oForm:close()
   Endif

RETURN .T.
//---------------------------------------------------------------------------------------------------------------------------------------
[]´s
Alexandre Santos (AlxSts)
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

Error BASE/1004 No exported method: PROPS2ARR

Mensagem por Itamar M. Lins Jr. »

Olá!
Este método está em \source\winapi\drawidg.prg

Código: Selecionar todos

*
  Returns an array with font properties (for creating a copy of a font entry)
  Copy sample
   apffrarr := oFont1:Props2Arr()
   oFont2 := HFont():Add( apffrarr[1], apffrarr[2], apffrarr[3], apffrarr[4], apffrarr[5], ;
                apffrarr[6], apffrarr[7], apffrarr[8] )
 */
METHOD Props2Arr() CLASS HFont
//        fontName, nWidth, nHeight , fnWeight, fdwCharSet, fdwItalic, fdwUnderline, fdwStrikeOut
//        1         2       3         4         5           6          7             8
   LOCAL fontName , nWidth , nHeight , fnWeight , fdwCharSet , fdwItalic , fdwUnderline , fdwStrikeOut
   LOCAL aFontprops := {}

   fontName     := iif( ::name == NIL , "<Empty>", ::name )
   nWidth       := iif( ::width == Nil, - 9999 , ::width )
   nHeight      := iif( ::height == NIL , - 9999 , ::height )
   fnWeight     := iif( ::weight == Nil, - 9999 , ::weight )
   fdwCharSet   := iif( ::CharSet == Nil, - 9999 , ::CharSet )
   fdwItalic    := iif( ::Italic == Nil, - 9999 , ::Italic )
   fdwUnderline := iif( ::Underline == Nil, - 9999 , ::Underline )
   fdwStrikeOut := iif( ::StrikeOut == Nil, - 9999 , ::StrikeOut )

   AADD (aFontprops, fontName)  && C
   AADD (aFontprops, nWidth)    && all other of type N
   AADD (aFontprops, nHeight)
   AADD (aFontprops, fnWeight)
   AADD (aFontprops, fdwCharSet)
   AADD (aFontprops, fdwItalic)
   AADD (aFontprops, fdwUnderline)
   AADD (aFontprops, fdwStrikeOut)

 RETURN aFontprops
Portanto deve-se ativar esse método para ser visto ai na classe ARRAY... Não sei fazer... E não tenho certeza se é isso. Mas é o que estou entendendo.

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

Error BASE/1004 No exported method: PROPS2ARR

Mensagem por JoséQuintas »

Itamar M. Lins Jr. escreveu:Portanto deve-se ativar esse método para ser visto ai na classe ARRAY... Não sei fazer... E não tenho certeza se é isso. Mas é o que estou entendendo.
Como assim? seus browses não tem ENTER ?
Se tem, então mesmo assim pode ter ajudado, pode ser a falta da MAIN() fornecendo defaults pra tudo.
alxsts escreveu:O caminho é este mas, na HwGUI, o teste de teclas é diferente. Veja:
oBr:bKeyDown := {|o,oForm| oBr_KeyPress(o, oForm) }
...
STATIC FUNCTION oBr_KeyPress(o, oForm )

If GetKeyState(VK_RETURN,.F.,.T.) < 0
oForm:close()
Endif

RETURN .T.
Discordo totalmente.
Motivo 1: GetKeyState() aqui nem existe, graças ao Viktor, no 3.4 ela está renomeada pra wapi_GetKeyState(), portanto NÃO FAZ PARTE DE HWGUI.
Motivo 2:

Código: Selecionar todos

   oBrowse:bKeyDown := { | o, key | oBrowseKey( o, key ) }
...
STATIC FUNCTION oBrowseKey( oBrowse, nKey )

   MsgExclamation( Transform( nKey, "" ) )
nkey.png
nkey.png (6.55 KiB) Exibido 1914 vezes
Por enquanto não sei se hb_KeyStd( nKey ) resolve a diferença de teclas, porque nesse caso não houve diferença.
Em todo caso, testar acrescentando a janela nos parâmetros.
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

Error BASE/1004 No exported method: PROPS2ARR

Mensagem por Itamar M. Lins Jr. »

Olá!
Como assim? seus browses não tem ENTER ?
Tem, mas o browse array não é o mesmo browse DBF.
Não tem esse erro com a ausência do método props2arr.
Não tem nada a ver com ENTER ou qualquer outra tecla, a Hwgui (windows) controla todas.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Error BASE/1004 No exported method: PROPS2ARR

Mensagem por alxsts »

Olá!
JoséQuintas escreveu:portanto NÃO FAZ PARTE DE HWGUI
Use hwg_Getkeystate( nKey ) (Windows only)
[]´s
Alexandre Santos (AlxSts)
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

Error BASE/1004 No exported method: PROPS2ARR

Mensagem por Itamar M. Lins Jr. »

Olá!
O Alexander me ensinou a usar assim:

Código: Selecionar todos

oBrw:bOther       := {|oBrw, msg, wParam, lParam| fKeyDown(oBrw, msg, wParam, lParam )

Static FUNCTION fKeyDown(oBrw, msg, wParam, lParam)
LOCAL nKEY := hwg_PtrToUlong( wParam ))
IF msg == WM_KEYDOWN
    If nKey == VK_ESCAPE
...
IF nKey == VK_RETURN
...
ENDIF
ENDIF

//Meus browses uso pesquisa letra a letra já no automático.
IF msg == WM_CHAR
  
   If nKey = VK_ESCAPE
      hwg_EndDialog()
      RETURN .F.
   ElseIf nKey == VK_BACK
      If len(cPesq) > 0
         cPesq := substr(cPesq,1,len(cPesq)-1)
         RefoBrw('eq',oBrw,cPesq)
      EndIf
      RETURN  .F.
   ENDIF
   IF nKey = VK_RETURN .OR. nKey = VK_TAB
      RETURN .F.
   ENDIF
   cPesq += chr(nKey)
   RefoBrw('eq',oBrw,cPesq)

EndIf

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

Error BASE/1004 No exported method: PROPS2ARR

Mensagem por JoséQuintas »

Código: Selecionar todos

SYSTEM ERROR  
Error BASE/1004  No exported method: PROPS2ARR  
Called from PROPS2ARR(0)  
Called from HBROWSE:EDIT(1837)  
Called from HBROWSE:BUTTONDBL(1757)  
Called from HBROWSE:ONEVENT(423)  
Called from HWG_ACTIVATEMAINWINDOW(0)  
Called from HMAINWINDOW:ACTIVATE(400)  
Called from HWGUIBROWSE(39)  
Called from PTESHWGUI(17)  
Called from DOPRG(139)  
Called from (b)RUNMODULE(115)  
Pelo que eu entendo disso, está tentando EDITAR.

Código: Selecionar todos

#xcommand @ <x>,<y> BROWSE [ <oBrw> ]  ;
            [ <lArr: ARRAY> ]          ;
            [ <lDb: DATABASE> ]        ;
            [ OF <oWnd> ]              ;
            [ ID <nId> ]               ;
            [ SIZE <width>, <height> ] ;
            [ ON INIT <bInit> ]        ;
            [ ON SIZE <bSize> ]        ;
            [ ON PAINT <bDraw> ]       ;
            [ ON CLICK <bEnter> ]      ;
            [ ON RIGHTCLICK <bRClick> ];
            [ ON GETFOCUS <bGfocus> ]  ;
            [ ON LOSTFOCUS <bLfocus> ] ;
            [ STYLE <nStyle> ]         ;
            [ <lNoVScr: NO VSCROLL> ]  ;
            [ <lNoBord: NOBORDER> ]    ;
            [ FONT <oFont> ]           ;
            [ <lAppend: APPEND> ]      ;
            [ <lAutoedit: AUTOEDIT> ]  ;
            [ ON UPDATE <bUpdate> ]    ;
            [ ON KEYDOWN <bKeyDown> ]  ;
            [ ON POSCHANGE <bPosChg> ] ;
            [ <lMulti: MULTISELECT> ]  ;
Pelo que entendo disso, só vai editar se colocar AUTOEDIT.

Resolvida uma parte, referente ao ENTER.

Código: Selecionar todos

   oBrowse:bEnter   := { || hwg_EndWindow( oWindow ) }
Agora falta resolver o CLICK, isto não resolveu

Código: Selecionar todos

   @ 1, 1 BROWSE ARRAY oBrowse ;
      SIZE AppWidth() - 10, AppHeight() - 10 STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL ;
      ON CLICK { || hwg_EndWindow( oDlgPesquisa ) }
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

Error BASE/1004 No exported method: PROPS2ARR

Mensagem por JoséQuintas »

Código: Selecionar todos

FUNCTION HwguiBrowse( cTitle, cnSQL, oBrowseList )

   LOCAL oDlgPesquisa, oBrowse

   INIT WINDOW oDlgPesquisa TITLE cTitle AT 9, 0 SIZE AppWidth(), AppHeight()
   //INIT DIALOG oDlgPesquisa AT 0, 0 SIZE AppWidth() , AppHeight() TITLE "Browse do arquivo " + Alias()

   @ 1, 1 BROWSE ARRAY oBrowse ;
      SIZE AppWidth() - 10, AppHeight() - 10 STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL ;
      ON CLICK { || hwg_EndWindow( oDlgPesquisa ) }
   oBrowse:aArray := cnSQL
   BrowseSet( oBrowse, oBrowseList, oDlgPesquisa )

   //ACTIVATE DIALOG oDlgPesquisa
   ACTIVATE WINDOW oDlgPesquisa

   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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Error BASE/1004 No exported method: PROPS2ARR

Mensagem por JoséQuintas »

Configuração do browse:

Código: Selecionar todos

FUNCTION BrowseSet( oBrowse, oBrowseList, oWindow )

   LOCAL oElement

   oBrowse:bSkip  := { | o, nSkip | ADOSkipper( o:aArray, nSkip ) }
   oBrowse:bGotop := { | o | o:aArray:MoveFirst() }
   oBrowse:bGobot := { | o | o:aArray:MoveLast() }
   oBrowse:bEof   := { | o | o:nCurrent > o:aArray:RecordCount() }
   oBrowse:bBof   := { | o | o:nCurrent == 0 }
   oBrowse:bRcou  := { | o | o:aArray:RecordCount() }
   oBrowse:bRecno := { | o | o:aArray:AbsolutePosition() }
   oBrowse:bRecnoLog := oBrowse:bRecno
   oBrowse:bGOTO  := { | o, n | (o), o:aArray:Move( n - 1, 1 ) }

   FOR EACH oElement IN oBrowseList
      ADD COLUMN oElement[ 2 ] TO oBrowse HEADER oElement[ 1 ] LENGTH Int( Len( Transform( Eval( oElement[ 2 ] ), "" ) ) * 1.2 ) + 1
   NEXT

   oBrowse:bKeyDown := { | o, key | oBrowseKey( o, key ) }
   oBrowse:bEnter   := { || hwg_EndWindow( oWindow ) }

   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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Error BASE/1004 No exported method: PROPS2ARR

Mensagem por JoséQuintas »

Configuração de teclas, que no momento não tem efeito.

Código: Selecionar todos

STATIC FUNCTION oBrowseKey( oBrowse, nKey, oWindow )

   (oBrowse)
   nKey := hb_KeyStd( nKey )
   MsgExclamation( Transform( nKey, "" ) )
   DO CASE
   CASE hb_KeyStd( nKey ) == K_ENTER // .OR. nKey = K_ESC
      hwg_EndWindow( oWindow )
      RETURN .F.
   CASE nKey == K_BS
   CASE nKey == K_F5 // .AND. OrdCount() > 1 .AND. lCanChangeOrder
   CASE nKey == K_ALT_L .OR. nKey == K_CTRL_L .OR. nKey == K_ALT_T
   CASE nKey == K_ALT_F
   ENDCASE

   RETURN .T.
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

Error BASE/1004 No exported method: PROPS2ARR

Mensagem por JoséQuintas »

Correção:
bENTER não resolveu nada.
Ao bloquear o nKey == K_ENTER não fechou mais.
Removi o bENTER e deixei só a função de teclas, e ok pra fechar no ENTER.

Ficou pendente o CLICK.

Tentar entender porque entrou na rotina EDIT.
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