Pero me encuentro ante un problema que afecta a toda la arquitectura de las clases de fivemac .Se trata de la manera que se asignan "los contenedores" de cada control .
Me eXplico mejor con un poco de código .....
supongamos la clase button ....
Su codigo creador :
Code: Select all
NSView * GetView( NSWindow * window );
HB_FUNC( BTNCREATE )
{
NSButton * button = [ [ NSButton alloc ]
initWithFrame : NSMakeRect( hb_parnl( 2 ), hb_parnl( 1 ), hb_parnl( 3 ), hb_parnl( 4 ) ) ];
NSString * string = [ [ [ NSString alloc ] initWithCString: ISCHAR( 5 ) ? hb_parc( 5 ) : "" ] autorelease ];
NSWindow * window = ( NSWindow * ) hb_parnl( 6 );
[ button setBezelStyle : NSRoundedBezelStyle ];
[ button setTitle : string ];
[ GetView( window ) addSubview : button ];
[ button setAction : @selector( BtnClick: ) ];
hb_retnl( ( LONG ) button );
}
Code: Select all
[ GetView( window ) addSubview : button ];
En los split existen varias vistas en el mismo control y ninguna es principal .El boton se tiene que asignar a una de esas vistas que no tienen subvistas que devolver por lo que el codigo falla .
Si yo creo una funcion similar pero cambiando un poco el codigo :
Code: Select all
HB_FUNC( BTNCREATEFROMVIEW )
{
NSButton * button = [ [ NSButton alloc ]
initWithFrame : NSMakeRect( hb_parnl( 2 ), hb_parnl( 1 ), hb_parnl( 3 ), hb_parnl( 4 ) ) ];
NSString * string = [ [ [ NSString alloc ] initWithCString: ISCHAR( 5 ) ? hb_parc( 5 ) : "" ] autorelease ];
NSView * view = ( NSView * ) hb_parnl( 6 );
[ button setBezelStyle : NSRoundedBezelStyle ];
[ button setTitle : string ];
[ view addSubview : button ];
[ button setAction : @selector( BtnClick: ) ];
hb_retnl( ( LONG ) button );
}
Ya me funciona sin problemas en las vistas de los splits.
No se como se podrá solucionar facilmente , pero si que requiere que repensemos esta manera de asignar los contenedores.