Hola Fredy,
lo que aqui te coloco solo debes hacerle copy/paste verifica solo el nombre del canvas, espero te sea de utilidad, cualquier cosa, escribes.
Este es el Program Unit.
PROCEDURE centrar_ventana(ventana VARCHAR2) IS
FormX NUMBER(4);
FormY NUMBER(4);
TamX NUMBER(4);
TamY NUMBER(4);
PosX NUMBER(4);
PosY NUMBER(4);
WinId WINDOW;
BEGIN
-- Centrar la "ventana"
FormX := GET_WINDOW_PROPERTY(FORMS_MDI_WINDOW,WIDTH);
FormY := GET_WINDOW_PROPERTY(FORMS_MDI_WINDOW,HEIGHT);
WinId := FIND_WINDOW(ventana);
IF NOT (ID_NULL(WinId)) THEN
-- Encontro la ventana que se desea centrar
TamX := GET_WINDOW_PROPERTY(WinId,WIDTH);
TamY := GET_WINDOW_PROPERTY(WinId,HEIGHT);
PosX := FLOOR((FormX-TamX)/2);
PosY := CEIL((FormY-TamY-20)/2);
IF PosX>=0 THEN
SET_WINDOW_PROPERTY(WinId,X_POS,PosX);
END IF;
IF PosY>=0 THEN
SET_WINDOW_PROPERTY(WinId,Y_POS,PosY);
END IF;
END IF;
END;
y con esto haces el llamado....: en un trigger por supuesto.
centrar_ventana('nombre_de_canvas');