Posible mejora para tGet

Posible mejora para tGet

Postby mastintin » Thu May 30, 2013 7: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: Select all  Expand view


.....
 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

.....

 
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Posible mejora para tGet

Postby Antonio Linares » Thu May 30, 2013 8:15 am

Manuel,

Te refieres al grosor del caret ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Posible mejora para tGet

Postby mastintin » Thu May 30, 2013 9: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 .
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Posible mejora para tGet

Postby lucasdebeltran » 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.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: Posible mejora para tGet

Postby mastintin » Thu May 30, 2013 1: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.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Posible mejora para tGet

Postby lucasdebeltran » Thu May 30, 2013 6: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.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: Posible mejora para tGet

Postby mastintin » Thu May 30, 2013 8: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. :D
Code: Select all  Expand view


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 . :D
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.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Posible mejora para tGet

Postby horacio » Thu May 30, 2013 9:40 pm

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

Saludos
horacio
 
Posts: 1358
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Posible mejora para tGet

Postby lucasdebeltran » Thu May 30, 2013 9: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.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: Posible mejora para tGet

Postby cnavarro » Thu May 30, 2013 9: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
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 91 guests