Labels and OnMouseHover

HMG Samples and Enhancements

Moderator: Rathinagiri

User avatar
mol
Posts: 3718
Joined: Thu Sep 11, 2008 5:31 am
Location: Myszków, Poland
Contact:

Labels and OnMouseHover

Post by mol »

Hi guys!
I was interested if there is a method to create use interface similar to webpage, where label color is changed on mouse hover.
I want to share small sample which realize this idea.
Thanks to Andyglez for his tip

Code: Select all

// OnMouseHover demo
// 2016.06.20 Marek Olszewski

#include "hmg.ch"

Function Main

	private aLabelColors := { => }
	
	aLabelColors [ "KAFEL1" ] := {100,100,100}
	aLabelColors [ "KAFEL2" ] := {100,200,0}
	aLabelColors [ "KAFEL3" ] := {0,200,200}
	
	// turn off case sensitive hash keys matching
	hb_HCaseMatch(aLabelColors, .F.)
	
	DEFINE WINDOW Form_Main ;
		AT 0,0 ;
		WIDTH 640 HEIGHT 600 ;
		TITLE 'Main Window' ;
		MAIN 

		@ 60,10 LABEL KAFEL1 ;
			WIDTH 200 HEIGHT 200 ;
			VALUE "OPTION 1";
			BACKCOLOR aLabelColors [ "KAFEL1" ];
			CENTERALIGN
			
		@ 60,220 LABEL KAFEL2 ;
			WIDTH 200 HEIGHT 200 ;
			VALUE "OPTION 2";
			BACKCOLOR aLabelColors [ "KAFEL2" ];
			CENTERALIGN
			
		@ 270,220 LABEL KAFEL3 ;
			WIDTH 200 HEIGHT 200 ;
			VALUE "OPTION 3";
			BACKCOLOR aLabelColors [ "KAFEL3" ];
			CENTERALIGN

		@ 270,10 LABEL KAFEL4 ;
			WIDTH 200 HEIGHT 200 ;
			VALUE "STATIC OPTION NOT COLORIZED";
			BACKCOLOR {255,255,255};
			CENTERALIGN

	END WINDOW

	CENTER WINDOW Form_Main

	CREATE EVENT PROCNAME OnMouseHover( EventWPARAM(), "FORM_MAIN" )  HWND Form_Main.Handle
	
	ACTIVATE WINDOW Form_Main

Return 
*---------------------
function OnMouseHover
	param hWnd, cFormName
	
	LOCAL cControl := ""
	LOCAL cForm := ""
	static cPrevious := ""
	
	GetControlNameByHandle( hWnd, @cControl, @cForm )
		
	if empty(cControl)
		if !empty(cPrevious)
			// set oryginal color to previous control
			SetProperty(cFormName, cPrevious, "BackColor",aLabelColors [ cPrevious ])
			//to prevent flickering
			cPrevious := ""
			return
		endif
	endif
	
	// to avoid errors - eliminate changes for absent controls in aLabelColors array
	if HB_HPOS( aLabelColors,  cControl) == 0
		return
	endif

	
	if !empty(cPrevious)
		// to avoid flickering
		if !(cControl == cPrevious)
			SetProperty(cFormName, cPrevious, "BackColor",aLabelColors [ cPrevious ])
		endif
	endif

	SetProperty(cForm, cControl, "BackColor",{255,255,0})
	cPrevious := cControl
return
I was proposed additional feature for LABEL control to Claudio for vertical center align.
In connection with this, It's possible to create interface similar to Windows 10 or www page.
Image

Nice testing!
User avatar
mustafa
Posts: 1158
Joined: Fri Mar 20, 2009 11:38 am
DBs Used: DBF
Location: Alicante - Spain
Contact:

Re: Labels and OnMouseHover

Post by mustafa »

Hola amigo Mol:
Felicidades por su aportación
Una pregunta en mi PC Windows 10 Home 64 bits
al compilar me salen la letras en la cabecera
del recuadro.
Como hago para bajarlas más al centro del recuadro.
saludos
*-------------------------------------------------------*
Hello friend Mol:
Congratulations on your contribution
A question on my PC Windows 10 Home 64-bit
when compiling I get the letters in the head
of the box.
As I do to lower them closer to the center of the box.
regards
Mustafa
Attachments
Imagen3.jpg
Imagen3.jpg (39.06 KiB) Viewed 9494 times
User avatar
mol
Posts: 3718
Joined: Thu Sep 11, 2008 5:31 am
Location: Myszków, Poland
Contact:

Re: Labels and OnMouseHover

Post by mol »

Positioning in the middle of label needs modification of hmg h_label.prg and c_label.c library files.
I've duplicated _definelabel funcction to MOL_DefineLabel - sources in attachment.
Attachments
label_SOURCE.ZIP
(4.66 KiB) Downloaded 281 times
User avatar
mustafa
Posts: 1158
Joined: Fri Mar 20, 2009 11:38 am
DBs Used: DBF
Location: Alicante - Spain
Contact:

Re: Labels and OnMouseHover

Post by mustafa »

OK, thanks

Regards
User avatar
mol
Posts: 3718
Joined: Thu Sep 11, 2008 5:31 am
Location: Myszków, Poland
Contact:

Re: Labels and OnMouseHover

Post by mol »

Code: Select all

MOL_DefineLabel("KAFEL3","Form_Main", 220, 270, "My option nr 3", 200, 200,;
						"ARIAL",14, .t., .F., .T.,;
						.f., .f., .f., aLabelColors [ "KAFEL3" ], {64,64,64},;
						NIL,"kafel 3",NIL, .f., .f.,;
						.f., .f., .f. , .F. , .t. ,;
						.f.,.F.,.T.)
Last parameter causes center vertical alignment.
It's important - label defined with center vertical alignment does not supports word wrapping.
User avatar
serge_girard
Posts: 3161
Joined: Sun Nov 25, 2012 2:44 pm
DBs Used: 1 MySQL - MariaDB
2 DBF
Location: Belgium
Contact:

Re: Labels and OnMouseHover

Post by serge_girard »

Thanks Marek !

Serge
There's nothing you can do that can't be done...
User avatar
Rathinagiri
Posts: 5471
Joined: Tue Jul 29, 2008 6:30 pm
DBs Used: MariaDB, SQLite, SQLCipher and MySQL
Location: Sivakasi, India
Contact:

Re: Labels and OnMouseHover

Post by Rathinagiri »

Nice addition. I think we can include this in the next version.
East or West HMG is the Best.
South or North HMG is worth.
...the possibilities are endless.
User avatar
bpd2000
Posts: 1207
Joined: Sat Sep 10, 2011 4:07 am
Location: India

Re: Labels and OnMouseHover

Post by bpd2000 »

Rathinagiri wrote:Nice addition. I think we can include this in the next version.
+1
BPD
Convert Dream into Reality through HMG
User avatar
danielmaximiliano
Posts: 2611
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Contact:

Re: Labels and OnMouseHover

Post by danielmaximiliano »

Gracias por compartir Mol !!!!
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
trmpluym
Posts: 303
Joined: Tue Jul 15, 2014 6:52 pm
Location: The Netherlands

Re: Labels and OnMouseHover

Post by trmpluym »

Rathinagiri wrote:Nice addition. I think we can include this in the next version.
Would be nice !
Post Reply