Page 1 of 3

XBrowse, ajustar aspecto de las barras de scroll*Solucionado

PostPosted: Mon Jun 01, 2015 1:56 pm
by AngelSalom
Hola amigos, ¿sería posible en un xBrowse ajustar el ancho de la barra vertical de scroll así como el alto de la barra horizontal de scroll?
Estoy diseñando una aplicación para una pantalla táctil de 8 pulgadas y el tamaño actual de las barras lo hace inmanejable.
Probé con esta modificación en el método Initiate del xBrowse sin resultado.

Code: Select all  Expand view
METHOD Initiate( hDlg ) CLASS TXBrowse

   local oBrush

   if ::oBrush != nil
      oBrush := ::oBrush
      ::oBrush := nil
   endif

   if hDlg != nil
      Super:Initiate( hDlg )
//      ::SetColor( CLR_BLACK, GetSysColor( COLOR_WINDOW ) ) // Was resetting colors already set. Now commented out v9.12
   endif

   if ::lVScroll .or. lAnd( GetWindowLong( ::hWnd, GWL_STYLE ), WS_VSCROLL )
      DEFINE SCROLLBAR ::oVScroll VERTICAL OF Self
      /// Modifico ancho
      ::oVScroll:nWidth:=100
   endif

   if ::lHScroll .or. lAnd( GetWindowLong( ::hWnd, GWL_STYLE ), WS_HSCROLL )
      DEFINE SCROLLBAR ::oHScroll HORIZONTAL OF Self
      // Modifico alto
     ::oHScroll:nHeight:=100
   endif
 


Gracias,
Por cierto : Las aplicaciones FW en las tablets con Windows 8.1 van "a toda velocidad" :D :D

Re: XBrowse, ajustar aspecto de las barras de scroll

PostPosted: Mon Jun 01, 2015 2:54 pm
by karinha

Re: XBrowse, ajustar aspecto de las barras de scroll

PostPosted: Mon Jun 01, 2015 3:01 pm
by AngelSalom

Re: XBrowse, ajustar aspecto de las barras de scroll

PostPosted: Mon Jul 06, 2015 9:24 am
by AngelSalom
Up!

Re: XBrowse, ajustar aspecto de las barras de scroll

PostPosted: Mon Jul 06, 2015 2:31 pm
by joseluisysturiz
saludos, no seria mejor si quitas las barras,? asi ocuparia menos espacio el xbrowse, saludos... :shock:

Re: XBrowse, ajustar aspecto de las barras de scroll

PostPosted: Mon Jul 06, 2015 2:45 pm
by Biel EA6DD
Hola Angel, desde programa no creo que se pueda, debes modificar los parámetros WindowsMetrics en el registro.

Creo que lo encontre en microsoft.com, pero tampoco lo se a ciencia cierta, en cualquier caso esto es lo que guarde en mis anotaciones.


1. Press Windows + R keys to open the Run dialog, type regedit, and click/tap OK.

2. If prompted by UAC, then click/tap on Yes.

3. In regedit, navigate to the location below.

HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics

4. In the right pane of WindowMetrics, double click/tap on ScrollHeight to be able to modify it.

5. Type in a data value between -120 to -1500, and click/tap OK.
NOTE: The default value is -255. A higher value (ex: -1000) will give you a wider scrollbar, and lower value (ex: -100) will give you a thinner scrollbar.

6. In the right pane of WindowMetrics, double click/tap on ScrollWidth to be able to modify it.
7. Type in the same data value you entered for "ScrollHeight" in step 5 above, and click/tap OK.
8. Close regedit.
9. Sign-out from your user account, sign-in again and check.

Espero te sea de utilidad. Evidentemente esto no ajusta los scrolls de xBrowse sino todas las barras de scroll de windows. Pero bueno en el fondo casi mejor, pues hace algo más manejable el entorno en modo táctil.

Re: XBrowse, ajustar aspecto de las barras de scroll

PostPosted: Mon Jul 06, 2015 7:18 pm
by cnavarro
Puede ser que algo asi te sirva

Code: Select all  Expand view

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

   hb_retnl( ( LONG ) mi.iScrollWidth );
   //hb_retnl( ( LONG ) mi.iCaptionHeight ) ;
   //hb_retnl( ( LONG ) mi.iMenuHeight ) ;
   //hb_retnl( ( LONG ) mi.iScrollHeight  ) ;  // Scroll Horizontal
   
   // Grabar el valor?

   //mi.iScrollWidth = hb_parnl( 1 );
   //SystemParametersInfo( SPI_SETNONCLIENTMETRICS, Sizeof( mi ), &mi, 0 ); //SPIF_SENDCHANGE);  // Update Win.ini

}

 

Re: XBrowse, ajustar aspecto de las barras de scroll

PostPosted: Tue Jul 07, 2015 8:30 am
by AngelSalom
Hola cnavarro, gracias por la función. Devuelve correctamente el ancho actual pero al descomentar el apartado de grabar el valor y compilar obtengo este error :

Code: Select all  Expand view
Warning W8065 .\\prg\\conta.prg 1166: Call to function 'Sizeof' with no prototype in function HB_FUN_NONCLIENT

Re: XBrowse, ajustar aspecto de las barras de scroll

PostPosted: Tue Jul 07, 2015 10:36 am
by cnavarro
AngelSalom wrote:Hola cnavarro, gracias por la función. Devuelve correctamente el ancho actual pero al descomentar el apartado de grabar el valor y compilar obtengo este error :

Code: Select all  Expand view
Warning W8065 .\\prg\\conta.prg 1166: Call to function 'Sizeof' with no prototype in function HB_FUN_NONCLIENT


Angel, puedes probar

Code: Select all  Expand view

sizeof( NONCLIENTMETRICS )
 

Re: XBrowse, ajustar aspecto de las barras de scroll

PostPosted: Wed Jul 08, 2015 9:11 am
by AngelSalom
Esto es lo que obtengo

Code: Select all  Expand view
Error E2108 .\\prg\\CONTA.prg 1166: Improper use of typedef 'NONCLIENTMETRICS' in function HB_FUN_NONCLIENT
Warning W8065 .\\prg\\CONTA.prg 1166: Call to function 'Sizeof' with no prototype in function HB_FUN_NONCLIENT
*** 1 errors in Compile ***
 

Re: XBrowse, ajustar aspecto de las barras de scroll

PostPosted: Wed Jul 08, 2015 10:01 am
by cnavarro
Intenta en minúsculas: sizeof( mi )

Re: XBrowse, ajustar aspecto de las barras de scroll

PostPosted: Wed Jul 08, 2015 10:44 am
by AngelSalom
¡Ahora perfecto! Muchas gracias!!

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

PostPosted: Wed Jul 08, 2015 10:54 am
by cnavarro
Angel, si no te importa, informa del resultado de tus pruebas
Saludos

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

PostPosted: Wed Jul 08, 2015 12:38 pm
by AngelSalom
Aquí va un ejemplo funcional probando todos los parámetros, el funcionamiento es espectacular ya que se redimensiona todo "al vuelo" ... y de paso aprovecho para preguntarte cómo puedo hacer un hb_ret con un array de los valores antes de modificarlos (para al salir de la aplicación poder dejarlo todo "como estaba")

Code: Select all  Expand view
#include "fivewin.ch"
#include "xbrowse.ch"

Function Main()
Local oDlg, oBrw

   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(), NonClient (25,25,20,20) )
 
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);

   // ¿Cómo devolver un array con los valores?
   
   //hb_retnl( ( LONG ) mi.iScrollWidth );
   //hb_retnl( ( LONG ) mi.iCaptionHeight ) ;
   //hb_retnl( ( LONG ) mi.iMenuHeight ) ;
   //hb_retnl( ( LONG ) mi.iScrollHeight  ) ;  // Scroll Horizontal
   
   // 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

 

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

PostPosted: Wed Jul 08, 2015 12:55 pm
by AngelSalom
Respecto a devolver un array con los valores antes de modificarlos estoy probando con este código dentro de la función nonclient

Code: Select all  Expand view
hb_reta(4);
   hb_stornl(mi.iScrollWidth, -1, 1);
   hb_stornl(mi.iScrollHeight,-1, 2);
   hb_stornl(mi.iCaptionHeight, -1, 3);
   hb_stornl(mi.iMenuHeight, -1, 4);
   


Pero al compilarlo arroja :

Code: Select all  Expand view

Compiling...
Harbour 3.1.0dev (Rev. 17025)
Copyright (c) 1999-2011, http://harbour-project.org/
Compiling 'testscr.prg' and generating preprocessed output to 'testscr.ppo'...
Lines 4096, Functions/Procedures 1
Generating C source output to 'testscr.c'... Done.
Borland C++ 5.82 for Win32 Copyright (c) 1993, 2005 Borland
testscr.c:
Error E2227 testscr.prg 37: Extra parameter in call to hb_stornl in function HB_FUN_NONCLIENT
Error E2227 testscr.prg 38: Extra parameter in call to hb_stornl in function HB_FUN_NONCLIENT
Error E2227 testscr.prg 39: Extra parameter in call to hb_stornl in function HB_FUN_NONCLIENT
Error E2227 testscr.prg 40: Extra parameter in call to hb_stornl in function HB_FUN_NONCLIENT
*** 4 errors in Compile ***
* Linking errors *