Kbase P105021: Cannot specify ImageInsensitive attribute for SmartToolbar actions
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  6/6/2005 |
|
Status: Unverified
SYMPTOM(s):
Cannot specify ImageInsensitive attribute for SmartToolbar actions
ImageInsensitive attribute for the toolbar action is specified in the defineAction function
The ImageInsensitive attribute is ignored when the toolbar is created
CAUSE:
Enhancement request# 20050606-023
FIX:
Use the toolbarcustom.p procedure and do the following steps:
1- Define the following variable in the definition block:
DEFINE VARIABLE hActionBuffer AS HANDLE NO-UNDO.
2- Create InitializeObject and write the following code:
ASSIGN hActionBuffer = DYNAMIC-FUNCTION('getActionBuffer':U
INTARGET-PROCEDURE).
RUN SUPER.
3- Create the 'createButton' function and add the following code:
RETRUNS HANDLE ( phFrame AS HANDLE,
INPUT-OUTPUT piXY AS INTEGER,
pcName AS CHARACTER,
pcLabel AS CHARACTER,
pcTooltip AS CHARACTER,
pcImage AS CHARACTER,
plSensitive AS LOGICAL ) :
DEFINE VARIABLE hButton AS HANDLE NO-UNDO.
DEFINE VARIABLE iImageOffsetX AS INTEGER NO-UNDO.
DEFINE VARIABLE iImageOffsetY AS INTEGER NO-UNDO.
DEFINE VARIABLE iImageWidth AS INTEGER NO-UNDO.
DEFINE VARIABLE iImageHeight AS INTEGER NO-UNDO.
DEFINE VARIABLE cImage AS CHARACTER NO-UNDO.
DEFINE VARIABLE lImageLoad AS LOGICAL NO-UNDO.
DEFINE VARIABLE cInsensitiveImage AS CHARACTER NO-UNDO.
ASSIGN hButton = SUPER(phframe, pixy, pcname, pclabel, pctooltip, pcimage, plsensitive)
cInsensitiveImage = hActionBuffer:BUFFER-FIELD("ImageInsensitive":U):BUFFER-VALUE.
IF cInsensitiveImage NE ? OR cInsensitiveImage NE "" THEN
IF NUM-ENTRIES(cInsensitiveImage) > 1 THEN
DO:
ASSIGN cImage = ENTRY(1,cInsensitiveImage)
iImageOffsetX = INT(ENTRY(2,cInsensitiveImage))
iImageOffsetY = INT(ENTRY(3,cInsensitiveImage))
iImageWidth = INT(ENTRY(4,cInsensitiveImage))
iImageHeight = INT(ENTRY(5,cInsensitiveImage))
NO-ERROR.
IF iImageWidth = 0 THEN iImageWidth = 16.
IF iImageHeight = 0 THEN iImageHeight = 16.
lImageLoad = hButton:LOAD-IMAGE-INSENSITIVE(cImage, iImageOffsetX, iImageOffsetY, iImageWidth, iImageHeight) NO-ERROR.
END.
ELSE
lImageLoad = hButton:LOAD-IMAGE-INSENSITIVE(pcImage) NO-ERROR.
RETURN hButton. /* Function return value. */