XBrowse, ajustar aspecto de las barras de scroll*Solucionado

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

Postby cnavarro » Wed Jul 08, 2015 1:07 pm

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
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

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

Postby AngelSalom » Wed Jul 08, 2015 1:26 pm

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 view  RUN
#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
AngelSalom
 
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

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

Postby cnavarro » Wed Jul 08, 2015 1:29 pm

Cuales te devuelven nil?

Code: Select all  Expand view  RUN


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
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

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

Postby AngelSalom » Wed Jul 08, 2015 1:50 pm

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 view  RUN
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
AngelSalom
 
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

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

Postby cnavarro » Wed Jul 08, 2015 3:02 pm

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 view  RUN

#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 view  RUN

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
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

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

Postby AngelSalom » Wed Jul 08, 2015 3:30 pm

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
AngelSalom
 
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

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

Postby cnavarro » Wed Jul 08, 2015 3:46 pm

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
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

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

Postby AngelSalom » Wed Jul 08, 2015 4:31 pm

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

Aquí va el último ejemplo completo :

Code: Select all  Expand view  RUN
#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
AngelSalom
 
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

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

Postby Biel EA6DD » Wed Jul 08, 2015 5:00 pm

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
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

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

Postby cnavarro » Wed Jul 08, 2015 5:47 pm

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 view  RUN


// 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
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

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

Postby AngelSalom » Thu Jul 09, 2015 9:41 am

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 view  RUN

         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
AngelSalom
 
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

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

Postby cnavarro » Thu Jul 09, 2015 10:30 am

Angel, adjunto las funciones que tengo hechas

Code: Select all  Expand view  RUN


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

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: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

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

Postby cnavarro » Thu Jul 09, 2015 10:54 am

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
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

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

Postby AngelSalom » Thu Jul 09, 2015 1:11 pm

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

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

Postby AngelSalom » Thu Jul 09, 2015 1:37 pm

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
User avatar
AngelSalom
 
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

PreviousNext

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 57 guests