|
PROCEDURE P_CENTRAR_WINDOW ( win VARCHAR2, winstyle VARCHAR2 := 'DOCUMENT',
console BOOLEAN := TRUE) IS
win_id window;
lov_id lov;
es_ventana boolean := TRUE;
win_x NUMBER;
win_y NUMBER;
win_w NUMBER;
win_h NUMBER;
display_w NUMBER;
display_h NUMBER;
relative_to_mdi BOOLEAN := FALSE;
ch NUMBER := to_number(
Get_Form_property(
Get_Application_Property(
CURRENT_FORM_NAME),
CHARACTER_CELL_HEIGHT));
BEGIN
IF Get_Application_Property(USER_INTERFACE)IN ('MSWINDOWS','MSWINDOWS32') AND
UPPER(winstyle) = 'DOCUMENT' THEN
relative_to_mdi := TRUE;
END IF;
win_id := FIND_WINDOW(win);
IF Id_Null(win_id) THEN
lov_id := FIND_LOV(win);
IF id_null(lov_id) THEN
RETURN;
else
es_ventana:=false;
END IF;
END IF;
display_h := TO_NUMBER(GET_APPLICATION_PROPERTY(DISPLAY_HEIGHT));
display_w := TO_NUMBER(GET_APPLICATION_PROPERTY(DISPLAY_WIDTH));
if es_ventana then
win_x := GET_WINDOW_PROPERTY(win_id, X_POS);
win_y := GET_WINDOW_PROPERTY(win_id, Y_POS);
win_w := GET_WINDOW_PROPERTY(win_id, WIDTH);
win_h := GET_WINDOW_PROPERTY(win_id, HEIGHT);
else
win_x := GET_LOV_PROPERTY(lov_id, X_POS);
win_y := GET_LOV_PROPERTY(lov_id, Y_POS);
win_w := GET_LOV_PROPERTY(lov_id, WIDTH);
win_h := GET_LOV_PROPERTY(lov_id, HEIGHT);
end if;
IF relative_to_mdi THEN
IF GET_WINDOW_PROPERTY(FORMS_MDI_WINDOW,WINDOW_STATE)
<> 'MAXIMIZE' THEN
display_w := GET_WINDOW_PROPERTY(FORMS_MDI_WINDOW,WIDTH) ;
display_h := GET_WINDOW_PROPERTY(FORMS_MDI_WINDOW,HEIGHT) ;
ELSE
display_h := display_h -2.4*ch;
END IF;
IF console then
display_h := display_h - 1.35*ch;
else
DISPLAY_H := DISPLAY_H - 2.5*CH;
END IF;
END IF;
IF ( win_w >= display_w ) THEN
win_x := 0;
ELSE
win_x := (display_w - win_w) / 2;
END IF;
IF ( win_h >= display_h ) THEN
win_y := 0;
ELSE
win_y := ((display_h - win_h) / 2)-6;
END IF;
if win_y < 0 then
win_y := 0;
end if;
if es_ventana then
SET_WINDOW_PROPERTY(win_id, X_POS, win_x);
SET_WINDOW_PROPERTY(win_id, Y_POS, win_y-20);
else
SET_LOV_PROPERTY(lov_id, POSITION, win_x,win_y-20);
end if;
END;