Problemas con Xbrowse al editar campos de una DBF
Posted: Mon Sep 21, 2009 1:27 pm
Un saludo a los compañeros del Foro, los molesto con una consulta, estoy intentando hacer un dialogo mantenedor de tablas pequeñas del tipo “codigo”, “descripción”, para lo cual pretendo ocupar el xbrowse, lo tengo armado pero me di cuente que cuando edito un camo para modificar sobre la dbf la tecla “VK_BACK” no funciona, no es u problema de a clase GET, si no que de la Clase Txbrowse. En los metodos KeyChar( nKey ) y LDblClick( nRow, nCol, nKeyFlags ), llama a una funcion “oCol:Edit()” que es la que edita el campo, pero no encuentro la fuente como para ver si puedo solucionarlo, intente hacer una funcion propia que edite _ pero desistí ya que los pocesionamientos para dar con las coordenadas de fila y columna me siembre se volvían 0 para filas y 0 para columnas. En todo caso lo unico que me gustaria saber es si tiene solucion lo del “VK_BACK” al editar un campo, el armado del xbrowse lo hago ocupando arreglos para almeacenar _ de la dbf, y es mas o menos esto:
//--> Construye el Browse
DbselectArea(cAlias)
DbSetOrder(nInd)
DbGotop()
//--> Arma el Browse
oBrwEx = TXBrowse():New( oDlgExp )
oBrwEx:nMarqueeStyle := MARQSTYLE_HIGHLROW
oBrwEx:nColDividerStyle := LINESTYLE_BLACK
oBrwEx:nHeaderLines := 1
oBrwEx:lVScroll := .F.
oBrwEx:lHScroll := .F.
oBrwEx:nFreeze := 1
oBrwEx:lFastEdit := .T.
oBrwEx:bSeek := { |c| DbSeek( Upper( c ) ) }
oBrwEx:bChange :={|| ( oGetSeek:VarPut( Padr( oBrwEx:cSeek, 50) ), oGetSeek:Refresh()) }
For i:= 1 To Len(aNcamp)
Aadd( aCol, oBrwEx:AddCol() )
aCol:cHeader := aTcamp
aCol:bStrData := GenFieldBlock( cAlias, aNcamp)
aCol:nWidth := aSixe
aCol:cEditPicture := aPict
If aAlin="R"
aCol:nDataStrAlign := AL_RIGHT
aCol[i]:nHeadStrAlign := AL_RIGHT
ElseIf aAlin[i]="C"
aCol[i]:nDataStrAlign := AL_CENTER
aCol[i]:nHeadStrAlign := AL_CENTER
Endif
//--> Editable
If lAgrega
aCol[i]:nEditType := aStilo[i]
aCol[i]:bOnPostEdit := {|o, v, n| iif( n != VK_ESCAPE, ( FieldPut( o:nCreationOrder, v ), oBrwEx:cSeek:=Alltrim(v) ), ) }
Endif
//--> Pinta la Columna con el Primer Orden
If !Empty(aOrde[i]) .and. i=nInd
aCol[i]:bClrStd := {|| { col_text, col_Bak } }
Endif
//--> Pone los datos para ordenar
If !Empty(aOrde[i])
aCol[i]:AddResource( "BMP_AJUSTE" )
aCol[i]:nHeadBmpNo := Iif( i=nInd, 1, 0)
aCol[i]:nHeadBmpAlign := AL_RIGHT
Endif
Next i
//--> Crea el Brw
oBrwEx:CreateFromResource( 900 )
oBrwEx:SetRDD()
Un gran saludo a Todos.. Gracias
//--> Construye el Browse
DbselectArea(cAlias)
DbSetOrder(nInd)
DbGotop()
//--> Arma el Browse
oBrwEx = TXBrowse():New( oDlgExp )
oBrwEx:nMarqueeStyle := MARQSTYLE_HIGHLROW
oBrwEx:nColDividerStyle := LINESTYLE_BLACK
oBrwEx:nHeaderLines := 1
oBrwEx:lVScroll := .F.
oBrwEx:lHScroll := .F.
oBrwEx:nFreeze := 1
oBrwEx:lFastEdit := .T.
oBrwEx:bSeek := { |c| DbSeek( Upper( c ) ) }
oBrwEx:bChange :={|| ( oGetSeek:VarPut( Padr( oBrwEx:cSeek, 50) ), oGetSeek:Refresh()) }
For i:= 1 To Len(aNcamp)
Aadd( aCol, oBrwEx:AddCol() )
aCol:cHeader := aTcamp
aCol:bStrData := GenFieldBlock( cAlias, aNcamp)
aCol:nWidth := aSixe
aCol:cEditPicture := aPict
If aAlin="R"
aCol:nDataStrAlign := AL_RIGHT
aCol[i]:nHeadStrAlign := AL_RIGHT
ElseIf aAlin[i]="C"
aCol[i]:nDataStrAlign := AL_CENTER
aCol[i]:nHeadStrAlign := AL_CENTER
Endif
//--> Editable
If lAgrega
aCol[i]:nEditType := aStilo[i]
aCol[i]:bOnPostEdit := {|o, v, n| iif( n != VK_ESCAPE, ( FieldPut( o:nCreationOrder, v ), oBrwEx:cSeek:=Alltrim(v) ), ) }
Endif
//--> Pinta la Columna con el Primer Orden
If !Empty(aOrde[i]) .and. i=nInd
aCol[i]:bClrStd := {|| { col_text, col_Bak } }
Endif
//--> Pone los datos para ordenar
If !Empty(aOrde[i])
aCol[i]:AddResource( "BMP_AJUSTE" )
aCol[i]:nHeadBmpNo := Iif( i=nInd, 1, 0)
aCol[i]:nHeadBmpAlign := AL_RIGHT
Endif
Next i
//--> Crea el Brw
oBrwEx:CreateFromResource( 900 )
oBrwEx:SetRDD()
Un gran saludo a Todos.. Gracias