Consultor Eletrônico



Kbase P104005: Resizing window causes fill-in widgets to be blanked out
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   11/9/2009
Status: Verified

SYMPTOM(s):

4GL/ABL: Window is resized by user at runtime to make it larger then resized again to make it smaller

Using VIRTUAL-HEIGHT-PIXELS attribute

Button is then pressed which issues a DISPLAY command to change the contents of one of the fill-in widgets on the window

Using DISPLAY command after setting virtual height

All other fill-in widgets on the window are then blanked out

The application contains code that assigns the frame's height and virtual height as follows:
IF iFrameHeight < FRAME FrameMain:HEIGHT-PIXELS THEN
ASSIGN
FRAME FrameMain:HEIGHT-PIXELS = iFrameHeight
FRAME FrameMain:VIRTUAL-HEIGHT-PIXELS = iFrameHeight.

FACT(s) (Environment):

Windows
OpenEdge 10.x

CAUSE:

Bug# OE00115582

CAUSE:

The code assigns the frame's HEIGHT-PIXELS then its VIRTUAL-HEIGHT-PIXELS. This order of assignment leaves Progress in a state where it thinks the field-group (the internal object which contains the widgets in the frame) is in a multiple DOWN frame. The fill-ins were cleared in this case because that's what Progress does a DOWN frame iterates.

FIX:

The solution is to reverse the order of assignment by assigning the frame's VIRTUAL-HEIGHT-PIXELS then its HEIGHT-PIXELS instead of the offending frame's HEIGHT-PIXELS then its VIRTUAL-HEIGHT-PIXELS. For example change the code snippet:
IF iFrameHeight < FRAME FrameMain:HEIGHT-PIXELS THEN
ASSIGN
FRAME FrameMain:HEIGHT-PIXELS = iFrameHeight
FRAME FrameMain:VIRTUAL-HEIGHT-PIXELS = iFrameHeight.
To:
IF iFrameHeight < FRAME FrameMain:HEIGHT-PIXELS THEN
ASSIGN
FRAME FrameMain:VIRTUAL-HEIGHT-PIXELS = iFrameHeight
FRAME FrameMain:HEIGHT-PIXELS = iFrameHeight.