Clipper On Line • Ver Tópico - No exported method: PROPS2ARR (Faltou oFont pro browse)

No exported method: PROPS2ARR (Faltou oFont pro browse)

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

No exported method: PROPS2ARR (Faltou oFont pro browse)

Mensagempor JoséQuintas » 26 Out 2021 20:36

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18160
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Error BASE/1004 No exported method: PROPS2ARR

Mensagempor alxsts » 27 Out 2021 01:07

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)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Error BASE/1004 No exported method: PROPS2ARR

Mensagempor JoséQuintas » 27 Out 2021 06:20

alxsts escreveu: vai poder detectar o enter no evento keyPress


a evento keypress, se refere a keydown?

   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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18160
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Error BASE/1004 No exported method: PROPS2ARR

Mensagempor JoséQuintas » 27 Out 2021 10:17

Esqueci de mencionar:

Isso que postei já está no fonte, mas dá erro assim mesmo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18160
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Error BASE/1004 No exported method: PROPS2ARR

Mensagempor alxsts » 27 Out 2021 10:43

Olá!

O caminho é este mas, na HwGUI, o teste de teclas é diferente. Veja:
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)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Error BASE/1004 No exported method: PROPS2ARR

Mensagempor Itamar M. Lins Jr. » 27 Out 2021 10:47

Olá!
Este método está em \source\winapi\drawidg.prg
*
  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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6959
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 508 vezes

Error BASE/1004 No exported method: PROPS2ARR

Mensagempor JoséQuintas » 27 Out 2021 12:13

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:
   oBrowse:bKeyDown := { | o, key | oBrowseKey( o, key ) }
...
STATIC FUNCTION oBrowseKey( oBrowse, nKey )

   MsgExclamation( Transform( nKey, "" ) )


nkey.png
nkey.png (6.55 KiB) Visualizado 509 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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18160
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Error BASE/1004 No exported method: PROPS2ARR

Mensagempor Itamar M. Lins Jr. » 27 Out 2021 12:17

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6959
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 508 vezes

Error BASE/1004 No exported method: PROPS2ARR

Mensagempor alxsts » 27 Out 2021 12:20

Olá!

JoséQuintas escreveu:portanto NÃO FAZ PARTE DE HWGUI

Use hwg_Getkeystate( nKey ) (Windows only)
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Error BASE/1004 No exported method: PROPS2ARR

Mensagempor Itamar M. Lins Jr. » 27 Out 2021 12:26

Olá!
O Alexander me ensinou a usar assim:
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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6959
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 508 vezes

Error BASE/1004 No exported method: PROPS2ARR

Mensagempor JoséQuintas » 27 Out 2021 12:57

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.

#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.
   oBrowse:bEnter   := { || hwg_EndWindow( oWindow ) }


Agora falta resolver o CLICK, isto não resolveu
   @ 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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18160
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Error BASE/1004 No exported method: PROPS2ARR

Mensagempor JoséQuintas » 27 Out 2021 13:01

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18160
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Error BASE/1004 No exported method: PROPS2ARR

Mensagempor JoséQuintas » 27 Out 2021 13:04

Configuração do browse:

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18160
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Error BASE/1004 No exported method: PROPS2ARR

Mensagempor JoséQuintas » 27 Out 2021 13:05

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

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18160
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Error BASE/1004 No exported method: PROPS2ARR

Mensagempor JoséQuintas » 27 Out 2021 13:14

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18160
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Próximo



Retornar para HwGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro