Page 1 of 3
Classe Metro
Posted: Tue May 19, 2015 10:40 am
by Joaoalpande
Boa Tarde,
Estou a ver vários exemplos da classe metro e não estou a conseguir fazer o que desejo, preciso o seguinte:
na primeira tela quero que mostre 1 Metrobutton por cada registo da tabela REGIOES.DBF em que o caption é o campo nome desta mesma, quando o usuário clicar num deles preciso saber em que Recno() da REGIOES.DBF clicou , para depois fazer um filtro a tabela ARTIGOS.DBF em que o campo CodReg=RECNO() da tabela REGIOES clicado na primeira tela e mostrar todos os artigos filtrados em 1 metrobutton por cada registo, tem como fazer isso?
Cumprimentos
João Alpande
Re: Classe Metro
Posted: Tue May 19, 2015 11:29 am
by Antonio Linares
Joao,
Prueba asi:
Code: Select all
local oMetro
DEFINE METRO oMetro ;
TITLE "My FWH Metro app" ;
BACKGROUND "..\bitmaps\hires\earth.bmp"
while ! Eof()
DEFINE METROBUTTON OF oMetro ;
PROMPT FieldGet( 1 ) COLOR CLR_WHITE, RGB( 2, 174, 224 ) ; // 1 primer campo
IMAGE "..\bitmaps\metro\files.bmp" ;
ACTION Records()
DbSkip()
end
Re: Classe Metro
Posted: Tue May 19, 2015 12:32 pm
by Joaoalpande
Gracias Antonio Linares,
MUISTRA BIEN os metrobutton do dbf , cómo saber recno() do dbf el usuario hace clic ?
Saludos
João
Re: Classe Metro
Posted: Tue May 19, 2015 3:28 pm
by Antonio Linares
Joao,
Tienes que hacer esta modificación en metro.ch:
Code: Select all
#xcommand DEFINE METROBUTTON [<oBtn>] ;
[ PROMPT <cPrompt> ] ;
[ COLOR <nClrText>, <nClrPane> ] ;
[ IMAGE <cImgName> ] ;
[ OF <oMetro> ] ;
[ <large: LARGE> ] ;
[ ACTION <uAction,...> ] ;
=> ;
[ <oBtn> := ] <oMetro>:AddButton( <cPrompt>, <nClrText>, <nClrPane>,;
<.large.>, <cImgName>, [{| Self |<uAction>}] )
Code: Select all
local oMetro, oBtn
DEFINE METRO oMetro ;
TITLE "My FWH Metro app" ;
BACKGROUND "..\bitmaps\hires\earth.bmp"
while ! Eof()
DEFINE METROBUTTON oBtn OF oMetro ;
PROMPT FieldGet( 1 ) COLOR CLR_WHITE, RGB( 2, 174, 224 ) ; // 1 primer campo
IMAGE "..\bitmaps\metro\files.bmp" ;
ACTION ShowRecords( ::Cargo )
oBtn:Cargo = RecNo()
DbSkip()
end
Re: Classe Metro
Posted: Wed May 20, 2015 10:27 am
by Joaoalpande
ola Antonio Linares,
Alterei o metro.ch assim:
Code: Select all
// FiveWin - Windows 8 Metro look
#ifndef _METRO_CH
#define _METRO_CH
//----------------------------------------------------------------------------//
#xcommand DEFINE METRO <oMtr> ;
[ BACKGROUND <cFileName> ] ;
[ BTNSIZE <nBtnWidth>, <nBtnHeight> ] ;
[ TITLE <cTitle> ] ;
=> ;
<oMtr> := TMetro():New( <cTitle>, <nBtnWidth>, <nBtnHeight>, <cFileName> )
xcommand DEFINE METROBUTTON [<oBtn>] ;
[ PROMPT <cPrompt> ] ;
[ COLOR <nClrText>, <nClrPane> ] ;
[ IMAGE <cImgName> ] ;
[ OF <oMetro> ] ;
[ <large: LARGE> ] ;
[ ACTION <uAction,...> ] ;
=> ;
[ <oBtn> := ] <oMetro>:AddButton( <cPrompt>, <nClrText>, <nClrPane>,;
<.large.>, <cImgName>, [{| Self |<uAction>}] )
#xcommand ACTIVATE METRO <oMtr> => <oMtr>:Activate()
//----------------------------------------------------------------------------//
#endif
alterei o metro.prg assim:
Code: Select all
DEFINE METRO oMetro ;
TITLE "My FWH Metro app" ;
BACKGROUND "..\bitmaps\hires\earth.bmp"
DBSELECTAREA( 1 )
NET_USE ("F_REG.DBF", 3,.T.)
while ! Eof()
DEFINE METROBUTTON oBtn OF oMetro ;
PROMPT FieldGet( 1 ) COLOR CLR_WHITE, RGB( 2, 174, 224 ) ; // 1 primer campo
IMAGE "..\bitmaps\metro\files.bmp" ;
ACTION ShowRecords( ::Cargo )
oBtn:Cargo = RecNo()
DbSkip()
end
DEFINE METROBUTTON OF oMetro ;
PROMPT "Exit" COLOR CLR_WHITE, RGB( 2, 174, 224 ) ;
IMAGE "..\bitmaps\metro\exit.bmp" ;
ACTION If( MsgYesNo( "Want to exit ?" ), oMetro:End(),)
ACTIVATE METRO oMetro
dá error: Error description: Error description: Error BASE/1005 Class: 'NIL' has no property: CARGO
se retirar : oBtn:Cargo = RecNo() mostra bem os metrobutton mas quando clico num dá erro:
Error BASE/1003 Variable does not exist: SELF
Gracias
Re: Classe Metro
Posted: Wed May 20, 2015 10:32 am
by Antonio Linares
Por favor compílalo usando /b al llamar a Harbour.exe y comprueba que te aparece en el fichero.PPO
Re: Classe Metro
Posted: Wed May 20, 2015 11:05 am
by Joaoalpande
obrigado, o .ppo aparece assim, estou compilando com buildx.bat do samples:
Code: Select all
oMetro := TMetro():New( "My FWH Metro app",,, "..\bitmaps\hires\earth.bmp" )
DBSELECTAREA( 1 )
NET_USE ("F_REG.DBF", 3,.T.)
DBGOTOP()
while ! Eof()
oBtn := oMetro:AddButton( FieldGet( 1 ), 16777215, ( 2 + ( 174 * 256 ) + ( 224 * 65536 ) ), .F., "..\bitmaps\metro\files.bmp", {||ShowRecords(::Cargo )} )
oBtn:Cargo :=RecNo()
DbSkip()
end
oMetro:AddButton( "Exit", 16777215, ( 2 + ( 174 * 256 ) + ( 224 * 65536 ) ), .F., "..\bitmaps\metro\exit.bmp", {||If( MsgYesNo( "Want to exit ?" ), oMetro:End(),)} )
oMetro:Activate()
Re: Classe Metro
Posted: Wed May 20, 2015 1:18 pm
by Antonio Linares
En el .ppo debería aparecer esto:
{| Self |ShowRecords(::Cargo )}
Has modificado el fichero metro.ch como te indiqué ?
Re: Classe Metro
Posted: Wed May 20, 2015 1:31 pm
by Joaoalpande
Desculpa Antonio Linares, o metro.ch estava errado , mas continua com o mesmo erro Error description: Error BASE/1005 Class: 'NIL' has no property: CARGO
.ppo esta:
Code: Select all
oMetro := TMetro():New( "My FWH Metro app",,, "..\bitmaps\hires\earth.bmp" )
DBSELECTAREA( 1 )
NET_USE ("F_REG.DBF", 3,.T.)
DBGOTOP()
while ! Eof()
oBtn := oMetro:AddButton( FieldGet( 1 ), 16777215, ( 2 + ( 174 * 256 ) + ( 224 * 65536 ) ), .F., "..\bitmaps\metro\files.bmp", {| Self |ShowRecords(::Cargo )} )
oBtn:Cargo :=RecNo()
DbSkip()
end
oMetro:AddButton( "Exit", 16777215, ( 2 + ( 174 * 256 ) + ( 224 * 65536 ) ), .F., "..\bitmaps\metro\exit.bmp", {| Self |If( MsgYesNo( "Want to exit ?" ), oMetro:End(),)} )
oMetro:Activate()
Re: Classe Metro
Posted: Wed May 20, 2015 1:36 pm
by Antonio Linares
Please try this change and let me know what you get:
Code: Select all
while ! Eof()
oBtn := oMetro:AddButton( FieldGet( 1 ), 16777215, ( 2 + ( 174 * 256 ) + ( 224 * 65536 ) ), .F., "..\bitmaps\metro\files.bmp", {| Self |ShowRecords(::Cargo )} )
MsgInfo( ValType( oBtn ) )
oBtn:Cargo :=RecNo()
DbSkip()
end
Re: Classe Metro
Posted: Wed May 20, 2015 1:50 pm
by Joaoalpande
information : U
Error description: Error BASE/1005 Class: 'NIL' has no property: CARG
Re: Classe Metro
Posted: Thu May 21, 2015 3:18 pm
by Joaoalpande
Ola antonio,
no forum fivewin brasil deram uma solução mas com dialog e button , não funciona com metro , veja:
http://fivewin.com.br/index.php?/topic/ ... sse-metro/
Saludos
Re: Classe Metro
Posted: Thu May 21, 2015 3:35 pm
by karinha
Master algo +- asi:
Code: Select all
FUNCTION TESTEPRODU( oFld, _Folder, oPRODU, _LETRA, _INIPROD, _FIMPROD )
MEMVAR OCTL, _oProdu
PUBLIC WPRODFOCO
oCtl := oFld:aDialogs[_Folder]:oCtlFocus()
WHILE _INIPROD <= _FIMPROD
SYSREFRESH()
_oProdu := oProdu+STRZERO(_INIPROD,2,0)+_LETRA
IF (oCtl:hWnd = &_oProdu:hWnd)
WPRODFOCO := _INIPROD
EXIT
ENDIF
_INIPROD = _INIPROD + 1
ENDDO
RETURN( .T. )
Re: Classe Metro
Posted: Thu May 21, 2015 7:20 pm
by Antonio Linares
Joao,
Que versión de FWH usas ?
Re: Classe Metro
Posted: Thu May 21, 2015 9:49 pm
by Joaoalpande
12.07