FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour carga de datos en get
Posts: 149
Joined: Thu Jun 21, 2007 03:26 PM
carga de datos en get
Posted: Wed Oct 08, 2008 07:47 PM

Hola. ¿como puedo configurar un programa para que cuando escribo en un get, si pico en el mismo, el cursor se valla al final de lo que esta escrito (salvo que pique en medio de una frase), y para que al escribir no inserte, si no que agregue letras???

el, si en el get dice "hola soy juan" sobra espacio, si pico donde sobra, que se valla despues de la n, aunque no pique justo ahi;
si pico entre la "l" y la "a" (de hola), que quede ahí...
y despues, si me paro ahi y escribo, que no me sobreescriba el "a soy juan", sino que por defecto me inserte.

Gracias...!!!

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
carga de datos en get
Posted: Mon Oct 27, 2008 11:37 AM

Diego,

Ese comportamiento puedes implementarlo usando:

oGet:bLClicked := { | nRow, nCol | ... código ... }

Ahi tienes que calcular exactamente que quieres hacer y puedes cambiar la posición del cursor con oGet:SetPos( nPos )

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
carga de datos en get
Posted: Mon Oct 27, 2008 11:40 AM

El insertado puedes controlarlo con:

Set( _SET_INSERT, lOnOff )

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 498
Joined: Thu May 10, 2007 08:30 PM
carga de datos en get
Posted: Mon Oct 27, 2008 02:07 PM
yo lo he solucionado modifiacando TGET.PRG de la siguiente forma:

1) añadir un nuevo DATA

DATA lDentro AS LOGICAL INIT .F. // para saber si pinchamos por primera vez en el Get o ya estabamos Dentro

2) despues modificar

METHOD LostFocus( hCtlFocus ) CLASS TGet
...
...
if ! ::BadDate
::KillFocus()
::lDentro := .F. // hemos salido, ya no estamos dentro
else
...
...
endif
...

3) por ultimo modificar

METHOD LButtonUp( nRow, nCol, nFlags ) CLASS TGet

local nLo, nHi, cText

IF ::lDrag
...
...
ELSE
cText := ALLTRIM(::GetText())
If Left( cText, 1 ) == "("
::nPos = 2
::SetPos( ::nPos )
ELSEIF Empty(cText) .OR. (Valtype( ::Value ) = "D" .AND. (cText == "/ /" .OR. cText == "- -")) .OR. cText == "/"
// (cuidado "/ /" lleva dos espacios entre barra y barra)
::nPos := 1
::SetPos( 1 )
ELSEIF ! ::lDentro .AND. (cText == "0" .OR. Empty(::Value))
::nPos := 1
::SetPos( 1 )
ELSE
::GetSelPos( @nLo, @nHi )
::pos = nHi + 1
::nPos = ::pos
IF ! ::lDentro .AND. Valtype( ::Value ) = "C" .AND. Empty(::GetSel()) .AND. !Empty(cText) .AND. ::nPos > LEN(cText)
::SetPos( 1 )
::End()
::SetPos(::Pos)
ENDIF
ENDIF
*
::lDentro := .T. // estamos dentro
IF ::bLButtonUp != NIL
RETURN Eval( ::bLButtonUp, nRow, nCol, nFlags )
ENDIF
ENDIF
return nil

A mi me funciona perfectamente
veras que los cambios son muy poquitos

Saludos
Peaaaaaso de foro...

FWH 2007 - xHarbour - BCC55

Continue the discussion