Hi guys,
I would like to be able to change color of rows in dynamic data browsers.
Here is what i did :
in browsercustom.p
in 'initializeObject' :
DEFINE VARIABLE lhBrowseHdl AS HANDLE NO-UNDO.
DEFINE VARIABLE lhColHdl AS HANDLE NO-UNDO.
DEFINE VARIABLE lcColHdls AS CHARACTER NO-UNDO.
DEFINE VARIABLE lhContainer AS HANDLE NO-UNDO.
RUN SUPER.
IF NOT DYNAMIC-FUNCTION('getUIBMode':U IN TARGET-PROCEDURE) BEGINS "DESIGN" THEN DO:
ASSIGN
lcColHdls = ""
lhBrowseHdl = DYNAMIC-FUNCTION('getBrowseHandle':U IN TARGET-PROCEDURE)
lhContainer = DYNAMIC-FUNCTION('getContainerSource':U IN TARGET-PROCEDURE)
lhColHdl = lhBrowseHdl:FIRST-COLUMN.
DO WHILE VALID-HANDLE(lhColHdl):
ASSIGN
lcColHdls = IF lcColHdls <> "":U THEN
lcColHdls + ",":U + STRING(lhColHdl)
ELSE
STRING(lhColHdl)
lhColHdl = lhColHdl:NEXT-COLUMN.
END.
IF VALID-HANDLE(lhContainer) THEN DO:
MESSAGE lhbrowsehdl lhcontainer lccolhdls.
ON "row-display":U OF lhBrowseHdl
PERSISTENT RUN changecouleur IN lhContainer (lhBrowseHdl,lcColHdls).
END.
END.
END PROCEDURE.
And finally, in my container (ie a smart window), i defined my proc
'changecouleur' :
DEFINE INPUT PARAMETER iphBrwHdl AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER ipcColHdls AS CHARACTER NO-UNDO.
DEFINE VARIABLE lhColHdl AS HANDLE NO-UNDO.
DEFINE VARIABLE liPos AS INTEGER NO-UNDO.
DO liPos = 1 TO NUM-ENTRIES(ipcColHdls):
ASSIGN lhColHdl = WIDGET-HANDLE(ENTRY(liPos,gcColHdls))
lhColHdl:FGCOLOR = 9
lhColHdl:BGCOLOR = 12.
END.
END PROCEDURE.
The result :
- i sometimes get to 'changecouleur' be executed (only the second time the object is viewed - not the first time).
- when it does execute, the widgets in the list 'ipcColHdls' are indicated 'not valid'.
I would really welcome your help, as it is an important issue for us to be able to colour our rows as we like.
Thanks in advance.
Sylvestre SEGURON
I would like to be able to change color of rows in dynamic data browsers.
Here is what i did :
in browsercustom.p
in 'initializeObject' :
DEFINE VARIABLE lhBrowseHdl AS HANDLE NO-UNDO.
DEFINE VARIABLE lhColHdl AS HANDLE NO-UNDO.
DEFINE VARIABLE lcColHdls AS CHARACTER NO-UNDO.
DEFINE VARIABLE lhContainer AS HANDLE NO-UNDO.
RUN SUPER.
IF NOT DYNAMIC-FUNCTION('getUIBMode':U IN TARGET-PROCEDURE) BEGINS "DESIGN" THEN DO:
ASSIGN
lcColHdls = ""
lhBrowseHdl = DYNAMIC-FUNCTION('getBrowseHandle':U IN TARGET-PROCEDURE)
lhContainer = DYNAMIC-FUNCTION('getContainerSource':U IN TARGET-PROCEDURE)
lhColHdl = lhBrowseHdl:FIRST-COLUMN.
DO WHILE VALID-HANDLE(lhColHdl):
ASSIGN
lcColHdls = IF lcColHdls <> "":U THEN
lcColHdls + ",":U + STRING(lhColHdl)
ELSE
STRING(lhColHdl)
lhColHdl = lhColHdl:NEXT-COLUMN.
END.
IF VALID-HANDLE(lhContainer) THEN DO:
MESSAGE lhbrowsehdl lhcontainer lccolhdls.
ON "row-display":U OF lhBrowseHdl
PERSISTENT RUN changecouleur IN lhContainer (lhBrowseHdl,lcColHdls).
END.
END.
END PROCEDURE.
And finally, in my container (ie a smart window), i defined my proc
'changecouleur' :
DEFINE INPUT PARAMETER iphBrwHdl AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER ipcColHdls AS CHARACTER NO-UNDO.
DEFINE VARIABLE lhColHdl AS HANDLE NO-UNDO.
DEFINE VARIABLE liPos AS INTEGER NO-UNDO.
DO liPos = 1 TO NUM-ENTRIES(ipcColHdls):
ASSIGN lhColHdl = WIDGET-HANDLE(ENTRY(liPos,gcColHdls))
lhColHdl:FGCOLOR = 9
lhColHdl:BGCOLOR = 12.
END.
END PROCEDURE.
The result :
- i sometimes get to 'changecouleur' be executed (only the second time the object is viewed - not the first time).
- when it does execute, the widgets in the list 'ipcColHdls' are indicated 'not valid'.
I would really welcome your help, as it is an important issue for us to be able to colour our rows as we like.
Thanks in advance.
Sylvestre SEGURON