FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Posible mejora para tGet
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Posible mejora para tGet
Posted: Thu May 30, 2013 07:56 AM
Un compañero al usar un programa me ha preguntado porque nuestro programas tienen un Caret que se comporta justo al reves del estandar de windows . Le explique que imitaba el comportamiento de clipper y me replicó que cuantos de los usuarios actuales usaron ese comportamiento del "medievo" ( con esas palabras justas me lo describío , y me dejo como si fuera un tipo con armadura medieval :-) ) .
Buscando una solución he hecho unas modificaciones a la clase que puede que vengan bien a alguien o incluso se puedan incorporar .

He creado una CLASSDATA nueva lWinCaret iniciada a .f. que marca si queremos o no que nuestro programa se comporte como siempre o justo al reves.

Dejo los cambios ( pequeños ) a la clase :

Code (fw): Select all Collapse
.....
 CLASSDATA lWinCaret  INIT .F.
......

en :

METHOD KeyDown( nKey, nFlags ) CLASS TGet
.....
   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 ::lWinCaret
              if Set( _SET_INSERT )
                 CreateCaret( ::hWnd, 0, 2, ::nGetChrHeight() )
              else
                 CreateCaret( ::hWnd, 0, 6, ::nGetChrHeight()-1 )
             endif
           else
              if Set( _SET_INSERT )
                 CreateCaret( ::hWnd, 0, 6, ::nGetChrHeight() - 1 )
              else
                 CreateCaret( ::hWnd, 0, 2, ::nGetChrHeight() )
             endif
           endif
           ShowCaret( ::hWnd )
           return 0

.......

En METHOD GotFocus( hCtlLost ) CLASS TGet
.....

       if ::oGet:Type $ "DN" .or. ::oGet:Pos != 1 // 28/06/05 AL
          ::nPos := ::oGet:Pos // 1   28/06/05 AL
       endif
       ::oGet:Pos := ::nPos
       ::SetPos( ::nPos )
       CallWindowProc( ::nOldProc, ::hWnd, WM_SETFOCUS )
        
       IF ::lwinCaret
           DestroyCaret()
           if Set( _SET_INSERT )
               CreateCaret( ::hWnd, 0, 2, ::nGetChrHeight() )
           ELSE
               CreateCaret( ::hWnd, 0, 6, ::nGetChrHeight()-1 )
           ENDIF
           ShowCaret( ::hWnd )
      ELSE
          if Set( _SET_INSERT )
             DestroyCaret()
             CreateCaret( ::hWnd, 0, 6, ::nGetChrHeight()-1 )
          endif
          ShowCaret( ::hWnd )
       ENDIF
    else
       HideCaret( ::hWnd )
    endif

.....
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Posible mejora para tGet
Posted: Thu May 30, 2013 08:15 AM

Manuel,

Te refieres al grosor del caret ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: Posible mejora para tGet
Posted: Thu May 30, 2013 09:57 AM

Antonio me refiero a que el caret que aparece como insertar es el que otros programas usan como no inserción y el caret que aparece como normal es el que usan otros programas para la inserción . por ejemplo en el ultraedit , funciona como describo , en el xMate tambien . en otros programas directamente no se cambia .Sería bueno poder controlar ese comportamiento .

Posts: 1303
Joined: Tue Jul 21, 2009 08:12 AM
Re: Posible mejora para tGet
Posted: Thu May 30, 2013 12:42 PM

Por favor, estos cambios requieren mucha precaución, porque pueden estropear la clase como ha sucedido con Combobox, que lleva varios meses dando problemas.

Por favor, máxima precaución y adecuado testeo. Además, siempre es posible hacer una derived class para uso personal.

Muchas gracias.

Un saludo

Muchas gracias. Many thanks.



Un saludo, Best regards,



Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]



Implementando MSVC 2010, FWH64 y ADO.



Abandonando uso xHarbour y SQLRDD.
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: Posible mejora para tGet
Posted: Thu May 30, 2013 01:34 PM
lucasdebeltran wrote:Por favor, estos cambios requieren mucha precaución, porque pueden estropear la clase como ha sucedido con Combobox, que lleva varios meses dando problemas.

Por favor, máxima precaución y adecuado testeo. Además, siempre es posible hacer una derived class para uso personal.

Muchas gracias.

Un saludo

Los cambios están testeados , son mínimos , solo afectan al aspecto del Caret , y si no se toca la nueva data ( se deja por defecto ) el programa pasa exactamente por las misma "lineas" que hasta ahora por lo que no hay peligro de romper nada hacia atrás.
Posts: 1303
Joined: Tue Jul 21, 2009 08:12 AM
Re: Posible mejora para tGet
Posted: Thu May 30, 2013 06:00 PM

Manuel,

Muchas gracias por tus aportaciones y ayuda al foro. Sin embargo, discrepo de los testeos "suficientes", porque, por ejemplo, no has aportado un ejemplo autocontenido y nadie más de aquí ha probado los cambios.

Hay que tener muchísimo cuidado en tocar las clases estructurales de FWH, porque luego nos hacen perder mucho tiempo y nos impiden poder usar las últimas versiones, y hay que estar re-testeando todo de nuevo.

Fíjate en el caso del combobox que está muy reciente. Ojalá que FWH 13.05 vuelva a ser estable 100%, porque los cambios que Mr. Nages ha realizado en el xBrowse son muy buenos (y le he descubierto varios bugs en la pasada build que amablemente ha solucionado en un tiempo récord y muy eficaz y atento).

Un saludo

Muchas gracias. Many thanks.



Un saludo, Best regards,



Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]



Implementando MSVC 2010, FWH64 y ADO.



Abandonando uso xHarbour y SQLRDD.
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: Posible mejora para tGet
Posted: Thu May 30, 2013 08:48 PM
lucasdebeltran wrote:Manuel,
no has aportado un ejemplo autocontenido y nadie más de aquí ha probado los cambios.

Realmente no se de que manera podría realizar un ejemplo autocontenido en este caso. Seria el testget2.prg con una linea añadida .Luego solo es ver como se ve ahora el cursor y como se modifica el cursor pulsando la tecla insertar. No es una mejora , solamente que me han requerido que se comporte así por similitud con otros programas. :-)
Code (fw): Select all Collapse
Function Main()
   Local oDlg
   Local oGet
   local cVar := space( 10 )

   DEFINE DIALOG oDlg from 0,0 to 400,400 pixel

   @ 15,15 get oGet var cVar picture "@!"  bitmap "..\bitmaps\chkyes.bmp" action( msginfo( "action" ) );
   size 120,12 of oDlg pixel
   oGet:lAdjustBtn := .t.  
   oGet:lWinCaret := .t.

   ACTIVATE DIALOG oDlg 
 
 return nil


lucasdebeltran wrote:Manuel,

Hay que tener muchísimo cuidado en tocar las clases estructurales de FWH, porque luego nos hacen perder mucho tiempo y nos impiden poder usar las últimas versiones, y hay que estar re-testeando todo de nuevo.
Fíjate en el caso del combobox que está muy reciente.



Estoy contigo , yo tambien he sufrido el problema del combobox :-) . Pero creeme que he tenido sumo cuidado de no tocar para nada la clase ( tu mismo lo puedes ver en el código ) . Respecto al testeo , te diré que el requerimiento fué de una Jefatura de Profesores de instituto , lo han estado usando varios profesores durante una semana y no han comunicado ningún problema . :-)
Solo quiero que quede en el foro por si alguien lo necesita , y con no usarlo el problema está resuelto .
Saludos , y agradecerte los comentarios ,siempre es agradable debatir sobre estos temas.
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Posible mejora para tGet
Posted: Thu May 30, 2013 09:40 PM

Gracias Manuel por tu solución, esto estuve buscando por largo tiempo.

Saludos

Posts: 1303
Joined: Tue Jul 21, 2009 08:12 AM
Re: Posible mejora para tGet
Posted: Thu May 30, 2013 09:43 PM

Manuel,

Muchas gracias. Si me envías la clase modificada le ponemos antes como main() tu ejemplo y lo pruebo encantado.

Muchas gracias. Many thanks.



Un saludo, Best regards,



Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]



Implementando MSVC 2010, FWH64 y ADO.



Abandonando uso xHarbour y SQLRDD.
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Posible mejora para tGet
Posted: Thu May 30, 2013 09:45 PM

Gracias Manuel
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

Continue the discussion