GET sin longitud con espacios blancos
GET sin longitud con espacios blancos
El tema que me ocupa ahora... el GET.
Resulta que de antaño, Clipper a la hora de solicitar los datos, se comportó de una forma que con la evolución informática no se corresponde.
Las DBFs se definian _ Caracter con anchura máxima que íbamos a preveer y eso al guardar los datos de registros ocupaba un espacio innecesario.
Con _ (SQL por ejemplo) las bases de datos se definen _ casi igual, pero al guardar los registros SOLO se guarda el espacio que ocupan los datos introducidos, no el ancho total definido.
Creo que es así, sinó que alguine me corrija.
Bien, la pregunta... FW veo que sigue arrastrando la forma de introducción de datos del antigui GET.
Pero, hay alguna forma de que se comporte de manera que solo se vean los datos que ocupa ese campo???
Por ejemplo...
Si tenemos una variable/campo tipo caracter contenido "Maria"
al hacer un GET, de esa variable me deja cambiar esos datos, si, pero SOLO me va a dejar introducir 5 carácteres. Así pues no puedo cambiar ese valor por "Maria de las Mercedes", ni tan siquiera que el campo de la tabla permita una longitud de 25 caracteres.
Por contra, si la variable la defino con valor "Maria"+Space(20), me dejará escribir i cambiar el contenido hasta los 25 caracteres, hasta ahí correcto... PERO si hago clic en una zona "vacia" a partir del caracter 6, se ve que hay espacios en blanco formando parte de su contenido... y ese efecto es "feo", muy feo.
Cuando veo que después de lo escrito, hay espacios en blanco, pienso en MSDOS y como se trabajava en Clipper. Los programas "modernos" la captura de datos son sin espaciados a la derecha. Cualquier programa en entorno Windows/Mac, incluso los formularios web, al introducir los datos no tienes un campo en blanco de longitud fija que vas rellenando, sinó que a medida que vas escribiendo se va rellenando el contenido, hasta llegar a un límite, o no.
Hay alguna variante, propiedad, clase que se haya desarrollado o que alguien esté utilizando para salvar este comportamiento del GET actual de FW???
Alguna Clase desarrollada por algun tercero, como un TEdit() ???
No se si se podria con el GET MEMO, solo de una línea, con una propiedad de longitud maxima (nMaxLenght)...
Un Saludo,
Xevi.
Resulta que de antaño, Clipper a la hora de solicitar los datos, se comportó de una forma que con la evolución informática no se corresponde.
Las DBFs se definian _ Caracter con anchura máxima que íbamos a preveer y eso al guardar los datos de registros ocupaba un espacio innecesario.
Con _ (SQL por ejemplo) las bases de datos se definen _ casi igual, pero al guardar los registros SOLO se guarda el espacio que ocupan los datos introducidos, no el ancho total definido.
Creo que es así, sinó que alguine me corrija.
Bien, la pregunta... FW veo que sigue arrastrando la forma de introducción de datos del antigui GET.
Pero, hay alguna forma de que se comporte de manera que solo se vean los datos que ocupa ese campo???
Por ejemplo...
Si tenemos una variable/campo tipo caracter contenido "Maria"
al hacer un GET, de esa variable me deja cambiar esos datos, si, pero SOLO me va a dejar introducir 5 carácteres. Así pues no puedo cambiar ese valor por "Maria de las Mercedes", ni tan siquiera que el campo de la tabla permita una longitud de 25 caracteres.
Por contra, si la variable la defino con valor "Maria"+Space(20), me dejará escribir i cambiar el contenido hasta los 25 caracteres, hasta ahí correcto... PERO si hago clic en una zona "vacia" a partir del caracter 6, se ve que hay espacios en blanco formando parte de su contenido... y ese efecto es "feo", muy feo.
Cuando veo que después de lo escrito, hay espacios en blanco, pienso en MSDOS y como se trabajava en Clipper. Los programas "modernos" la captura de datos son sin espaciados a la derecha. Cualquier programa en entorno Windows/Mac, incluso los formularios web, al introducir los datos no tienes un campo en blanco de longitud fija que vas rellenando, sinó que a medida que vas escribiendo se va rellenando el contenido, hasta llegar a un límite, o no.
Hay alguna variante, propiedad, clase que se haya desarrollado o que alguien esté utilizando para salvar este comportamiento del GET actual de FW???
Alguna Clase desarrollada por algun tercero, como un TEdit() ???
No se si se podria con el GET MEMO, solo de una línea, con una propiedad de longitud maxima (nMaxLenght)...
Un Saludo,
Xevi.
Un Saludo,
Xevi.
Aprendiz de la vida!!!
Xevi.
Aprendiz de la vida!!!
- nageswaragunupudi
- Posts: 8017
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: GET sin longitud con espacios blancos
TEdit is FWH class. Not 3rd party.
For your requirements, you may use command EDIT instead of GET.
@ row, col EDIT cVar SIZE w,h PIXEL OF oDlg
For your requirements, you may use command EDIT instead of GET.
@ row, col EDIT cVar SIZE w,h PIXEL OF oDlg
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
Re: GET sin longitud con espacios blancos
Guay!!!
Ahora... información para EDIT ???
Estoy buscando en la wiki, y no veo la clase TEdit()
propiedades como longidut máxima (nMaxLenght)
Posicionar el cursor en un caracter determinado SetPos()
Seleccionar parte, nada o todo...
Seguro que está, pero no veo la documentación.
Saludos,
Xevi.
Ahora... información para EDIT ???
Estoy buscando en la wiki, y no veo la clase TEdit()
propiedades como longidut máxima (nMaxLenght)
Posicionar el cursor en un caracter determinado SetPos()
Seleccionar parte, nada o todo...
Seguro que está, pero no veo la documentación.
Saludos,
Xevi.
Un Saludo,
Xevi.
Aprendiz de la vida!!!
Xevi.
Aprendiz de la vida!!!
Re: GET sin longitud con espacios blancos
He mirado el prg edit.prg de la clase TEdit()...
SetLimitText(n) para limitar la longitud.
@ 300,40 EDIT oEdit VAR cVar SIZE 280,22 PIXEL OF oWnd
oEdit:SetLimitText(30)
Metodos SelectAll()
y otros como SetSel() que deben heredar de TControl.
Iré investigando!!!
Un Saludo,
Xevi.
SetLimitText(n) para limitar la longitud.
@ 300,40 EDIT oEdit VAR cVar SIZE 280,22 PIXEL OF oWnd
oEdit:SetLimitText(30)
Metodos SelectAll()
y otros como SetSel() que deben heredar de TControl.
Iré investigando!!!
Un Saludo,
Xevi.
Un Saludo,
Xevi.
Aprendiz de la vida!!!
Xevi.
Aprendiz de la vida!!!
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: GET sin longitud con espacios blancos
Gracias, Antonio.
En la lista de Clases no sale y no la encontraba.
http://wiki.fivetechsoft.com/doku.php?i ... eticamente
Ni en el listado de la columna derecha, ni en el de Clase a Clase.
En la lista de Clases no sale y no la encontraba.
http://wiki.fivetechsoft.com/doku.php?i ... eticamente
Ni en el listado de la columna derecha, ni en el de Clase a Clase.
Un Saludo,
Xevi.
Aprendiz de la vida!!!
Xevi.
Aprendiz de la vida!!!
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: GET sin longitud con espacios blancos
Xevi,
La lista no estaba actualizada en el wiki, la acabo de actualizar, gracias
La documentación en el wiki no siempre está actualizada y por eso lo mejor es revisar el código fuente
de la clase como tu muy bien has hecho
La lista no estaba actualizada en el wiki, la acabo de actualizar, gracias
La documentación en el wiki no siempre está actualizada y por eso lo mejor es revisar el código fuente
de la clase como tu muy bien has hecho
Re: GET sin longitud con espacios blancos
Estoy buscando y no encuentro como cambiar el color del borde, del fondo... al recibir o dejar el foco
Con esto cambio el color de la fuente, pero... como establezco color del Fondo y del borde ???
Code: Select all
@ 340,40 EDIT oEdit VAR cVarEdit SIZE 280,22 PIXEL OF oWnd
oEdit:SetLimitText(30)
oEdit:bGotFocus := {|o| o:SetColor( 255 ) }
oEdit:bLostFocus := {|o| o:SetColor( 0 ) }
Un Saludo,
Xevi.
Aprendiz de la vida!!!
Xevi.
Aprendiz de la vida!!!
- nageswaragunupudi
- Posts: 8017
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: GET sin longitud con espacios blancos
Code: Select all
@ 340 , 40 EDIT oEdit VAR cVarEdit SIZE 280 , 22 PIXEL OF oWnd ;
LIMITTEXT BY 30 CHARS
oEdit: bGotFocus : = { | o | o: SetColor ( CLR_HRED, CLR_YELLOW ) }
oEdit: bLostFocus : = { | o | o: SetColor ( CLR_BLACK, CLR_WHITE ) }
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
Re: GET sin longitud con espacios blancos
bGotFocus, hace el cambio de fuente correctamente
oEdit: bGotFocus : = { | o | o: SetColor ( CLR_HRED, CLR_YELLOW ) }
Ahora bien, bLostFocus bien si se sale del Edit con teclado <Tab>, pero no surte efecto si se hace con raton
oEdit: bLostFocus : = { | o | o: SetColor ( CLR_BLACK, CLR_WHITE ) }
He añadido o:Refresh(), y ya funciona correcto.
oEdit: bLostFocus : = { | o | o: SetColor ( CLR_BLACK, CLR_WHITE ), o:Refresh() }
Por cierto, para salir del Edit o Get con Enter ???
Gracias.
oEdit: bGotFocus : = { | o | o: SetColor ( CLR_HRED, CLR_YELLOW ) }
Ahora bien, bLostFocus bien si se sale del Edit con teclado <Tab>, pero no surte efecto si se hace con raton
oEdit: bLostFocus : = { | o | o: SetColor ( CLR_BLACK, CLR_WHITE ) }
He añadido o:Refresh(), y ya funciona correcto.
oEdit: bLostFocus : = { | o | o: SetColor ( CLR_BLACK, CLR_WHITE ), o:Refresh() }
Por cierto, para salir del Edit o Get con Enter ???
Gracias.
Un Saludo,
Xevi.
Aprendiz de la vida!!!
Xevi.
Aprendiz de la vida!!!
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: GET sin longitud con espacios blancos
Xevi,
Revisa en source\classes\tget.prg la implementación en el método KeyChar() de VK_RETURN
Habría que implementar ese código en source\classes\edit.prg
Ten en cuenta que ese comportamiento no es standard de Windows, por eso no se ha implementado en la Clase TEdit
Revisa en source\classes\tget.prg la implementación en el método KeyChar() de VK_RETURN
Habría que implementar ese código en source\classes\edit.prg
Ten en cuenta que ese comportamiento no es standard de Windows, por eso no se ha implementado en la Clase TEdit
- nageswaragunupudi
- Posts: 8017
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: GET sin longitud con espacios blancos
Code: Select all
oEdit:bKeyChar := { |k| If( k == VK_RETURN, ( oEdit:oWnd:GoNextCtrl( oEdit:hWnd ), 0 ), nil ) }
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
Re: GET sin longitud con espacios blancos
Lo mejor de trabajar con Clases... la herencia!!!
Así que he creado una clase a partir de la TEdit...
Funciona de lujo!!!
Donde se puede llegar??? Hay límites???
Creo que los límites estan en la imaginación!!!
Como me gusta aprender!!!
Ahora, pero... necesito un empujón. TEdit al recoger el foco no se "pinta" el recuadro del color como lo hace un Get.
Es un error de la Clase???
Hay algun arreglo/apaño???
No se donde mirar en la Clase Get.
Gracias.
Así que he creado una clase a partir de la TEdit...
Code: Select all
CLASS TxEdit FROM TEdit
METHOD KeyDown( nKey, nFlags )
ENDCLASS
METHOD KeyDown( nKey, nFlags ) CLASS TxEdit
IF nKey == VK_UP
::oWnd:GoPrevCtrl( ::hWnd )
return 0 // We don't want API default behavior
ELSEIF nKey == VK_RETURN .or. nKey == VK_DOWN
::oWnd:GoNextCtrl( ::hWnd )
return 0 // We don't want API default behavior
ENDIF
return ::Super:KeyDown( nKey, nFlags )
Donde se puede llegar??? Hay límites???
Creo que los límites estan en la imaginación!!!
Como me gusta aprender!!!
Ahora, pero... necesito un empujón. TEdit al recoger el foco no se "pinta" el recuadro del color como lo hace un Get.
Es un error de la Clase???
Hay algun arreglo/apaño???
No se donde mirar en la Clase Get.
Gracias.
Un Saludo,
Xevi.
Aprendiz de la vida!!!
Xevi.
Aprendiz de la vida!!!
Re: GET sin longitud con espacios blancos
Una cosa a comentar, por si alguien se puede encontrar en una situación similar.
Sin la modificación de la clase, tal como he expuesto anteriormente, cuando conviven GETs y EDITs en una misma WINDOW, no salta de control del EDIT con return, flecha arriba, flecha abajo...
En cambio, si el contenedor es un DIALOG si que se comporta igualmente un EDIT que un GET.
Es para tomar nota!!!
Gracias.
Code: Select all
function Main()
local oDlg, cFirst := "Hello", cLast := "World"
* DEFINE DIALOG oDlg SIZE 500, 250
DEFINE WINDOW oDlg FROM 1, 1 TO 30, 100
@ 1, 1 EDIT cFirst OF oDlg SIZE 80, 10
@ 2, 1 GET cLast OF oDlg SIZE 80, 10
@ 5, 11 BUTTON "Ok" ACTION MsgInfo( cFirst + ", " + cLast )
@ 5, 21 BUTTON "Cancel" ACTION oDlg:End()
* ACTIVATE DIALOG oDlg CENTERED
ACTIVATE WINDOW oDlg
return nil
//----------------------------------------------------------------------------//
En cambio, si el contenedor es un DIALOG si que se comporta igualmente un EDIT que un GET.
Es para tomar nota!!!
Gracias.
Un Saludo,
Xevi.
Aprendiz de la vida!!!
Xevi.
Aprendiz de la vida!!!
Re: GET sin longitud con espacios blancos
Otra cosa que NO FUNCIONA EN UNA WINDOW
Los Edits no se remarca el borde cuando obtiene el Foco en una WINDOW, en un DIALOG si lo hace correctamente. De ahí que expusiera el como cambiar el color del borde de un TEdit.
Es un error o fallo de la clase, como el expuesto en el anterior post.
Gracias.
Los Edits no se remarca el borde cuando obtiene el Foco en una WINDOW, en un DIALOG si lo hace correctamente. De ahí que expusiera el como cambiar el color del borde de un TEdit.
Es un error o fallo de la clase, como el expuesto en el anterior post.
Gracias.
Un Saludo,
Xevi.
Aprendiz de la vida!!!
Xevi.
Aprendiz de la vida!!!