Gus;
Espero que me entiendas, porque desde 2008 que no toco esto y... bue... la memoria no es la misma de antes
(abajo la figura de como se ve)
hP2:nLeft:= h0:SplitV:nFirst+( ( GetsysMetrics( _SCR_ANCHO ) - h0:SplitV:nFirst ) - _WIDTH_BRW2 ) / 2
hP2:nTop := 10
Para aclarar:
h0 es una variable GLOBAL STATIC (xHarbour) o PUBLIC en HARBOUR
hP2 es una estatica en el .prg
Entonces lo que hice es pasar esos valores a un modulo donde genero la barra de botones
- Code: Select all Expand view
METHOD BarBotones( nModulo, nTop, nLeft ) CLASS TCI_Rutinas
local oBtnFin, ;
nIDIns
@ nTop, nLeft SBUTTONBAR h0:oBar SIZE 72,37 3D OF h0:oWnd ; // h0:oWnd es la ventana q contiene el splitter
BUTTONSIZE 64,31 ;
COLOR CLR_BLACK, CLR_NARFONDO1
SWITCH nModulo
CASE _MSTOCK
...
CASE _MCTRLINS
...
END
// Comunes
DEFINE SBUTTON OF h0:oBar ;
ACTION nIDIns:= ::aoQRY[_INS_DEFINE]:FieldGet( BRW1_IdIns ), ;
::aoQRY[_INS_DEFINE]:Refresh(), ;
::aoQRY[_INS_DEFINE]:Find( 1, nIDIns, TRUE ), ;
h0:oBrw2:SetFocus(), h0:oBrw2:Refresh ;
PROMPT "Refresca" ;
COLOR {|oBtn| If( oBtn:lMouseOver, CLR_YELLOW, CLR_BLACK ) }, { CLR_NARFONDO1, CLR_NARFONDO2 } ;
FONT ::hFont["Arial12"] ;
LOOK W97
DEFINE SBUTTON oBtnFin OF h0:oBar ;
ACTION h0:oBar:End(), ;
if( nModulo==_MSTOCK, ( h0:oBrw2:Hide(), h0:ShowBrw2:= FALSE ), ;
if( nModulo==_MCTRLINS, ( h0:oBrw:Hide(), h0:SplitH:Hide(), h0:oLst:Hide(), h0:ShowBrw:= FALSE ), "" )) ;
PROMPT "Cierra" ;
COLOR {|oBtn| If( oBtn:lMouseOver, CLR_YELLOW, CLR_BLACK ) }, { CLR_NARFONDO1, CLR_NARFONDO2 } ;
FONT ::hFont["Arial12"] ;
LOOK W97
h0:oBar:nWidth:= oBtnFin:nWidth *if( nModulo==_MSTOCK, 5, if( nModulo==_MCTRLINS, 2, 1 )) + ;
if( nModulo==_MSTOCK, 5*5, if( nModulo==_MCTRLINS, 11*2, 1 ))
h0:oBar:Refresh()
return( nil )
// Fin
Tambien, como veras, lo hice con la lib de SUPERBUTTON (de M.Mercado), supongo que sería lo mismo hacerlo con TOOLBAR de FW
se ve así:
bue espero te "alumbre"...