Page 1 of 1

Modificar la rayita del cursor: en GET

PostPosted: Thu Jun 04, 2015 4:26 pm
by noe aburto
Saludote:

Examinando la clase tget, veo:

Set( _SET_INSERT, ! Set( _SET_INSERT ) )
DestroyCaret()
if Set( _SET_INSERT )
CreateCaret( ::hWnd, 0, 6, ::nGetChrHeight() - 1 )
else
CreateCaret( ::hWnd, 0, 2, ::nGetChrHeight() )
endif
ShowCaret( ::hWnd )

he intentado hacer que mi cursor en la edicion de TODOS los get'a, sea un poco mas ancho (del 2 al 3) poniendo en el metodo oGet:New() (ver en lugar de una simple rayita titilante del cursor, ver la misma pero con el doble de ancho)

DestroyCaret()
CreateCaret( ::hWnd, 0, 3, ::nGetChrHeight() ) // 3 o 4
ShowCaret( ::hWnd )

y no me resulta, una manita porfa:

Re: Modificar la rayita del cursor: en GET

PostPosted: Thu Jun 04, 2015 4:51 pm
by Armando
Noe:

Supongo que la necesidad de ampliar el cursor es porque para el usuario no es claro
en que get está el cursor, si es así, una opción es que le cambies el color del fondo
cuando el get tenga el foco y se lo vuelves a cambiar cuando lo pierda.

Saludos

Re: Modificar la rayita del cursor: en GET

PostPosted: Thu Jun 04, 2015 8:44 pm
by noe aburto
Gracias Armando.

precisamente asi tengo ya definido los gets, cambia de color con el foco, y cuando lo dejo.
Pero, en realidad como mensionas, para algunas personas por su vision se les complica identificar aun alli, la posicion del cursor.

entonces, debo tener la posibilidad de configurar en algunos casos asi el cursor.

Re: Modificar la rayita del cursor: en GET

PostPosted: Fri Jun 05, 2015 9:11 am
by Antonio Linares
Noé,

Tendrías que modificar la clase TGet y buscar estas líneas:

CreateCaret( ::hWnd, 0, 1, ::nGetChrHeight() )

y reemplazarlas con:

CreateCaret( ::hWnd, 0, 6, ::nGetChrHeight() )

Puedes probar con otros valores diferentes a 6. Luego compila y enlaza el tget.prg modificado por ti
como si fuese un PRG más de tu aplicación.

Re: Modificar la rayita del cursor: en GET

PostPosted: Fri Jun 05, 2015 5:53 pm
by noe aburto
Antonio Linares:

De echo modificar el tget fue lo primero que hice
el metodo KeyDown() tiene

case nKey == VK_INSERT .and. ! GetKeyState( VK_SHIFT ) ;
.and. ! GetKeyState( VK_CONTROL ) // to copy to the clipboard

Set( _SET_INSERT, ! Set( _SET_INSERT ) )
DestroyCaret()
if Set( _SET_INSERT )
CreateCaret( ::hWnd, 0, 6, ::nGetChrHeight() - 1 )
else
CreateCaret( ::hWnd, 0, 3, ::nGetChrHeight() )
endif
ShowCaret( ::hWnd )
return 0

y el GotFocus()

if Set( _SET_INSERT )
DestroyCaret()
CreateCaret( ::hWnd, 0, 6, ::nGetChrHeight() - 1 )
ShowCaret( ::hWnd )
endif

y son las unicas lineas con la definicion del CreateCaret()

lo ligo a mi libreria y no lo hace, solo al teclear INSERT, pone el cursor como insercion, y al volver a oprimir INSERT si lo pone a 3 como lo modifico, pero solo en ese get, no en los demas. (no se de que version del tget me hables o de FWH


Ayuda.

Re: Modificar la rayita del cursor: en GET

PostPosted: Fri Jun 05, 2015 6:04 pm
by noe aburto
Antonio.

modifique la clase tget nuevamente:

delntro del metodo GotFocus()

if Set( _SET_INSERT )
DestroyCaret()
CreateCaret( ::hWnd, 0, 6, ::nGetChrHeight() - 1 )
ShowCaret( ::hWnd )
else
DestroyCaret()
CreateCaret( ::hWnd, 0, 3, ::nGetChrHeight() )
ShowCaret( ::hWnd )
endif

y ya me pone el curso a 3, pero como le puedria quitar el 'BLINK' (parpadear)

gracias.

Re: Modificar la rayita del cursor: en GET

PostPosted: Fri Jun 05, 2015 7:42 pm
by Antonio Linares
Noé,

Por lo visto hay una función de Windows a la que se puede llamar:

BOOL SetCaretBlinkTime(
UINT uMSeconds //blink time in milliseconds
);

Prueba a añadir esta nueva función a tu PRG principal

Code: Select all  Expand view
#include <windows.h>
#include <hbapi.h>

HB_FUNC( SETCARETBLINKTIME )
{
   hb_retl( SetCaretBlinkTime( hb_parnl( 1 ) ) );
}

 


Y desde tu PRG prueba a llamar a:

SetCaretBlinkTime( 0 )

Prueba con otros valores distintos a cero también