FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour ejemplo c5Tooltip
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: ejemplo c5Tooltip
Posted: Sun Sep 15, 2013 10:43 AM
Antonio Linares wrote:Cristobal,

Pero ese bot贸n de cierre no parece estandard. No me suena haberlo visto nunca...


Antonio, creia que tu proposito era hacer un control que se diferenciase del standard :-) :-) :-)

Silvio

I'm thinking the button close is no need !!!


Yo creo que el motivo de que Antonio piense poner el boton de cierre es porque el ToolTip se controla con ::nTimer y no por la posicion del raton.

I think the reason that Antonio intends to place the button closure is because the ToolTip :: nTimer is controlled not by the position of the mouse.
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: 625
Joined: Wed Mar 14, 2007 06:49 PM
Re: ejemplo c5Tooltip
Posted: Sun Sep 15, 2013 06:42 PM
Maestro Antonio:

隆隆 Excelente trabajo !!
Me gusta como se ven:

Me surgen unas ideas complementarias, opino que sea opcional con la variable lBtnClose mostrar la "X" para cerrar el toolfip, caso contrario se cerraria con el timer tal y como propone Silvio para poderlo usar como Tootips de notificaciones.

Y la otra que pueda seleccionarse con nType el tipo de tooltip a usar en los programas, (1) Los Normales de la Api de Windows, (2) los BallonTooltip y (3) los nuevos C5Tooltip..

Solo como sugerencia...
Soluciones y Dise帽o de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Dise帽ador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Posts: 518
Joined: Fri Jun 29, 2012 12:49 PM
Re: ejemplo c5Tooltip
Posted: Mon Sep 16, 2013 06:25 AM

Antonio,

Y esos cambios en las funciones de Paco, funcionan con Vistamnu?.

Igual se ha roto este control :roll:

Posts: 7318
Joined: Thu Oct 18, 2012 07:17 PM
Re: ejemplo c5Tooltip
Posted: Mon Sep 16, 2013 06:29 PM
Elvira,
on VistaMenu there is a method call c5 tooltip class
SetTooltip( cTooltip, cBmp, cHeader, cBmpHeader, cFoot, cBmpFoot, cBtnClose )


sample from prueba1.prg
oItem:SetTooltip( "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.","..\..\images2\phone.bmp","Seguridad")
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)

I use : FiveWin for Harbour March-April 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
Posts: 518
Joined: Fri Jun 29, 2012 12:49 PM
Re: ejemplo c5Tooltip
Posted: Mon Sep 16, 2013 07:15 PM

Silvio,

Me refiero a que si la propia clase con los cambios de las funciones de la librer铆a de Paco seguir谩 funcionando correctamente!!!.

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: ejemplo c5Tooltip
Posted: Mon Sep 16, 2013 08:18 PM
Elvira,

elvira wrote:Antonio,

Y esos cambios en las funciones de Paco, funcionan con Vistamnu?.

Igual se ha roto este control :-)


Probado y funcionando. Gracias por la idea de asegurar probandolo :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: ejemplo c5Tooltip
Posted: Mon Sep 16, 2013 09:06 PM

Aclaremos ciertos conceptos respecto a los tooltips:

  1. Los que FWH usa por defecto son los estandard de Windows. Con una cadena los especificamos, ejemplo: TOOLTIP "Informaci贸n"

  2. Cuando se especifica un array (贸 un codeblock que devuelve un array) en vez de una cadena para el tooltip, se pueden especificar estos par谩metros: { cToolTipText, [cHeader, [nIcon]], [nForeColor], [nBackColor] }

  3. La evoluci贸n l贸gica de esto es usar un objeto, con lo que podemos configurar super tooltips con todos los efectos que se nos vayan ocurriendo y que los hagan llamativos. Como punto de partida usamos la Clase TC5Tooltip que iremos ampliando y mejorando. Gracias a Paco que nos ha motivado en investigar esta l铆nea y por su valioso c贸digo.

Al usar objetos, no tiene sentido el crear y destruir un objeto una y otra vez, porque esto es m谩s lento que mantener un objeto y reusarlo en la medida de lo posible. De aqui que necesitamos una DATA oToolTip en donde se guarda este objeto super tooltip y que se reusa cada vez que ha de ser mostrado. El tooltip tiene una data lShowAgain que al ser .T. requiere de que el tooltip sea mostrado la pr贸xima vez (por ejemplo, al salir de la ventana)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: ejemplo c5Tooltip
Posted: Mon Sep 16, 2013 09:17 PM

La siguiente pregunta es: Si estos super tooltips pueden ser la evoluci贸n de los tooltips, los comandos de FiveWin que usan TOOLTIP debieran aceptar un objeto super tooltip como par谩metro, en vez de una cadena. Por ejemplo:

@ ..., ... GET cPrueba ... TOOLTIP oToolTipGet1

y puesto que ese objeto tooltip ha de ser creado previamente y almacenado en una DATA, 驴 usamos una nueva DATA oToolTip 贸 usamos la misma DATA cToolTip pero guardando ahi el objeto ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 389
Joined: Wed Nov 29, 2006 01:51 PM
Re: ejemplo c5Tooltip
Posted: Mon Sep 16, 2013 10:24 PM

Antonio,
creo que lo m谩s claro seria usar un objeto oTooltip.
Salu2, Ariel.

Posts: 518
Joined: Fri Jun 29, 2012 12:49 PM
Re: ejemplo c5Tooltip
Posted: Tue Sep 17, 2013 06:37 AM

Antonio,

Muy agradecida, no te olvides de probarlo e incluirlo en 64 bits porfa ;))

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: ejemplo c5Tooltip
Posted: Tue Sep 17, 2013 09:10 AM

Elvira,

Probado y funcionando bien en 64 bits, gracias :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Re: ejemplo c5Tooltip
Posted: Thu Sep 19, 2013 02:54 PM

Maestro Antonio:

Alg煤n avance para los mortales..?

Soluciones y Dise帽o de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Dise帽ador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: ejemplo c5Tooltip
Posted: Thu Sep 19, 2013 03:18 PM

Victor,

Ya est谩 incluido en FWH 13.08 que acabamos de publicar. Desafortunadamente hay cambios a nivel interno que precisan de una nueva libreria fivehc.lib, ya que ahora siempre se procesa WM_MOUSELEAVE.

No hay problema en publicar aqui los cambios que hay que hacer en window.prg, pero sin esos cambios en FiveHC.lib no funciona, salvo que se modifique HandleEvent() desde nivel PRG.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Re: ejemplo c5Tooltip
Posted: Fri Sep 20, 2013 12:07 AM

D麓OOH!..

Por lo pronto me animo por los cambios en window.prg.. :lol: :lol:

Saludos y gracias..

Soluciones y Dise帽o de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Dise帽ador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: ejemplo c5Tooltip
Posted: Fri Sep 20, 2013 10:49 AM
#define TME_LEAVE 2

DATA bResized, bLDblClick, bWhen, bValid, bKeyChar, bMLeave, bMMoved

DATA oToolTip

METHOD CheckToolTip( nRow, nCol )

METHOD IsVisible() INLINE IsWindowVisible( ::hWnd )

METHOD MouseLeave( nRow, nCol, nKeyFlags )

Code (fw): Select all Collapse
+METHOD MouseLeave( nRow, nCol, nKeyFlags ) CLASS TWindow
+
+   if ::oToolTip != nil
+      if ::oToolTip:IsVisible()
+         ::oToolTip:Hide()
+      endif
+      ::oToolTip:lShowAgain = .T.
+   endif      
+
+   if ! Empty( ::bMLeave )
+      Eval( ::bMLeave, nRow, nCol, nKeyFlags, Self )
+   endif
+
+return nil


Code (fw): Select all Collapse
 METHOD MouseMove( nRow, nCol, nKeyFlags ) CLASS TWindow
 
    if ::oCursor != nil
 
    ::SetMsg( ::cMsg )
 
-   ::CheckToolTip()
+   ::CheckToolTip( nRow, nCol )
 
    if ::OnMouseMove != nil
       if ValType( ::OnMouseMove ) == "B"
       return Eval( ::bMMoved, nRow, nCol, nKeyFlags )
    endif
 
+   TrackMouseEvent( ::hWnd, TME_LEAVE )
+   
 return 0


Code (fw): Select all Collapse
+METHOD CheckToolTip( nRow, nCol ) CLASS TWindow
+
+   local aPoint
+
+   if ::oToolTip != nil
+      if ::oToolTip:nTop != ::nTop + nRow + 10 .and. ;
+         ::oToolTip:nLeft != ::nLeft + nCol + 10
+         aPoint = { ::nTop + nRow + 10, ::nLeft + nCol + 10 }
+         ClientToScreen( ::hWnd, aPoint )
+         ::oToolTip:SetPos( aPoint[ 1 ], aPoint[ 2 ] )
+      endif   
+      if ( ! ::oToolTip:IsVisible() ) .and. ::oToolTip:lShowAgain
+         ::oToolTip:Show()
+         ::oToolTip:lShowAgain = .F.
+      endif
+      return nil
+   endif   

   ...
regards, saludos

Antonio Linares
www.fivetechsoft.com