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 los campos 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 los campos 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[i]:cHeader := aTcamp[i]
aCol[i]:bStrData := GenFieldBlock( cAlias, aNcamp[i])
aCol[i]:nWidth := aSixe[i]
aCol[i]:cEditPicture := aPict[i]
If aAlin[i]="R"
aCol[i]: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