Obtener cadena parcial desde el clipboard

Obtener cadena parcial desde el clipboard

Postby FranciscoA » Sun Nov 27, 2016 6: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
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Obtener cadena parcial desde el clipboard

Postby cnavarro » Mon Nov 28, 2016 3:44 pm

Francisco, espero que esto te ayude o por lo menos te dé ideas

Code: Select all  Expand view


#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
User avatar
cnavarro
 
Posts: 6522
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Obtener cadena parcial desde el clipboard

Postby FranciscoA » Mon Nov 28, 2016 5: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
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot], Willi Quintana and 46 guests