Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Transparent Grid
Message
From
02/08/2010 11:03:21
Charlie Schreiner
Myers and Stauffer Consulting
Topeka, Kansas, United States
 
General information
Forum:
Visual FoxPro
Category:
Forms & Form designer
Environment versions
Visual FoxPro:
VFP 9 SP2
OS:
Windows XP SP2
Application:
Desktop
Miscellaneous
Thread ID:
01474372
Message ID:
01474879
Views:
77
>Hi
>Is it possible to make VFP grid Transparent (with GDI+ or whatever)?
>Thanks

This is what I do. I added Sleep and Wake methods to the base class grid. I only use VCXs, so this code may not run, but should give you some ideas.
PROCEDURE Sleep
WITH This
   IF NOT VARTYPE(This.DumbCover)=="O"
      ADDPROPERTY(This,'DumbCover',NEWOBJECT('frmTransparent','frmTransparent.VCX'))
   ENDIF

   .DumbCover.MakeDumbCover(This)
   ThisForm.HaveGarbage(this)

   .OldTabStop = .TabStop
   IF .TabStop
      .TabStop = .F.
   ENDIF
ENDWITH
RETURN

PROCEDURE Wake
WITH This
   IF VARTYPE(.DumbCover)=="O"
      .DumbCover.Release()
   ENDIF   
   IF NOT (.OldTabStop = .TabStop)
      .TabStop = .OldTabStop
   ENDIF
ENDWITH
The transparent part is:
**************************************************
*-- Class:        frmtransparent 
*-- ParentClass:  frmbase
*-- BaseClass:    form
*-- Time Stamp:   06/04/2010 10:35:14 AM
*-- Semi-Transparent form to disable mouse clicks and convey a wait-mode condition.
*
DEFINE CLASS frmtransparent AS frmbase
	Desktop = .T.
	DoCreate = .T.
	*-- 50 = lowest, 254 = highest.
	fade = 120
	*-- creator object. Object you want to cover.
	oparent = .NULL.
	Name = "frmtransparent"

	*-- Make the form semi-transparent.
	PROCEDURE showfade
		SetLayeredWindowAttributes(This.HWnd, 0, This.Fade, 2)
	ENDPROC

	*-- Pass the object you want to cover.
	PROCEDURE makedumbcover
		LPARAMETERS Obj2Cover
		ASSERT VARTYPE(Obj2Cover)=="O" MESSAGE "You must pass the object you wish to cover."
		WITH This
		   .oParent = m.Obj2Cover
		   .TitleBar = 0
		   .Resize()
		   BINDEVENT(Obj2Form(.oParent), "Moved", This, "Resize")
		   BINDEVENT(_SCREEN, "Moved", This, "Resize")
		   BINDEVENT(.oParent, "Resize", This, "Resize")
		   .MousePointer = MOUSE_HOURGLASS

		   IF NOT .Visible 
		      .Show()
		   ENDIF      
		ENDWITH
		RETURN
	ENDPROC


	PROCEDURE Resize
		LOCAL obj
		WITH This
		   IF VARTYPE(.oParent)=="O"
		      IF .oParent.BaseClass = "Form"
		         obj = .oParent
		         .Top    = OBJTOCLIENT(m.obj,1) 
		         .Left   = OBJTOCLIENT(m.obj,2)
		         .Width  = OBJTOCLIENT(m.obj,3)
		         .Height = OBJTOCLIENT(m.obj,4)
		      ELSE
		         obj = Obj2Form(.oParent)
		         .Top    = OBJTOCLIENT(m.obj,1) + OBJTOCLIENT(.oParent,1) + m.Obj.TitleHeight
		         .Left   = OBJTOCLIENT(m.obj,2) + OBJTOCLIENT(.oParent,2)
		         .Width  = OBJTOCLIENT(.oParent,3)
		         .Height = OBJTOCLIENT(.oParent,4)
		      ENDIF
		   ENDIF
		ENDWITH
		RETURN
	ENDPROC


	PROCEDURE Show
		LPARAMETERS nStyle   && Normal parameter are 1 = modal, 2 = nonmodal.
		This.ShowFade()
	ENDPROC


	PROCEDURE Init
		DODEFAULT()
		DECLARE SetWindowLong In Win32Api Integer, Integer, Integer
		DECLARE SetLayeredWindowAttributes In Win32Api Integer, String, Integer, Integer
		SetWindowLong(This.HWnd, -20, 0x00080000)
		RETURN
	ENDPROC


	PROCEDURE Release
		LPARAMETER Force
		This.oParent = NULL
		DODEFAULT(m.Force)
	ENDPROC


ENDDEFINE
*
*-- EndDefine: frmtransparent
**************************************************
Charlie
Previous
Reply
Map
View

Click here to load this message in the networking platform