FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Obtener cadena parcial desde el clipboard
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Obtener cadena parcial desde el clipboard
Posted: Sun Nov 27, 2016 06:18 PM

¿Es posible hacerlo esto?
1- Desde un xBrowse copiar al clipboard 1 linea. (no se si se puede copiar columnas especificas)
2- Del texto en el portapeles obtener la cadena deseada.

Por ejemplo, en el clipboard tenemos copiado el texto "1103 1 1 S Roberto Alegria"

Desde el clipboard deseo obtener la cadena "1103 1 1 Roberto Alegria"

Alguien tiene una funcion para hacerlo y pueda compartirla?

Agradeceré cualquier idea.

Saludos.

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Obtener cadena parcial desde el clipboard
Posted: Mon Nov 28, 2016 03:44 PM
Francisco, espero que esto te ayude o por lo menos te dé ideas

Code (fw): Select all Collapse
#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

//----------------------------------------------------------------------------//
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Obtener cadena parcial desde el clipboard
Posted: Mon Nov 28, 2016 05:26 PM

Cristobal, muchas gracias.
Voy a adaptar y probar tu codigo, Luego te comento.
Saludos.

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql

Continue the discussion