Francisco, espero que esto te ayude o por lo menos te dé ideas
#include "Fivewin.ch"
//----------------------------------------------------------------------------//
Function Main()
local oBrw
local cAlias := "Cust"
local oWnd
local cText
Use "Customer.dbf" ALIAS ( cAlias )
DEFINE WINDOW oWnd
oBrw := XBROWSE( cAlias, , , , , , , , , , .T. , )
ACTIVATE WINDOW oWnd ON INIT ( cText := oBrw:Copy(), ;
MsgInfo( ArrayToText( RowFromClip( oBrw, cText, { 2, 4 } ) ) ) )
Return nil
//----------------------------------------------------------------------------//
Function RowFromClip( oBrw, cText, aNoCols ) // oBrw, not neccesary if is a METHOD of CLASS XBROWSE
local aVals
local x := 1
local y
local nPos
local oClip
/*
// Si no se utiliza el parámetro cText, es otra forma de enfocar el tema
// para no llamar el method Copy del Browse ( por ejemplo si has utilizado CTRL + C en el browse )
if Empty( cText )
oClip := TClipBoard():New( 1, oBrw:oWnd )
if oClip:Open()
cText := oClip:GetText() //oClip:SetText( cText )
oClip:Close()
endif
oClip:End()
endif
*/
ASort( aNoCols,,, { | x, y | x < y } )
aVals := hb_aTokens( cText, Chr( 9 ) )
Do While x < Len( aVals )
nPos := !Empty( AsCan( aNoCols, x ) )
if !Empty( nPos )
ADel( aVals, x, .T. )
ADel( aNoCols, nPos, .T. )
For y = 1 to Len( aNoCols )
aNoCols[ y ] -= 1
Next y
endif
x++
Enddo
//XBrowse( aVals )
//
//Aqui podrias pasar de nuevo el array de valores al portapapeles
//Open Clipboard
//Convertir array en cadena separada por TAB y ...
// oClip:SetText( cText )
//
Return aVals
//----------------------------------------------------------------------------//