Tengo un xBrowse con lFastEdit a .t., deseo que se vayan añadiendo registros despues de editar la última columna, o bien si pulsan flecha abajo, y además quiero que la siguiente fila inicie la edición en la tercerla columna editable, ya que las dos anteriores tienen valores que casi nunca cambian.
Con la versión 0904 lo hacia mediante el codeblock bPastEof, añadia el registro en la tabla, y posicionaba en la columna deseada usando oBrw:Setos().
Con la verión 0905, esto ha dejado de funcionar, creo que motivado por los cambios introducidos en el método GoNextCtrl(). He itentado buscar otro punto donde variar la primera columna a editar, pero no lo he encontrado, seguro que habra alguna forma facil de hacerlo, pero ahora no doy con ella (todo lo que se me ocurre pasa por modificar la calse, cosa que quiseiera evitar). Help.
xBrowse.Posicionar en una columna determinada despues add
- Biel EA6DD
- Posts: 682
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: xBrowse.Posicionar en una columna determinada despues add
Saludos Biel...
Podrias colocar un ejemplo que este funcinando en la version 904, por favor, con respecto al punto que estas exponiendo...
Gracias....
Podrias colocar un ejemplo que este funcinando en la version 904, por favor, con respecto al punto que estas exponiendo...
Gracias....
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
- Biel EA6DD
- Posts: 682
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
Re: xBrowse.Posicionar en una columna determinada despues add
Hola Daniel,
aqui va un ejemplo autocontenido. Me ha costado un poco el sacarlo de dentro de la aplicación, pero bueno, así podras compilarlo y probarlo sin problema.
Con FW0904 al pulsar intro en el último campo (notas), añade un nuevo registro y se posiciona en la columna indicativo.
Con FW0905 hace lo mismo que la anterior, pero se posiciona en la primera columa editable(banda).Este comportamiento no digo que sea erroneo, solo que necesito alguna manera para conseguir posicionarlo sobre indicativo.
aqui va un ejemplo autocontenido. Me ha costado un poco el sacarlo de dentro de la aplicación, pero bueno, así podras compilarlo y probarlo sin problema.
Code: Select all | Expand
#include "FiveWin.ch"
#include "xBrowse.ch"
#include "EXStruc.ch"
FUNCTION Main()
LOCAL oWnd, oBrw,oCol,oDef
LOCAL aNomBan:={'50mhz','144 mhz','432mhz'},aCodBan:={'6M','2M','70CM'}
LOCAL aNomMod:={'SSB','PKT','CLO','PAC2'},aCodMod:={'SSB','Packet','Clover','Pactor II'}
STRUC oDef
MEMBER dFecha AS Date INIT Date()
MEMBER cProPMode AS CHARACTER INIT 'ES'
MEMBER cOperator AS CHARACTER INIT 'EA6DD'
MEMBER cQra AS CHARACTER INIT 'JM19JK'
MEMBER cMode AS CHARACTER INIT 'SSB' SIZE 6
MEMBER cBand AS CHARACTER INIT '2M' SIZE 6
END STRUC
DEFINE WINDOW oWnd
DBCreate('Fast', {{ "BAND" , "C", 6, 0 },;
{ "CALL" , "C", 12, 0 },;
{ "COMMENT" , "C", 30, 0 },;
{ "GRIDSQUARE", "C", 6, 0 },;
{ "MODE" , "C", 6, 0 },;
{ "TIMEON" , "C", 5, 0 },;
{ "OPERATOR" , "C", 15, 0 },;
{ "PROPMODE" , "C", 2, 0 },;
{ "QSODATE" , "D", 8, 0 },;
{ "QRA" , "C", 6, 0 } })
DBUseArea(.T.,,'fast','fast',.F.,.F.)
oBrw := TxBrowse():New(oWnd)
WITH OBJECT oBrw
:nMarqueeStyle := MARQSTYLE_HIGHLCELL
:nColDividerStyle := 4
:nRowDividerStyle := 4
:lColDividerComplete := .T.
:nHeaderLines := 2
:nDataLines := 1
:nFreeze := 5
:lFastEdit :=.T.
:bPastEof := {||EsAddRec(oDef,oBrw,oCol)}
END
ADD TO oBrw DATA Fast->QsoDate TITLE 'Fecha'
ADD TO oBrw DATA Fast->TimeOn TITLE 'Hora'
ADD TO oBrw DATA Fast->Band TITLE 'Banda'
oCol:=ATail(oBrw:aCols)
oCol:nEditType := EDIT_LISTBOX
oCol:aEditListTxt := aNomBan
oCol:aEditListBound:= aCodBan
oCol:bOnPostEdit := {|o,v,n| Fast->Band:=v }
ADD TO oBrw DATA Fast->Mode TITLE 'Modo'
oCol:=ATail(oBrw:aCols)
oCol:nEditType := EDIT_LISTBOX
oCol:aEditListTxt := aNomMod
oCol:aEditListBound:= aCodMod
oCol:bOnPostEdit := {|o,v,n| Fast->Mode:=v }
ADD TO oBrw DATA Fast->Call TITLE 'Indicativo' EDITABLE ON EDIT {|o,v,n| Fast->Call:=v } PICTURE "@!"
oCol:=ATail(oBrw:aCols)
ADD TO oBrw DATA Fast->GridSquare TITLE 'Locator' EDITABLE ON EDIT {|o,v,n| Fast->GridSquare:=v } PICTURE "!!99!!"
ADD TO oBrw DATA Fast->Comment TITLE 'Notas' EDITABLE ON EDIT {|o,v,n| Fast->Comment:=v }
//--
oBrw:SetRdd()
oBrw:CreateFromCode()
oWnd:oClient:=oBrw
ACTIVATE WINDOW oWnd ON INIT EsAddRec(oDef,oBrw,oCol)
RETURN NIL
//---------------------------------------
STATIC FUNCTION EsAddRec(oDef,oBrw,oCol)
IF Empty(Fast->TimeOn)
Fast->TimeOn:=Time()
ENDIF
Fast->(DBAppend())
Fast->QsoDate :=oDef:dFecha
Fast->Operator:=oDef:cOperator
Fast->Qra :=oDef:cQra
Fast->PropMode:=oDef:cPropMode
Fast->Band :=oDef:cBand
Fast->Mode :=oDef:cMode
oBrw:Refresh()
oBrw:SetPos(,oBrw:ColPos(oCol))
* oBrw:nColSel:=5 //Tambien funciona
RETURN NIL
Con FW0904 al pulsar intro en el último campo (notas), añade un nuevo registro y se posiciona en la columna indicativo.
Con FW0905 hace lo mismo que la anterior, pero se posiciona en la primera columa editable(banda).Este comportamiento no digo que sea erroneo, solo que necesito alguna manera para conseguir posicionarlo sobre indicativo.
Last edited by Biel EA6DD on Thu Jul 30, 2009 5:14 pm, edited 1 time in total.
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: xBrowse.Posicionar en una columna determinada despues add
Saludo Biel...
Ciertamente hubo unos cambios de posicion en unas lineas del metodo GoNextCtrl().
Te dejo las lineas que cambian
Cambia esto:
Por Esto:
Ciertamente hubo unos cambios de posicion en unas lineas del metodo GoNextCtrl().
Te dejo las lineas que cambian
Cambia esto:
Code: Select all | Expand
elseif ::KeyNo() < ::nLen .or. ::lAutoAppend
::Select( 0 )
::GoDown()
::Select( 1 )
::GoLeftMost()
nNextPos := AScan( ::aDisplay, { |i| ::aCols[ i ]:nEditType > 0 } )
if nNextPos > 1
if ::IsDisplayPosVisible( nNextPos, .t. )
::nColSel := nNextPos
::DrawLine( .t. )
else
for n := 2 to nNextPos
::GoRight()
next
endif
endif
Por Esto:
Code: Select all | Expand
else
::GoLeftMost()
nNextPos := AScan( ::aDisplay, { |i| ::aCols[ i ]:nEditType > 0 } )
if nNextPos > 1
if ::IsDisplayPosVisible( nNextPos, .t. )
::nColSel := nNextPos
::DrawLine( .t. )
else
for n := 2 to nNextPos
::GoRight()
next
endif
endif
if ::lAutoAppend .or. ::nDataRows > ::nRowSel
if !( ::bPastEof == NIL .and. ::KeyNo() == ::nLen )
::Select( 0 )
::GoDown()
::Select( 1 )
endif
endif
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
- Biel EA6DD
- Posts: 682
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
Re: xBrowse.Posicionar en una columna determinada despues add
Perfecto Daniel, muchas graicas.
Esta modificación se incluira en lasiguiente versión?, es para no tener que ir modificando cada version el fuente de xbrowse.
Esta modificación se incluira en lasiguiente versión?, es para no tener que ir modificando cada version el fuente de xbrowse.
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: xBrowse.Posicionar en una columna determinada despues add
Biel.
Si, con seguridad será incluida
Si, con seguridad será incluida
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9