Adding PREEVAL o:ClipChildren := .T.

Xbase++ 2.0 Build 554 or later
Post Reply
Message
Author
Cliff Wiernik
Posts: 605
Joined: Thu Jan 28, 2010 9:11 pm
Location: Steven Point, Wisconsin USA
Contact:

Adding PREEVAL o:ClipChildren := .T.

#1 Post by Cliff Wiernik »

To make the HILITEGETS GRA_CLR_BLUE clause work properly in Xbase 2.0 under these conditions:

objects displayed in a DCGROUPBOX
themes enabled on a DCTABPAGE
XBPSYSCLR_TRANSPARENT is in use

There currently is a bug in Xbase 2.0. This causes the invalidaterect() method to not work properly.

In 1.9, I overload the default Express++ code that removes the HILITEGETS.

If you are using themes, the default Express++ code removes it by display a GRA_CLR_BACKGROUND line over the original blue line. This, when using themes leaves a light trace on the screen as it is not the same color. I use code from the Xbase++ help file for invalidaterect() to cause the box to be repainted, removing the highlight.

In Xbase 2.0, Alaska is providing a workaround to by setting in the PREEVAL clause the parent of the groupbox's clipChildren instance variable to .T.

I can manually add code to my programs to do this, in about 4-500 places or more. Is there any easier way to make this change for only specific instances. The reason is this may be a temporary workaround once they fix the problem.

Cliff

User avatar
Auge_Ohr
Posts: 1407
Joined: Wed Feb 24, 2010 3:44 pm

Re: Adding PREEVAL o:ClipChildren := .T.

#2 Post by Auge_Ohr »

Cliff Wiernik wrote:In Xbase 2.0, Alaska is providing a workaround to by setting in the PREEVAL clause the parent of the groupbox's clipChildren instance variable to .T.

I can manually add code to my programs to do this, in about 4-500 places or more. Is there any easier way to make this change for only specific instances. The reason is this may be a temporary workaround once they fix the problem.

Cliff
create you own Class in a separate(!) PRG

Code: Select all

CLASS MyTab FROM XbpTabpage
EXPORTED:
INLINE METHOD Init(oParent, oOwner, aPos, aSize, aPP, lVisible)
   ::XbpTabpage:init( oParent, oOwner, aPos, aSize, aPP, lVisible )
   IF( !EMPTY(oParent),oParent:PREEVAL := .T.,NIL)
RETURN self
INLINE METHOD create(oParent, oOwner, aPos, aSize, aPP, lVisible)
   IF( !EMPTY(oParent),oParent:PREEVAL := .T.,NIL)
   ::XbpTabpage:create( oParent, oOwner, aPos, aSize, aPP, lVisible )
RETURN self
ENDCLASS
now write this into your *.CH File

Code: Select all

#xtranslate XbpTabpage  => MyTab
*.CH File have to include in every *.PRG where you use XbpTabpage.
when you do not need Class MyTab any more just delete #xtranslate in *.CH File ;)

! Note : do not include #xtranslate in CLASS MyTab ...
greetings by OHR
Jimmy

User avatar
rdonnay
Site Admin
Posts: 4729
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

Re: Adding PREEVAL o:ClipChildren := .T.

#3 Post by rdonnay »

Is there any easier way to make this change for only specific instances.
I don't know what you mean by specific instances.

Are you asking me to change the eXpress++ source code?
The eXpress train is coming - and it has more cars.

Cliff Wiernik
Posts: 605
Joined: Thu Jan 28, 2010 9:11 pm
Location: Steven Point, Wisconsin USA
Contact:

Re: Adding PREEVAL o:ClipChildren := .T.

#4 Post by Cliff Wiernik »

No changes to express. It is a PDR that hopefully likely will be fixed in early 2016. I can manually add the PREEVAL to my code in the mean time for 2.0 testing but wanted to know if their was an easier way to add the PREEVAL to certain but not all DCSTATIC TYPE XBPSTATIC_TYPE_RECESSEDBOX statements which are the parent of a DCGROUPBOX.

There is this new PDR related to :InvalidateRect() not redrawing statics under certain conditions.

http://www.alaska-software.com/scripts/ ... PDRID=6721

I use this method to remove the HILITEGETS box when you are using themes. The default process does not remove it entirely.

Post Reply