Page 1 of 1
xBrowse - Tooltip
Posted: Wed Dec 18, 2013 2:30 pm
by MarioG
Gente:
Tengo el siguiente browse
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?
Re: xBrowse - Tooltip
Posted: Wed Dec 18, 2013 4:02 pm
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
Re: xBrowse - Tooltip
Posted: Wed Dec 18, 2013 10:33 pm
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!
Re: xBrowse - Tooltip
Posted: Thu Dec 19, 2013 12:56 am
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
Re: xBrowse - Tooltip
Posted: Thu Dec 19, 2013 2:01 am
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 !!!
Re: xBrowse - Tooltip
Posted: Thu Dec 19, 2013 12:25 pm
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)
Re: xBrowse - Tooltip
Posted: Thu Dec 19, 2013 2:18 pm
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 !
Re: xBrowse - Tooltip
Posted: Thu Dec 19, 2013 7:05 pm
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
Re: xBrowse - Tooltip
Posted: Thu Dec 19, 2013 9:18 pm
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 )
Re: xBrowse - Tooltip
Posted: Thu Dec 19, 2013 10:26 pm
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
Re: xBrowse - Tooltip
Posted: Thu Dec 19, 2013 11:58 pm
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
Re: xBrowse - Tooltip
Posted: Fri Dec 20, 2013 12:36 am
by MarioG
Rolando, gracias!
Lo uso en botones... pero estoy contra reloj... asi es que quedará como tarea pendiente