xBrowse - Tooltip

Post Reply
User avatar
MarioG
Posts: 1356
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

xBrowse - Tooltip

Post by MarioG »

Gente:
Tengo el siguiente browse
Image

El acceso, mediante boton de la columna Banco, abre otro Browse para selección. Devuelve un array con código y descripción, el código se visualiza la lado del boton (como se ve arriba).
Hasta aquí todo correcto.
La pregunta es; si puedo definir un Tooltip, de manera que me muestre la descripción referida a tal codigo
A modo de ejemplo lo hago así (sin exito)

Code: Select all

   WITH OBJECT oLstChq
      ...
      :bChange     := {|| oLstChq:MakeTotals(), nPosActual := oLstChq:BookMark, ;
                          oLstChq:Banco:cToolTip:= aBanco[1][2], oLstChq:Refresh() }
   END
   ...
   WITH OBJECT oLstChq:Banco
      :nHeadStrAlign:= :nDataStrAlign:= AL_RIGHT
      :cEditPicture := PIC_DIEZCIF0
      :nEditType    := EDIT_BUTTON
      :AddResource( "bmp_Banco" )
      :nBtnBmp      := 1

      :bstrData  := {|| aBanco[1][1] }
      :bEditBlock:= {|| aBanco:= (h0["Bancos"]:cAlias)->( oCaptu:Capturas( "FBank01", "FBank02", _ARBANCOS, "Bancos", TRUE, FALSE ) ), ;
                        saChqCobros[oLstChq:nArrayAt][_IDBanco]:= aBanco[1][1], ;
                        oLstChq:Refresh() }
   END
 
Se puede?
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
El Loco
Posts: 220
Joined: Fri May 19, 2006 4:08 pm

Re: xBrowse - Tooltip

Post by El Loco »

Mario, creo que esto puede llegar a darte una idea de como hacerlo.
El FW Samples\TestxBr3.prg tiene una función ShowFunction() que adaptándola te puede llegar a servir.
No tengo una PC a mano para probar pero fijate.
Un gran brazo amigo.
Miguel
User avatar
MarioG
Posts: 1356
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: xBrowse - Tooltip

Post by MarioG »

Miguelito querido!
Muchas gracias. Muy bueno el Tip
Lo estoy estudiando a ver si se puede adaptar

Hay que "inventar" una reunión! ;-)
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
El Loco
Posts: 220
Joined: Fri May 19, 2006 4:08 pm

Re: xBrowse - Tooltip

Post by El Loco »

A ver Marito si esto te sirve.
Tomado de ejemplos de FH (XbRowEd.Prg y TestxBr3.prg chusmeando los prg se puede llegar a encontrar cada joyita .... Grande ANTONIO !!!) con algunas modificaciones.
Hay que pulir un poco el código, (lo hice medio a las disparadas) pero te puede dar una idea.

Code: Select all

/*
*
* XbRowEd.Prg
*
* Using oBrw:CurrentRow() object for popup edits
*
*/


#include 'fivewin.ch'
#include 'adodef.ch'  // in \fwh\include folder
#include 'ord.ch'
#include 'xbrowse.ch'

REQUEST DBFCDX

function Main()

   local oBrw, oDlg, uData
   local oFont

   SET EXCLUSIVE OFF
   SET DELETED ON
   SET OPTIMIZE ON

   SetGetColorFocus()

   USE CUSTOMER NEW ALIAS CUST SHARED VIA 'DBFCDX'

   DEFINE FONT oFont NAME 'TAHOMA' SIZE 0,-12
   DEFINE DIALOG oDlg SIZE 640,460 PIXEL TITLE 'XBrowse Row Edit' ;
                      FONT oFont

   @ 10,10 XBROWSE oBrw SIZE -10,-30 PIXEL OF oDlg ;
      COLUMNS 'First', 'City', 'Age', 'Salary' ;
      PICTURES nil, nil, '999', '99,999,999.99' ;
      OBJECT uData ;
      AUTOSORT CELL LINES NOBORDER ;
      ON DBLCLICK RowEdit( oBrw:CurrentRow() )

   WITH OBJECT oBrw
      :nStretchCol  := STRETCHCOL_WIDEST
      :CreateFromCode()
   END

   @ 210, 10 BUTTON 'Edit'  SIZE 40,14 PIXEL OF oDlg ACTION RowEdit( oBrw:CurrentRow() )
   @ 210,270 BUTTON 'Close' SIZE 40,14 PIXEL OF oDlg ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED
   RELEASE FONT oFont

   DbCloseAll()

return nil

static function RowEdit( oRow )


   local nFrom, nUpto
   Local cText := oRow:First +CRLF+ "__________________________________________"+CRLF+CRLF+  ; 
                                    "Todo el text que quieras poner" +CRLF+ "Ya de forma estatica, como robada desde una .DBF" +CRLF+ ;
                                    "y .... bla, bla, bla, bla, bla, bla, bla..." +CRLF+ ;
                                    "y .... bla, bla, bla, bla, bla, bla, bla..." +CRLF+ ;
                                    "y .... bla, bla, bla, bla, bla, bla, bla..." +CRLF+ ;
                                    "y .... bla, bla, bla, bla, bla, bla, bla..." +CRLF+ ;
                                    "y .... bla, bla, bla, bla, bla, bla, bla..."
  

   nUpto := At( CRLF + "return", Lower( cText ) )
   if nUpto > 0
      cText := Left( cText, nUpto + 11 )
      cText := StrTran( cText, CRLF + "   cFunc := ProcName( 0 )", "" )
   endif

   if !Empty( cText )
      HTMLPOP( GetActiveWindow(), nil, 0x000E, cText )
   endif

return nil
Abrazos Marito y que el Abuelo te proteja.
Miguel
El Loco
Posts: 220
Joined: Fri May 19, 2006 4:08 pm

Re: xBrowse - Tooltip

Post by El Loco »

2do. ejemplo un poco mas sofisticado

Code: Select all

/*
*
* XbRowEd.Prg
*
* Using oBrw:CurrentRow() object for popup edits
*
*/


#include 'fivewin.ch'
#include 'adodef.ch'  // in \fwh\include folder
#include 'ord.ch'
#include 'xbrowse.ch'

REQUEST DBFCDX

function Main()

   local oBrw, oDlg, uData
   local oFont

   SET EXCLUSIVE OFF
   SET DELETED ON
   SET OPTIMIZE ON

   SetGetColorFocus()

   USE CUSTOMER NEW ALIAS CUST SHARED VIA 'DBFCDX'

   DEFINE FONT oFont NAME 'TAHOMA' SIZE 0,-12
   DEFINE DIALOG oDlg SIZE 640,460 PIXEL TITLE 'XBrowse Row Edit' ;
                      FONT oFont

   @ 10,10 XBROWSE oBrw SIZE -10,-30 PIXEL OF oDlg ;
      COLUMNS 'First', 'City', 'Age', 'Salary' ;
      PICTURES nil, nil, '999', '99,999,999.99' ;
      OBJECT uData ;
      AUTOSORT CELL LINES NOBORDER ;
      ON DBLCLICK RowEdit( oBrw:CurrentRow() )

   WITH OBJECT oBrw
      :nStretchCol  := STRETCHCOL_WIDEST
      :CreateFromCode()
   END

   @ 210, 10 BUTTON 'Edit'  SIZE 40,14 PIXEL OF oDlg ACTION RowEdit( oBrw:CurrentRow() )
   @ 210,270 BUTTON 'Close' SIZE 40,14 PIXEL OF oDlg ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED
   RELEASE FONT oFont

   DbCloseAll()

return nil

static function RowEdit( oRow )


   Local nFrom, nUpto
   Local A
   Local cText := oRow:First +CRLF+ "__________________________________________"+CRLF

      For A:= 1 To Len(oRow:aHeaders)
          cText+=  +CRLF+ oRow:aHeaders[A] +" : " 
          Do Case
             Case ValType(oRow:aValues[A]) == "C" ; cText+= + oRow:aValues[A]
             Case ValType(oRow:aValues[A]) == "N" ; cText+= + Str(oRow:aValues[A])
             Case ValType(oRow:aValues[A]) == "L" ; If(oRow:aValues[A] , cText+= + "CASADO" , cText+= + "CASADO")
             Case ValType(oRow:aValues[A]) == "D" ; cText+= + DtoC(oRow:aValues[A])
          Endcase
          cText+= +CRLF+ "__________________________________________"
      Next A

   nUpto := At( CRLF + "return", Lower( cText ) )
   if nUpto > 0
      cText := Left( cText, nUpto + 11 )
      cText := StrTran( cText, CRLF + "   cFunc := ProcName( 0 )", "" )
   endif

   if !Empty( cText )
      HTMLPOP( GetActiveWindow(), nil, 0x000E, cText )
   endif

return nil

 
Besos y abrazos !!!
User avatar
MarioG
Posts: 1356
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: xBrowse - Tooltip

Post by MarioG »

Miguel;
Muchas gracias por tu tiempo!
Interesante la función. Ahora bien, en mi pretensión, la idea es que funcione como un Tooltip (el que por lo que observo, no funciona al señalar una celda, sino que lo hace sobre la cabecera).
O sea, la idea es que al señalar un "celda" que contiene un código, muestre su descripción...peeeero, sin tener que pulsar sobre un boton externo al browse.
Quizás es un poco loco... pero bue, ocurrencias dada la potencia de xbrowse.

Feliz Navidad y finde!!! (para todos)
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
hmpaquito
Posts: 1200
Joined: Thu Oct 30, 2008 2:37 pm

Re: xBrowse - Tooltip

Post by hmpaquito »

Mario,

Yo lo tengo implementado, asi como dices tu, un tooltip que devuelve un texto variable sobre las lineas de cuerpo del browse, pero para la clase TSBrowse(). Mi clase TSBrowse(), literalmente, "da miedo" por la cantidad de cambios y hackings que tiene.
Basicamente, como lo tengo, es interviniendo el metodo :MouseMove() donde se llama al metodo (padre) :ShowToolTip(). Es necesario una Data tipo codeblock por cada objeto oCol que tenga la descripcion a mostrar. El codeblock deberia recibir como parametro el dato de la celda, o incluso el registro actual, para dbfs. Como guinda del pastel, el globo que aparece, muestra como titulo la cabecera de la columna, en negrita y debajo el texto segun el dato que hay debajo del puntero del mouse.

Feliz Navidad para todos ! :D
El Loco
Posts: 220
Joined: Fri May 19, 2006 4:08 pm

Re: xBrowse - Tooltip

Post by El Loco »

MarioG wrote:Miguel;
Muchas gracias por tu tiempo!
Interesante la función. Ahora bien, en mi pretensión, la idea es que funcione como un Tooltip (el que por lo que observo, no funciona al señalar una celda, sino que lo hace sobre la cabecera).
O sea, la idea es que al señalar un "celda" que contiene un código, muestre su descripción...peeeero, sin tener que pulsar sobre un boton externo al browse.
Quizás es un poco loco... pero bue, ocurrencias dada la potencia de xbrowse.

Feliz Navidad y finde!!! (para todos)
Mario no solo te trae la información de los Head si no también el contenido de _, además no hace falta pulsar el botón, con solo cliclear sobre una celda te trae la información del registro.
En el primer ejemplo hace exactamente eso. En cuanto a la información que te muestra esa la podes manejar a tu antojo.
La idea en si es que veas la posibilidades que da la función en si, las posibilidades son enormes.
Otra ventaja que le veo sobre el tooltip, es que permanece el hasta que le realices un nuevo click.

Bueno era solo una idea.
Abrazos.
Miguel
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: xBrowse - Tooltip

Post by cnavarro »

Hola
Creo que la clase TXBrwColumn de XBrowse tiene una DATA bToolTip
Este es el código que aparece con los parámetros que son pasados al codeblock

Code: Select all

cTxt := eval( oCol:bToolTip, Self, nRow, nCol, nkeyFlags )
 
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
MarioG
Posts: 1356
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: xBrowse - Tooltip

Post by MarioG »

hmpaquito. Muchas gracias por tu interés

Miguel:
Que torpe!. No miré la declaración de DBLCLIC en el XBROWSE

CNavarro:
gracias!. Lo estoy probando
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
rolando
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: xBrowse - Tooltip

Post by rolando »

Mario, si le agregas a

Code: Select all

METHOD CreateButtons() CLASS TXBrwColumn

...

@ 0,0 BTNBMP ::oBtnElip OF ::oBrw NOBORDER SIZE 0,0
::oBtnElip:cCaption := IfNil( ::cBtnCaption, "..." )
::oBtnElip:bAction := {|| ::RunBtnAction() }
::oBtnElip:SetFont( If( ValType( ::oDataFont ) == "B", Eval( ::oDataFont, Self ), ::oDataFont ) )
::oBtnElip:SetColor( aColors[ 1 ], aColors[ 2 ] )

::oBtnElip:cTooltip:="prueba"   // agregado

...
Al pasar sobre un boton sale el tooltip "prueba"

A partir de esto supongo podrías reformar la clase para que haga lo que pretendes (agregandole datas, etc.)

Saludos

Rolando
User avatar
MarioG
Posts: 1356
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: xBrowse - Tooltip

Post by MarioG »

Rolando, gracias!
Lo uso en botones... pero estoy contra reloj... asi es que quedará como tarea pendiente
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Post Reply