Labels and OnMouseHover

HMG Samples and Enhancements

Moderator: Rathinagiri

User avatar
mol
Posts: 3358
Joined: Thu Sep 11, 2008 5:31 am
Location: Myszków, Poland
Has thanked: 256 times
Been thanked: 162 times
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: 966
Joined: Fri Mar 20, 2009 11:38 am
DBs Used: DBF
Location: Alicante - Spain
Been thanked: 187 times
Contact:

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 7590 times

User avatar
mol
Posts: 3358
Joined: Thu Sep 11, 2008 5:31 am
Location: Myszków, Poland
Has thanked: 256 times
Been thanked: 162 times
Contact:

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 167 times

User avatar
mustafa
Posts: 966
Joined: Fri Mar 20, 2009 11:38 am
DBs Used: DBF
Location: Alicante - Spain
Been thanked: 187 times
Contact:

Post by mustafa »

OK, thanks

Regards

User avatar
mol
Posts: 3358
Joined: Thu Sep 11, 2008 5:31 am
Location: Myszków, Poland
Has thanked: 256 times
Been thanked: 162 times
Contact:

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: 2503
Joined: Sun Nov 25, 2012 2:44 pm
DBs Used: 1 MySQL - MariaDB
2 DBF
Location: Belgium
Has thanked: 799 times
Been thanked: 153 times
Contact:

Post by serge_girard »

Thanks Marek !

Serge

User avatar
Rathinagiri
Posts: 5295
Joined: Tue Jul 29, 2008 6:30 pm
DBs Used: MariaDB, SQLite, SQLCipher and MySQL
Location: Sivakasi, India
Has thanked: 183 times
Been thanked: 198 times
Contact:

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: 1143
Joined: Sat Sep 10, 2011 4:07 am
Location: India
Has thanked: 241 times
Been thanked: 139 times

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: 2286
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Has thanked: 345 times
Been thanked: 61 times
Contact:

Post by danielmaximiliano »

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

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO

trmpluym
Posts: 267
Joined: Tue Jul 15, 2014 6:52 pm
Location: The Netherlands
Has thanked: 8 times
Been thanked: 37 times

Post by trmpluym »

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

Post Reply