Page 1 of 1

URLLINK + XBROWSE

PostPosted: Thu Oct 03, 2019 7:16 pm
by leandro
Buenas tardes para todos,

es posible colocar un link a un enlace externo en una celda de xbrowse?

algo similar a esto pero directo en el xbrowse
Code: Select all  Expand view

   REDEFINE URLLINK ID 104 URL "www.fivetechsoft.com" OF oDlg ;
            TOOLTIP "Sitio oficial de FiveTech"
 


De antemano gracias

Re: URLLINK + XBROWSE

PostPosted: Fri Oct 04, 2019 1:57 am
by nanoespinoza
+1

Re: URLLINK + XBROWSE

PostPosted: Thu Oct 10, 2019 2:06 am
by nanoespinoza
+2

Re: URLLINK + XBROWSE

PostPosted: Tue Feb 27, 2024 12:44 pm
by Silvio.Falconi
+3

Re: URLLINK + XBROWSE

PostPosted: Tue Feb 27, 2024 1:13 pm
by karinha
Leandro, cual és el problema en usar de esta forma?

Code: Select all  Expand view

   oCol:bLDClickData := { || Shellexecute( 0, "Open", oCol:Value ) }
 


Gracias.

Regards, saludos.

Re: URLLINK + XBROWSE

PostPosted: Tue Feb 27, 2024 2:03 pm
by leandro
karinha, ninguno, así lo implementamos finalmente.
Code: Select all  Expand view

oCol:bLDClickData := { || Shellexecute( 0, "Open", aInfo[oBrw:nArrayAt]["url"] ) }
 

Re: URLLINK + XBROWSE

PostPosted: Tue Feb 27, 2024 2:08 pm
by karinha
leandro wrote:karinha, ninguno, así lo implementamos finalmente.
Code: Select all  Expand view

oCol:bLDClickData := { || Shellexecute( 0, "Open", aInfo[oBrw:nArrayAt]["url"] ) }
 


Leandro en mi humilde opinión me parece excelente. Usted es muy inteligente. Cuando sea mayor quiero ser como tú. jajajajaja.

Gracias.

Regards, saludos.

Re: URLLINK + XBROWSE

PostPosted: Tue Feb 27, 2024 2:11 pm
by Silvio.Falconi
leandro wrote:karinha, ninguno, así lo implementamos finalmente.
Code: Select all  Expand view

oCol:bLDClickData := { || Shellexecute( 0, "Open", aInfo[oBrw:nArrayAt]["url"] ) }
 



probablemente no estemos diciendo lo mismo: no necesariamente tiene que abrir un enlace en el navegador pero podría abrir un popup o una función específica. Para la visualización pretendo que tenga la misma forma que el texto de la clase Turllink o la clase tsayref, es decir cuando el usuario final pasa con el mouse sobre el texto (subrayado) cambia de color (sobre color y color normal).

no necesariamente tiene que ser una dirección para abrir, puede ser cualquier información, imagina por ejemplo una tabla xbrowse donde hay datos numéricos correspondientes a pedidos, el usuario podría abrir la ficha de ese pedido, o de ese cliente con un clic .

Ejemplo tangible de archivo de movimiento de artículos (carga/descarga).

Se muestra el nombre del proveedor. pues para ver los datos de ese proveedor el usuario final debe cerrar la gestión de almacén y abrir el registro de proveedores y buscar ese proveedor para abrir la tarjeta.

Tenerlo como enlace URL en el xbrowse del almacén podría abrir directamente el perfil de ese proveedor.

Re: URLLINK + XBROWSE

PostPosted: Tue Feb 27, 2024 2:14 pm
by leandro
Lo único adicional que agregamos fue un tooltip para indicarle al usuario que puede hacer doble clic sobre esa columna.

Quizás para que parezca un enlace, se podría colocar la fuente subrayada, pero eso si no lo hemos hecho hasta el momento.
Code: Select all  Expand view

    oCol:bCellToolTip := { |oCol| "Doble clic para abrir en enlace"}
 

Re: URLLINK + XBROWSE

PostPosted: Tue Feb 27, 2024 2:20 pm
by karinha
Silvio, si entiendo (me cuesta seguir tu razonamiento), simplemente activaría una función con un DIÁLOGO y usaría SSAY.PRG o URLLINK para activar con la URL. Si no entendí, lo siento.

Silvio, if I understand (I have difficulty following your reasoning), I would simply trigger a function with a DIALOG and use SSAY.PRG or URLLINK to trigger with the URL. If I didn't understand, I'm sorry.

Regards, saludos.

Re: URLLINK + XBROWSE

PostPosted: Tue Feb 27, 2024 3:59 pm
by Cgallegoa
Espero te sirva esta idea:
Image

Code: Select all  Expand view
#include "FiveWin.ch"
Function Inicio()
LOCAL oDlg, oBrw, oFont[2]
LOCAL aData := {{"xHarbour"        , "http://www.xharbour.org/"           , 1},;
                {"Cualquier cosa"  , "Ejecuta proceso Tres"               , 3},;
                {"Fivetech"        , "www.fivetechsoft.com"               , 1},;
                {"Forum Fivetecht" , "https://forums.fivetechsupport.com" , 1},;
                {"Tarea adicional" , "Ejecuta proceso Dos"                , 2}}

DEFINE FONT oFont[1] NAME "TAHOMA" SIZE 0,-14
DEFINE FONT oFont[2] NAME "TAHOMA" SIZE 0,-14 UNDERLINE
DEFINE DIALOG oDlg SIZE 537,300 PIXEL TRUEPIXEL TITLE "xBrowse con UrlLink"

    @ 20,20 XBROWSE oBrw DATASOURCE aData OF oDlg PIXEL SIZE 500,200 AUTOSORT AUTOCOLS LINES CELL;
                 HEADERS "Empresa / Mensaje", "URL / Acción" COLSIZES {150,300} FONT oFont[1]
   
          WITH OBJECT oBrw:aCols[2]
              :bLDClickData := { || Opciones(aData, oBrw) }
              :oDataFont := {|| iif( aData[oBrw:nArrayAt, 3] == 1, oFont[2], oFont[1]) }
              :aClrText  := {|| Iif( aData[oBrw:nArrayAt, 3] == 1, nRGB(50,50,200), nRGB(0,0,0) )}
              :bCellToolTip := { |oCol| {"Doble clic para abrir enlace o ejecutar Proceso","Selecciona:"} }
         END
   
         oBrw:nRowDividerStyle := LINESTYLE_LIGHTGRAY
         oBrw:nColDividerStyle := LINESTYLE_LIGHTGRAY
         oBrw:CreateFromCode()
   
   ACTIVATE DIALOG oDlg CENTERED

Return(NIL)
//-------------------------------------------------//

Function Opciones(aData, oBrw)
   LOCAL nOpcion := aData[oBrw:nArrayAt, 3]
   DO CASE
      CASE nOpcion == 1
           Shellexecute( 0, "Open", aData[oBrw:nArrayAt, 2] )
      CASE nOpcion == 2
           Dos()
      CASE nOpcion == 3
           Tres()
   ENDCASE
Return(NIL)
//-------------------------------------------------//

Function Dos()
   MsgInfo("Opción Dos")
Return(NIL)
//-------------------------------------------------//

Function Tres()
   MsgInfo("Opción Tres")
Return(NIL)
//-------------------------------------------------//

Re: URLLINK + XBROWSE

PostPosted: Tue Feb 27, 2024 4:28 pm
by leandro
Excelente ejemplo Carlos, para causar un mejor efecto solo faltaría que apareciera la manito (cursor) sobre el link.
Image

Re: URLLINK + XBROWSE

PostPosted: Tue Feb 27, 2024 4:59 pm
by karinha
Carlos, marabilloso d+

Code: Select all  Expand view

// C:\FWH\SAMPLES\SILVIURL.PRG

#include "FiveWin.ch"

FUNCTION Inicio()

   LOCAL oDlg, oBrw, oFont[ 2 ]
   LOCAL aData := { { "xHarbour", "http://www.xharbour.org/", 1 }, ;
                    { "Cualquier cosa", "Ejecuta proceso Tres", 3 }, ;
                    { "Fivetech", "www.fivetechsoft.com", 1 }, ;
                    { "Forum Fivetecht", "https://forums.fivetechsupport.com", 1 }, ;
                    { "Tarea adicional", "Ejecuta proceso Dos", 2 } }

   LOCAL oCursorBtn := TCursor():New(, 'HAND' )

   DEFINE FONT oFont[ 1 ] NAME "TAHOMA" SIZE 0, - 14
   DEFINE FONT oFont[ 2 ] NAME "TAHOMA" SIZE 0, - 14 UNDERLINE

   DEFINE DIALOG oDlg SIZE 537, 300 PIXEL TRUEPIXEL ;
      TITLE "xBrowse con UrlLink"

   oDlg:lHelpIcon := .F.

   @ 20, 20 XBROWSE oBrw DATASOURCE aData OF oDlg PIXEL SIZE 500, 200   ;
      AUTOSORT AUTOCOLS LINES CELL                                      ;
      HEADERS "Empresa / Mensaje", "URL / Acción" COLSIZES { 150, 300 } ;
      FONT oFont[ 1 ]

   oBrw:cTooltip := { "Click-Me",                                    ;
                      "Silvio Falconi", 1, CLR_WHITE, CLR_CYAN }

   BrwColors( oBrw, .T. )

   WITH OBJECT oBrw:aCols[ 2 ]

      :bLDClickData := {|| Opciones( aData, oBrw ) }
      :oDataFont := {|| iif( aData[ oBrw:nArrayAt, 3 ] == 1, oFont[ 2 ], oFont[ 1 ] ) }
      :aClrText  := {|| iif( aData[ oBrw:nArrayAt, 3 ] == 1, nRGB( 50, 50, 200 ), nRGB( 0, 0, 0 ) ) }
      :bCellToolTip := {| oCol | { "Doble clic para abrir enlace o ejecutar Proceso", "Selecciona:" } }

   END

   oBrw:oCursor := oCursorBtn
   oBrw:nRowDividerStyle := LINESTYLE_LIGHTGRAY
   oBrw:nColDividerStyle := LINESTYLE_LIGHTGRAY
   oBrw:CreateFromCode()

   ACTIVATE DIALOG oDlg CENTERED

RETURN NIL

STATIC FUNCTION BrwColors( oBrw, lFoot )

   local cClrBack
   DEFAULT lFoot          := .F.

   oBrw:l2007             := .F.
   oBrw:nRowHeight        := 24
   oBrw:nHeaderHeight     := 24
   oBrw:lFooter           := lFoot
   
   //oBrw:lRecordSelector     := .F.
   //oBrw:lColDividerComplete := .F.
   //oBrw:lRowDividerComplete := .F.
   
   oBrw:lFlatStyle        := .T.
   oBrw:bClrHeader        := { || { CLR_BLACK, CLR_WHITE, CLR_WHITE } } //RGB( 232, 255, 232 ), RGB( 232, 255, 232 ) }}
   oBrw:lFullGrid         := .F.
   oBrw:nRowDividerStyle  := LINESTYLE_NOLINES //DARKGRAY  //LINESTYLE_LIGHTGRAY      //
   oBrw:nColDividerStyle  := LINESTYLE_NOLINES //LIGHTGRAY // LINESTYLE_NOLINES

   oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW

   oBrw:bClrStd = { || If( oBrw:KeyNo() % 2 == 0, ;
                         { If( ( oBrw:cAlias )->( Deleted() ), CLR_HRED, CLR_BLUE ),;
                           RGB( 198, 255, 198 ) }, ;
                         { If( ( oBrw:cAlias )->( Deleted() ), CLR_HRED, CLR_BLUE ),;
                           RGB( 232, 255, 232 ) } ) }

   oBrw:bClrSel = { || { If( ( oBrw:cAlias )->( Deleted() ), CLR_HRED, CLR_WHITE ),;
                           RGB( 34, 177, 76 ) } } //RGB( 0x33, 0x66, 0xCC ) } }
   
   cClrBack = Eval( oBrw:bClrSelFocus )[ 2 ]

   oBrw:bClrSelFocus  := { || { If( ( oBrw:cAlias )->( Deleted() ), CLR_HRED, CLR_WHITE ),;
                              cClrBack } }

   oBrw:SetColor( CLR_BLUE, RGB( 232, 255, 232 ) )

RETURN NIL

FUNCTION Opciones( aData, oBrw )

   LOCAL nOpcion := aData[ oBrw:nArrayAt, 3 ]

   DO CASE
   CASE nOpcion == 1

      Shellexecute( 0, "Open", aData[ oBrw:nArrayAt, 2 ] )

   CASE nOpcion == 2

      Dos()

   CASE nOpcion == 3

      Tres()

   ENDCASE

RETURN NIL

FUNCTION Dos()

   MsgInfo( "Opción Dos" )

RETURN NIL

FUNCTION Tres()

   MsgInfo( "Opción Tres" )

RETURN NIL

// FIN / END
 


Gracias.

Regards, saludos.

Re: URLLINK + XBROWSE

PostPosted: Tue Feb 27, 2024 5:13 pm
by Cgallegoa
Leandro,

Lo del cursor esta complicado, encontré dos inconvenientes:

1.- xBrowse permite definir cursor general a todo el Browse, no a columnas individuales, que sería lo interesante.
2.- Así lo definas un cursor al Browse, en la columna en la que se asinge ToolTip, se anula el cursor.

Ojalá Antonio o Mr.Rao nos dan una mano.