XBrowse, ajustar aspecto de las barras de scroll*Solucionado

User avatar
cnavarro
Posts: 6558
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

Post by cnavarro »

HAs probado con hb_storvni(
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
AngelSalom
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España
Has thanked: 1 time
Contact:

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

Post by AngelSalom »

Si, he llegado a esa conclusión pero lo curioso es que me devuelve un array de dos elementos y con valores NIL. Copio de nuevo el ejemplo modificado.

Code: Select all | Expand

#include "fivewin.ch"
#include "xbrowse.ch"

Function Main()
Local oDlg, oBrw, aValues:={}, nC

   DEFINE DIALOG oDlg SIZE 300, 200

   @ 0, 0 XBROWSE oBrw OF oDlg ARRAY { { "one","two","three" } } AUTOCOLS
     
   oBrw:CreateFromCode()
     
   ACTIVATE DIALOG oDlg CENTER ON INIT ( oDlg:oClient := oBrw, oDlg:Resize(), aValues:=NonClient (25,25,20,20) )
   
   For nC:=1 to len (avalues)
     msginfo (avalues[nc])
   next
 
Return (nil)

#pragma BEGINDUMP
#include "windows.h"
#include "hbapi.h"
#include "hbcomp.h"


HB_FUNC ( NONCLIENT )
{
   
   NONCLIENTMETRICS mi;
   
   memset( ( char * ) &mi, 0, sizeof( NONCLIENTMETRICS ) );
   mi.cbSize = sizeof( NONCLIENTMETRICS );
   SystemParametersInfo( SPI_GETNONCLIENTMETRICS, 0, &mi, 0);

   // Devuelvo un array con los valores antes de cambiarlos
   
   hb_reta(4);
   hb_storvni(mi.iScrollWidth, -1, 1);
   hb_storvni(mi.iScrollHeight,-1, 2);
   hb_storvni(mi.iCaptionHeight, -1, 3);
   hb_storvni(mi.iMenuHeight, -1, 4);
   
   // Grabar el valor

   mi.iScrollWidth = hb_parnl( 1 );
   mi.iScrollHeight = hb_parnl( 2 );
   mi.iCaptionHeight = hb_parnl ( 3 );
   mi.iMenuHeight = hb_parnl ( 4 );
   
   SystemParametersInfo( SPI_SETNONCLIENTMETRICS, sizeof( mi ), &mi, 0 ); //SPIF_SENDCHANGE);  // Update Win.ini

}


#pragma ENDDUMP

 
 
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
cnavarro
Posts: 6558
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

Post by cnavarro »

Cuales te devuelven nil?

Code: Select all | Expand



typedef struct tagNONCLIENTMETRICS {
  UINT    cbSize;
  int     iBorderWidth;
  int     iScrollWidth;
  int     iScrollHeight;
  int     iCaptionWidth;
  int     iCaptionHeight;
  LOGFONT lfCaptionFont;
  int     iSmCaptionWidth;
  int     iSmCaptionHeight;
  LOGFONT lfSmCaptionFont;
  int     iMenuWidth;
  int     iMenuHeight;
  LOGFONT lfMenuFont;
  LOGFONT lfStatusFont;
  LOGFONT lfMessageFont;
#if (WINVER >= 0x0600)
  int     iPaddedBorderWidth;
#endif
} NONCLIENTMETRICS, *PNONCLIENTMETRICS, *LPNONCLIENTMETRICS;

 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
AngelSalom
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España
Has thanked: 1 time
Contact:

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

Post by AngelSalom »

Cristóbal, no me aclaro demasiado ... ¿con este código no debería cargar y devolver un array de cuatro valores con mi.iScrollWidth, mi.iScrollHeight, mi.iCaptionHeight y mi.iMenuHeight ???

Code: Select all | Expand

hb_reta(4);
   hb_storvni(mi.iScrollWidth, -1, 1);
   hb_storvni(mi.iScrollHeight,-1, 2);
   hb_storvni(mi.iCaptionHeight, -1, 3);
   hb_storvni(mi.iMenuHeight, -1, 4);
 


a eso me refiero cuando digo que me devuelve un array únicamente con 2 elementos y los dos a NIL. Quizás me esté confundiendo y lo que recibo es la estructura que comentas?
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
cnavarro
Posts: 6558
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

Post by cnavarro »

Angel, tal y como lo tienes a mi me devuelve el array con los 4 valores correctos, pero prueba a realizar dos funciones: una para el Get y otra para el Set

O sea, una function

Code: Select all | Expand


#pragma BEGINDUMP
#include "windows.h"
#include "hbapi.h"
#include "hbcomp.h"


HB_FUNC ( NONCLIENTGET )
{
   
   NONCLIENTMETRICS mi;
   
   memset( ( char * ) &mi, 0, sizeof( NONCLIENTMETRICS ) );
   mi.cbSize = sizeof( NONCLIENTMETRICS );
   SystemParametersInfo( SPI_GETNONCLIENTMETRICS, 0, &mi, 0);

   // Devuelvo un array con los valores antes de cambiarlos
   
   hb_reta(4);
   hb_storvni(mi.iScrollWidth, -1, 1);
   hb_storvni(mi.iScrollHeight,-1, 2);
   hb_storvni(mi.iCaptionHeight, -1, 3);
   hb_storvni(mi.iMenuHeight, -1, 4);
   
}

 


y otra

Code: Select all | Expand


HB_FUNC ( NONCLIENTSET )
{
   
   NONCLIENTMETRICS mi;
   
   memset( ( char * ) &mi, 0, sizeof( NONCLIENTMETRICS ) );
   mi.cbSize = sizeof( NONCLIENTMETRICS );
   SystemParametersInfo( SPI_GETNONCLIENTMETRICS, 0, &mi, 0);

   // Grabar el valor

   mi.iScrollWidth = hb_parnl( 1 );
   mi.iScrollHeight = hb_parnl( 2 );
   mi.iCaptionHeight = hb_parnl ( 3 );
   mi.iMenuHeight = hb_parnl ( 4 );
   
   SystemParametersInfo( SPI_SETNONCLIENTMETRICS, sizeof( mi ), &mi, 0 ); //SPIF_SENDCHANGE);  // Update Win.ini

}


#pragma ENDDUMP

 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
AngelSalom
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España
Has thanked: 1 time
Contact:

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

Post by AngelSalom »

Curioso, con las funciones por separado ya funcionó perfecto. Gracias por todo!
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
cnavarro
Posts: 6558
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

Post by cnavarro »

Angel, si puedes pon alguna imagen del control con las modificaciones. Seria de agradecer
Saludos
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
AngelSalom
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España
Has thanked: 1 time
Contact:

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

Post by AngelSalom »

Por supuesto, ¡qué menos! :D :D

Aquí va el último ejemplo completo :

Code: Select all | Expand

#include "fivewin.ch"
#include "xbrowse.ch"

Function Main()
Local oDlg, oBrw, aValues:={}, nC

   DEFINE DIALOG oDlg SIZE 300, 200 TITLE "Probando redimensión de scroll y captions"

   @ 0, 0 XBROWSE oBrw OF oDlg ARRAY { { "one","two","three" } } AUTOCOLS
     
   oBrw:CreateFromCode()
     
   ACTIVATE DIALOG oDlg CENTER ON INIT ( oDlg:oClient := oBrw, oDlg:Resize(), aValues:=NonClientGet (), NonClientSet (30,30,50,50) )
   NonClientSet (aValues[1],aValues[2],aValues[3],aValues[4])
 
Return (nil)

#pragma BEGINDUMP
#include "windows.h"
#include "hbapi.h"
#include "hbcomp.h"


#pragma BEGINDUMP
#include "windows.h"
#include "hbapi.h"
#include "hbcomp.h"


HB_FUNC ( NONCLIENTGET )
{
   
   NONCLIENTMETRICS mi;
   
   memset( ( char * ) &mi, 0, sizeof( NONCLIENTMETRICS ) );
   mi.cbSize = sizeof( NONCLIENTMETRICS );
   SystemParametersInfo( SPI_GETNONCLIENTMETRICS, 0, &mi, 0);

   // Devuelvo un array con los valores antes de cambiarlos
   
   hb_reta(4);
   hb_storvni(mi.iScrollWidth, -1, 1);
   hb_storvni(mi.iScrollHeight,-1, 2);
   hb_storvni(mi.iCaptionHeight, -1, 3);
   hb_storvni(mi.iMenuHeight, -1, 4);
   
}


HB_FUNC ( NONCLIENTSET )
{
   
   NONCLIENTMETRICS mi;
   
   memset( ( char * ) &mi, 0, sizeof( NONCLIENTMETRICS ) );
   mi.cbSize = sizeof( NONCLIENTMETRICS );
   SystemParametersInfo( SPI_GETNONCLIENTMETRICS, 0, &mi, 0);

   // Grabar el valor

   mi.iScrollWidth = hb_parnl( 1 );
   mi.iScrollHeight = hb_parnl( 2 );
   mi.iCaptionHeight = hb_parnl ( 3 );
   mi.iMenuHeight = hb_parnl ( 4 );
   
   SystemParametersInfo( SPI_SETNONCLIENTMETRICS, sizeof( mi ), &mi, 0 ); //SPIF_SENDCHANGE);  // Update Win.ini

}

 
#pragma ENDDUMP

 
 


Y aquí la imagen del diálogo "transformado"

Image
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
Biel EA6DD
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca
Contact:

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

Post by Biel EA6DD »

Super, buen aporte Cristobal, y gracias por el ejemplo de la implementación Angel.

Yo hasta la fecha lo hacia modificando los valores del registro, pero es mucho más elegante el poder hacerlo desde la propia aplicación, gracias a ambos.
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
cnavarro
Posts: 6558
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

Post by cnavarro »

Angel, genial
Quizás habría que usar hb_parni y hacer que devuelva o grabe solo el parámetro deseado

Ariel, como comentó Angel al principio del hilo, es fundamental para los dispositivos táctiles
Desde que me puse con Fivetouch, que sí lo contempla, son detalles que me han interesado enormemente ya que las aplicaciones Fwh "vuelan" en las tablets Windows pero a nivel funcional dejaban un poco que desear por el tamaño de algunos controles.

Ahora toca modificar el font del caption de los dialogos, no?, por ejemplo
A ver si alguien se anima

Code: Select all | Expand



// Algo asi
   #ifdef _WIN64
   LONG nPos = hb_parnll( 1 );
   #else
   LONG nPos = hb_parnl( 1 );
   #endif

  NONCLIENTMETRICS mi;

   memset( ( char * ) &mi, 0, sizeof( NONCLIENTMETRICS ) );
   mi.cbSize = sizeof( NONCLIENTMETRICS );
   SystemParametersInfo( SPI_GETNONCLIENTMETRICS, 0, &mi, 0);

   switch( nPos )
   {
      case  1:
           hb_retni( mi.iBorderWidth );
           break;
      case  2:
           hb_retni( mi.iScrollWidth );
      case  3:
           hb_retni( mi.iScrollHeight );
      case  4:
           hb_retni( mi.iCaptionWidth );
      case  5:
           hb_retni( mi.iCaptionHeight );
      case  6:
           hb_retni( mi.iSmCaptionWidth );
      case  7:
           hb_retni( mi.iSmCaptionHeight );
      case  8:
           hb_retni( mi.iMenuWidth );
      case  9:
           hb_retni( mi.iMenuHeight );
   }

 
Last edited by cnavarro on Thu Jul 09, 2015 3:02 pm, edited 1 time in total.
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
AngelSalom
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España
Has thanked: 1 time
Contact:

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

Post by AngelSalom »

Bien, no es complicado modificar el tipo de letra ahora que ya tenemos a estructura. Esto devuelve un array con algunos datos de la fuente actual :

Code: Select all | Expand


         hb_reta(3);
         hb_storvc (mi.lfCaptionFont.lfFaceName, -1, 1);
          hb_storvni (mi.lfCaptionFont.lfHeight, -1, 2);
          hb_storvni (mi.lfCaptionFont.lfWidth, -1, 3);
          break;


Ya es cuestión de hacer la función que, ya puestos, me pongo a acabarla y mejorarla como sugiere Cristóbal.
Por cierto, ¿cómo le paso un array desde harbour a la función en C? ... de este modo para ajustar la fuente se le podría pasar NonClientPutOptions ( [nOpcion], nValor, {"Fuente",nAlto,nAncho}) ... ¿qué os parece?
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
cnavarro
Posts: 6558
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

Post by cnavarro »

Angel, adjunto las funciones que tengo hechas

Code: Select all | Expand



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

HB_FUNC ( NONCLIENT )
{

   NONCLIENTMETRICS mi;

   memset( ( char * ) &mi, 0, sizeof( NONCLIENTMETRICS ) );
   mi.cbSize = sizeof( NONCLIENTMETRICS );
   SystemParametersInfo( SPI_GETNONCLIENTMETRICS, 0, &mi, 0);

#if (WINVER >= 0x0600)
   hb_reta(10);
#else
   hb_reta(9);
#endif
   hb_storvni(mi.iBorderWidth, -1, 1);         // 5
   hb_storvni(mi.iScrollWidth, -1, 2);         //17
   hb_storvni(mi.iScrollHeight,-1, 3);         //17
   hb_storvni(mi.iCaptionWidth, -1, 4);        //36
   hb_storvni(mi.iCaptionHeight, -1, 5);       //22
   hb_storvni(mi.iSmCaptionWidth, -1, 6);      //22
   hb_storvni(mi.iSmCaptionHeight, -1, 7);     //22
   hb_storvni(mi.iMenuWidth, -1, 8);           //19
   hb_storvni(mi.iMenuHeight, -1, 9);          //19
#if (WINVER >= 0x0600)
   hb_storvni(mi.iPaddedBorderWidth, -1, 10);  // 0
#endif

}

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

HB_FUNC ( GETNONCLIENT )    // nPos
{

   INT nPos = hb_parni( 1 );
   INT nVal;

   NONCLIENTMETRICS mi;

   memset( ( char * ) &mi, 0, sizeof( NONCLIENTMETRICS ) );
   mi.cbSize = sizeof( NONCLIENTMETRICS );
   SystemParametersInfo( SPI_GETNONCLIENTMETRICS, 0, &mi, 0);

   switch( nPos )
   {
      case  1:
           nVal = mi.iBorderWidth;
           break;
      case  2:
           nVal = mi.iScrollWidth;
           break;
      case  3:
           nVal = mi.iScrollHeight;
           break;
      case  4:
           nVal =  mi.iCaptionWidth;
           break;
      case  5:
           nVal = mi.iCaptionHeight;
           break;
      case  6:
           nVal = mi.iSmCaptionWidth;
           break;
      case  7:
           nVal = mi.iSmCaptionHeight;
           break;
      case  8:
           nVal = mi.iMenuWidth;
           break;
      case  9:
           nVal = mi.iMenuHeight;
           break;
   }
   hb_retni( nVal );
}

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

HB_FUNC ( SETNONCLIENT )    // nPos , uVal, ActWinIni
{
   INT nPos     = hb_parni( 1 );
   INT nVal     = hb_parni( 2 );
   BOOL bActIni = hb_parl( 3 );

   NONCLIENTMETRICS mi;

   memset( ( char * ) &mi, 0, sizeof( NONCLIENTMETRICS ) );
   mi.cbSize = sizeof( NONCLIENTMETRICS );
   SystemParametersInfo( SPI_GETNONCLIENTMETRICS, 0, &mi, 0);

   switch( nPos )
   {
      case  0:   // Actualizar todo
           //mi.iBorderWidth     = nVal;
           mi.iScrollWidth     = nVal+12;
           mi.iScrollHeight    = nVal+12;
           mi.iCaptionWidth    = nVal+21;
           mi.iCaptionHeight   = nVal+17;
           mi.iSmCaptionWidth  = nVal+17;
           mi.iSmCaptionHeight = nVal+17;
           mi.iMenuWidth       = nVal+12;
           mi.iMenuHeight      = nVal+12;
           break;
      case  1:
           mi.iBorderWidth = nVal;
           break;
      case  2:
           mi.iScrollWidth = nVal;
           break;
      case  3:
           mi.iScrollHeight = nVal;
           break;
      case  4:
           mi.iCaptionWidth = nVal;
           break;
      case  5:
           mi.iCaptionHeight = nVal;
           break;
      case  6:
           mi.iSmCaptionWidth = nVal;
           break;
      case  7:
           mi.iSmCaptionHeight = nVal;
           break;
      case  8:
           mi.iMenuWidth = nVal;
           break;
      case  9:
           mi.iMenuHeight = nVal;
           break;
   }

   if ( bActIni )
     SystemParametersInfo( SPI_SETNONCLIENTMETRICS, sizeof( mi ), &mi, SPIF_SENDCHANGE);  // Update Win.ini
   else
     SystemParametersInfo( SPI_SETNONCLIENTMETRICS, sizeof( mi ), &mi, 0 ); // NO Update Win.ini

}

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

 


Como hay en la struct varias LOGFONT, la function puede ser generica y hacerla con un switch
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
Posts: 6558
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

Post by cnavarro »

AngelSalom wrote:Bien, no es complicado modificar el tipo de letra ahora que ya tenemos a estructura. Esto devuelve un array con algunos datos de la fuente actual :
Por cierto, ¿cómo le paso un array desde harbour a la función en C? ... de este modo para ajustar la fuente se le podría pasar NonClientPutOptions ( [nOpcion], nValor, {"Fuente",nAlto,nAncho}) ... ¿qué os parece?


Angel,
viewtopic.php?f=3&t=19703&p=103914&hilit=parameter+array+a+function+c#p103915

Aunque creo que no era lo que preguntabas
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
AngelSalom
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España
Has thanked: 1 time
Contact:

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

Post by AngelSalom »

Si,si. Eso era lo que necesitaba saber. Así para definir el tipo de letra le enviaré a la función un array con ["nombre",alto,ancho]
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España
Has thanked: 1 time
Contact:

Re: XBrowse, ajustar aspecto de las barras de scroll*Solucionado

Post by AngelSalom »

Bueno, pues sí que va quedando bien la cosa ... con estos ajustes las aplicaciones FW en tablets con W8 toman otra dimensión :mrgreen: :mrgreen:

Image
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
Post Reply