Power Builder - ventana popup-response

 
Vista:

ventana popup-response

Publicado por eduardo.v (208 intervenciones) el 21/03/2009 21:45:19
Hola amigos

Ya se que resulta raro lo que quiero hacer pero creanme que es necesario

necesito hacer que una ventana de tipo popup se comporte como una ventana de tipo response, osea que al abrirse se mantenga el foco en la ventana y se desabilite todo lo que esta detras de ella, ademas que se haga una pausa en la ejecucion del codigo hasta que la ventana se cierre (como un response)

otra opcion puede ser que una ventana de tipo response tenga las caracteristicas de una ventana popup.

Especificamente lo que necesito es una ventana que se comporte como un response pero que no tenga bordes ni barra de titulo algo que en el response original del power es imposible de desabilitar. En la ventana de tipo popup si es posible desabilitar estas propiedades.

Agradeceria que alguien me pueda ayudar con esto

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ventana popup-response

Publicado por sthif (63 intervenciones) el 23/03/2009 16:56:05
Esto te puede ayudar:

Declara en tu ventana response como local external fucntions:

Public Function Long GetWindowRect (Long hWnd, Ref st_RECT lpRect) Library "user32"
Public Function Long GetClientRect (Long hWnd, Ref st_RECT lpRect) Library "user32"

Public Function Long CreateRoundRectRgn(Long nLeftRect, Long nTopRect, Long nRightRect, Long nBottomRect, Long nWidthEllipse, Long nHeightEllipse) Library "gdi32"

Public Function Long SetWindowRgn (Long hWnd, Long hRgn, Boolean bRedraw) Library "user32"

Crea esta estructura:

global type st_rect from structure
long left
long top
long right
long bottom
end type

Ahora en el Open de la misma:

// Declaración de variables
st_Rect WindowRect, ClientRect
Long BorderSize, TitleSize
Long hRgn

// get window outer and innner rectangles and calculate window client position
GetWindowRect (Handle(w_pb10_response), WindowRect)
GetClientRect (handle(w_pb10_response), ClientRect)

BorderSize = ((WindowRect.Right - WindowRect.Left) - (ClientRect.Right - ClientRect.Left)) / 2
TitleSize = (WindowRect.Bottom - WindowRect.Top) - (ClientRect.Bottom - ClientRect.Top) - BorderSize

// create eliptic window
hRgn = CreateRoundRectRgn (BorderSize + ClientRect.Left, TitleSize + ClientRect.Top, BorderSize + ClientRect.Right, TitleSize + ClientRect.Bottom, 50, 50)
SetWindowRgn (Handle(w_pb10_response), hRgn, True)

Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 3
Ha aumentado 1 puesto en Power Builder (en relación al último mes)
Gráfica de Power Builder

RE:ventana popup-response

Publicado por Carlos (1 intervención) el 11/09/2019 17:10:40
Que tal sthif,
Utilice tu ejemplo y me funciono! pero tengo un detallito que no he podido resolver, te lo comento:

La siguiente linea yo le agregue un *2, para que mi ventana se extendiera a toda la pantalla y si funciona, el unico detalle es que al final me muestra un pequeño borde blanco del lado derecho, y no encuendro modificar los numeros para que el borde desaparesca por completo
1
2
3
4
// create eliptic window
hRgn = CreateRoundRectRgn (BorderSize + ClientRect.Left, TitleSize + ClientRect.Top,  BorderSize + ClientRect.Right * 2, TitleSize + ClientRect.Bottom, 0, 0)
 
SetWindowRgn (Handle(w_banner), hRgn, True)

Dejo una imagen para que visualices el detalle, espero y me puedas apoyar

Saludos!

Captura
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Leonardo Daniel A.
Val: 821
Oro
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

RE:ventana popup-response

Publicado por Leonardo Daniel A. (481 intervenciones) el 08/10/2019 17:45:09
Hola que tal, trate de implementarlo, pero no me funciona, necesito la ventana cuadrada, no con borde redondeado, por lo que el 50 lo cambie por un 0, pero me borra la linea de la derecha y de abajo que puse como marco, ademas de que no funciona como response, puedo acceder a los controles que estan en la ventana de abajo... me podrias dar una luz.!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar