Nuevas cosas a mejorar

Post Reply
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Nuevas cosas a mejorar

Post by mastintin »

He estado mejorando un poco la Clase Tgroup con nuevos metodos ( pongo abajo las mejoras ) .
Una de las cosas que he encontrado y que he implementado para el group es el concepto de anclaje en la ventana
En una ventana , por defecto todos los controles se anclan a la parte izquierda y abajo lo que hace que si se redimensiona la ventana , lo que aparezca quede colocado con un diseño penoso .
MacOsx tiene solucionado esto de una forma elegante , anclando el control a donde tu quieras y redimensionandolo o no a antojo .
Esto que he implementado en los tgroup realmente se debería implementar a nivel de tcontrol ( creo yo ) , pero como no estoy muy "ducho" en clases de fivewin dejo el trabajo para otros .
Ahora Tgroup puede ser un objeto contenedor de controles .

Las modificaciones :

en windows.m :

Code: Select all

NSView * GetView( NSWindow * window )
{
    
    if([ [ window className ] isEqual : @"NSBox" ] )
    { 
        //NSLog([ window className ]);
         return [ window contentView ];
    }
    else {
        

        if( [ [ window className ] isEqual : @"NSView" ] )
    {
        return ( ( NSView * ) window )  ;
    }
    else
    {
          if( [ [ window className ] isEqual : @"NSPanel" ] )
      return [ window contentView ];
   else
      return [ ( ( NSTabViewItem * ) window ) view ];
    }
    }
}   

 
en groups.m :

Code: Select all

HB_FUNC( BOXHIDE )
{
    NSBox * box = ( NSBox * ) hb_parnl( 1 );
   [box setHidden:YES];
}

HB_FUNC( BOXSHOW )
{
    NSBox * box = ( NSBox * ) hb_parnl( 1 );
    [box setHidden:NO];
}

HB_FUNC( BOXAUTOAJUST )
{
  NSBox * box = ( NSBox * ) hb_parnl( 1 );
  [ box setAutoresizingMask : hb_parnl( 2 )  ]; 
}  
 
en group.prg

Code: Select all

#include "FiveMac.ch"

#define NoMovil          0
#define AnclaRight       1
#define AnchoMovil       2
#define AnclaLeft        4
#define AnclaTop         8
#define AltoMovil       16
#define AnclaBottom     32

// para usar varios defines usar la funcion nOr() 

//----------------------------------------------------------------------------//

CLASS TGroup FROM TControl

   DATA  nAnclaje
      
   METHOD New( nTop, nLeft, nWidth, nHeight, oWnd, cPrompt, nStyle )

   METHOD SetText( cText ) INLINE GetSetText( ::hWnd, cText )

   METHOD GetText() INLINE GetGetText( ::hWnd )
   
   METHOD SetStyle( nStyle ) INLINE BoxSetStyle( ::hWnd, nStyle )
   
   METHOD GetStyle() INLINE BoxGetStyle( ::hWnd )  
   
   METHOD Hide() INLINE BoxHide( ::hWnd )  
   
   METHOD Show() INLINE BoxShow( ::hWnd )    
   
   METHOD Anclaje(nAnclaje) INLINE (::nAnclaje:= nAnclaje , BOXAUTOAJUST(::hwnd,::nAnclaje) )
    
ENDCLASS   

//----------------------------------------------------------------------------//

METHOD New( nTop, nLeft, nWidth, nHeight, oWnd, cPrompt, nStyle ) CLASS TGroup

   DEFAULT nWidth := 100, nHeight := 100, oWnd := GetWndDefault(),;
           cPrompt := "Group", nStyle := 1

   ::hWnd = BoxCreate( nTop, nLeft, nWidth, nHeight, oWnd:hWnd, cPrompt, nStyle )
   ::oWnd = oWnd
   
    ::aControls = {}  
    
   oWnd:AddControl( Self )
   
return Self

//----------------------------------------------------------------------------//


 
Post Reply