Olá Guilherme. Boa tarde.
Eu acho que para o PD4050 isto aqui deve funcionar.
DEFINE INPUT PARAMETER p-ind-event AS CHARACTER.
DEFINE INPUT PARAMETER p-ind-object AS CHARACTER.
DEFINE INPUT PARAMETER p-wgh-object AS HANDLE.
DEFINE INPUT PARAMETER p-wgh-frame AS WIDGET-HANDLE.
DEFINE INPUT PARAMETER p-cod-table AS CHARACTER.
DEFINE INPUT PARAMETER p-row-table AS ROWID.
DEFINE VARIABLE wh-botao AS WIDGET-HANDLE NO-UNDO.
DEFINE VARIABLE wh-objeto AS WIDGET-HANDLE NO-UNDO.
DEFINE VARIABLE i-level AS INTEGER NO-UNDO.
DEFINE VARIABLE wh-objeto-level AS WIDGET-HANDLE EXTENT 20.
DEFINE VARIABLE i-ind AS INTEGER NO-UNDO.
DEFINE VARIABLE c-botoes AS CHARACTER NO-UNDO.
ASSIGN c-botoes = "btAdd,btCopy,btDelete".
IF p-ind-event = "AFTER-INITIALIZE" THEN DO:
DO i-ind = 1 TO NUM-ENTRIES(c-botoes):
RUN pi-busca-handle (INPUT ENTRY(i-ind, c-botoes),
INPUT p-wgh-frame,
OUTPUT wh-botao).
IF VALID-HANDLE(wh-botao) THEN DO:
ASSIGN wh-botao:SENSITIVE = NO.
END.
END.
END.
RETURN "OK".
PROCEDURE pi-busca-handle:
DEFINE INPUT PARAM p-campo AS CHARACTER NO-UNDO.
DEFINE INPUT PARAM p-frame AS WIDGET-HANDLE NO-UNDO.
DEFINE OUTPUT PARAM p-wh-campo AS WIDGET-HANDLE NO-UNDO.
DEFINE VARIABLE wh-objeto AS WIDGET-HANDLE.
DEFINE VARIABLE i-level AS INTEGER NO-UNDO.
DEFINE VARIABLE wh-objeto-level AS WIDGET-HANDLE EXTENT 20.
ASSIGN wh-objeto = p-wgh-frame:PARENT. /* Pesquisa objetos em todas as frames / panels */
ASSIGN i-level = 1.
DO WHILE VALID-HANDLE(wh-objeto):
IF wh-objeto:NAME = p-campo THEN DO:
ASSIGN p-wh-campo = wh-objeto.
LEAVE.
END.
IF wh-objeto:TYPE = "frame" OR wh-objeto:TYPE = "field-group" OR wh-objeto:TYPE = "window" THEN
ASSIGN wh-objeto-level[i-level] = wh-objeto
wh-objeto = wh-objeto:FIRST-CHILD
i-level = i-level + 1.
ELSE
ASSIGN wh-objeto = wh-objeto:NEXT-SIBLING.
DO WHILE i-level > 1 AND NOT VALID-HANDLE(wh-objeto):
ASSIGN i-level = i-level - 1
wh-objeto = wh-objeto-level[i-level]:NEXT-SIBLING.
END.
END.
END PROCEDURE.
Já o PD4000 tem de testar. Pode ser que o mesmo código funcione, mas tem de buscar o nome dos botões.
Abraços,
Marcelo Torres