ejemplo c5Tooltip

Re: ejemplo c5Tooltip

Postby cnavarro » 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 :shock: :idea: :D

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

Re: ejemplo c5Tooltip

Postby cuatecatl82 » Sun Sep 15, 2013 6: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
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: ejemplo c5Tooltip

Postby elvira » Mon Sep 16, 2013 6:25 am

Antonio,

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

Igual se ha roto este control :roll:
elvira
 
Posts: 515
Joined: Fri Jun 29, 2012 12:49 pm

Re: ejemplo c5Tooltip

Postby Silvio.Falconi » Mon Sep 16, 2013 6: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 November 2023 - January 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
User avatar
Silvio.Falconi
 
Posts: 6769
Joined: Thu Oct 18, 2012 7:17 pm

Re: ejemplo c5Tooltip

Postby elvira » Mon Sep 16, 2013 7: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!!!.
elvira
 
Posts: 515
Joined: Fri Jun 29, 2012 12:49 pm

Re: ejemplo c5Tooltip

Postby Antonio Linares » Mon Sep 16, 2013 8:18 pm

Elvira,

elvira wrote:Antonio,

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

Igual se ha roto este control :roll:


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

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: ejemplo c5Tooltip

Postby Antonio Linares » Mon Sep 16, 2013 9: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
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: ejemplo c5Tooltip

Postby Antonio Linares » Mon Sep 16, 2013 9: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
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: ejemplo c5Tooltip

Postby Ariel » Mon Sep 16, 2013 10:24 pm

Antonio,
creo que lo más claro seria usar un objeto oTooltip.
Salu2, Ariel.
Ariel
 
Posts: 374
Joined: Wed Nov 29, 2006 1:51 pm
Location: Rosario - Argentina

Re: ejemplo c5Tooltip

Postby elvira » Tue Sep 17, 2013 6:37 am

Antonio,

Muy agradecida, no te olvides de probarlo e incluirlo en 64 bits porfa ;))
elvira
 
Posts: 515
Joined: Fri Jun 29, 2012 12:49 pm

Re: ejemplo c5Tooltip

Postby Antonio Linares » Tue Sep 17, 2013 9:10 am

Elvira,

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

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: ejemplo c5Tooltip

Postby cuatecatl82 » Thu Sep 19, 2013 2: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
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: ejemplo c5Tooltip

Postby Antonio Linares » Thu Sep 19, 2013 3: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
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: ejemplo c5Tooltip

Postby cuatecatl82 » 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
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: ejemplo c5Tooltip

Postby Antonio Linares » 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: Select all  Expand view
+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: Select all  Expand view
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: Select all  Expand view
+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
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

PreviousNext

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 105 guests