Power Builder - Recuperar todos los objetos de la aplicación

 
Vista:

Recuperar todos los objetos de la aplicación

Publicado por JOSÉ (5 intervenciones) el 19/03/2019 14:18:54
Hola a todos.
A ver si me podéis ayudar ... que no soy capaz de dar con la solución.
Quiero saber todos los objetos que están en la aplicación y recorrerlos para saber si está creado uno determinado.
En una ventana la instrucción es CONTROL , que devuelve todos los objetos de la ventana.
objetoVentana.control

Pero ¿cuál es la instrucción para conocer el contenido de un objeto APLICACIÓN?

Muchas gracias.
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
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

Recuperar todos los objetos de la aplicación

Publicado por Leonardo Daniel A. (481 intervenciones) el 20/03/2019 04:08:08
Que yo sepa el objeto Application no tiene esas propiedades..... y con que objetivo quieres hacer eso ?
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

Recuperar todos los objetos de la aplicación

Publicado por JOSÉ (5 intervenciones) el 20/03/2019 06:51:43
Queremos hacer una funcionalidad de auditoría. Cada vez que se recupera una información de la bbdd debemos registrar que información se ha solicitado, quien lo ha hecho y en qué momento, además de otras informaciones específicas de cada ventana. Se puede ir poniendo código en cada ventana, pero queremos hacer algo más genérico, sin tener que poner código en cada una de las 200 ventanas que tenemos, de forma que hemos creado una tabla en la bbdd en donde decimos para cada ventana y datawindow en función de la acción que se vaya a realizar (recuperar, insertar, modificar) los datos que son necesarios insertar en una tabla de auditoría y un objeto de usuario que se encarga de hacerlo. De momento bien; ya tenemos el nombre de la ventana y la datawindow a tratar que hay en ella y ahora se trata de buscarlas en memoria y acceder a los datos que que quiero extraer. Por eso necesito llegar a la información que hay en memoria y, aunque yo no sepa cómo hacerlo, tiene que haber una forma porque al debugear se puede ver toda esa información.
En una ventana no hay problema porque con la función .control puedo obtener todos los objetos que hay en la ventana e ir recorriéndolos hasta llegar al que me interesa. Pero ahora necesito ir un escalón más arriba, por eso había pensado que quizá en el objeto APLICATION que es del que cuelgan todos, había alguna propiedad o función que hacía la misma labor.

Y a todo esto, muchas gracias por responderme. Te lo agradezco mucho, de verdad.
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

Recuperar todos los objetos de la aplicación

Publicado por Leonardo Daniel A. (481 intervenciones) el 22/03/2019 04:05:39
mmm pues en mi caso, lo que siempre eh hecho... para todas las ventanas heredan de una padre que tiene algunas funcionalidades programdas, asi como un DW padre que tambien tiene programados evetos y funciones para realizar acciones y si necesitara hacer algo como lo que tu quieres solo lo agregaria a la ventana padre... igual pasa con la configuracion de colores, validacion de campos, etc, etc.
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

Recuperar todos los objetos de la aplicación

Publicado por JOSÉ (5 intervenciones) el 22/03/2019 07:49:46
Muchas gracias, Leonardo.
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 Adolfo
Val: 250
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Recuperar todos los objetos de la aplicación

Publicado por Adolfo (260 intervenciones) el 21/03/2019 14:54:25
Este codigo pone un color de fondo previamente establecido a todos los objetos de una ventana:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
String ls_color
Integer li_i
Long ll_rojo, ll_verde, ll_azul
StaticText st_etiqueta
RadioButton rb_control
GroupBox gb_control
CheckBox cbx_control
 
ls_color = color('Reportes')
if ls_color <> 'Null' then
	ll_rojo			= Long(entry(ls_color,1,','))
	ll_verde			= Long(entry(ls_color,2,','))
	ll_azul			= Long(entry(ls_color,3,','))
	This.BackColor = RGB(ll_rojo, ll_verde, ll_azul)
 
	For li_i = 1 to UpperBound(This.control[])
		if This.control[li_i].TypeOf() = StaticText! then
			st_etiqueta = This.Control[li_i]
			st_etiqueta.BackColor = RGB(ll_rojo, ll_verde, ll_azul)
		end if
 
		if This.control[li_i].TypeOf() = RadioButton! then
			rb_control = This.Control[li_i]
			rb_control.BackColor = RGB(ll_rojo, ll_verde, ll_azul)
		end if
 
		if This.control[li_i].TypeOf() = GroupBox! then
			gb_control = This.Control[li_i]
			gb_control.BackColor = RGB(ll_rojo, ll_verde, ll_azul)
		end if
 
		if This.control[li_i].TypeOf() = CheckBox! then
			cbx_control = This.Control[li_i]
			cbx_control.BackColor = RGB(ll_rojo, ll_verde, ll_azul)
		end if
	Next
end if
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

Recuperar todos los objetos de la aplicación

Publicado por JOSÉ (5 intervenciones) el 21/03/2019 15:52:42
Muchas gracias por responderme.
Pero me temo que no me vale. En efecto, eso vale para una ventana (la instrucción this.control() obtiene todos los objetos de la ventana)
pero yo quiero ir un peldaño más arriba. Imagina que quiero pintar de amarillo las ventanas. Tendría que ir al objeto que las contiene y desde ahí hacer lo mismo que has hecho tú para los objetos que cuelgan de una ventana.
En mi caso, el objeto padre de la ventana seria la aplicación y lo que busco es una forma de recorrer todos los objetos que tiene la aplicación.

Y muchas gracias, de nuevo, por tu interés.
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 Adolfo
Val: 250
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Recuperar todos los objetos de la aplicación

Publicado por Adolfo (260 intervenciones) el 22/03/2019 02:27:16
Suerte con eso.
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

Recuperar todos los objetos de la aplicación

Publicado por JOSÉ (5 intervenciones) el 22/03/2019 07:50:59
Sí. Creo que la necesitaré.
Muchas gracias.
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

Recuperar todos los objetos de la aplicación

Publicado por Nacho (2 intervenciones) el 23/03/2019 00:34:16
Más útil que la suerte es el conocimiento. Saber cómo funciona el sistema operativo sobre el que programas, conocer su API, y saber que los entornos de programación no hacen más que encapsular ese API.

El objeto ventana no será más que una clase que encapsula el API de Windows para el control de cada ventana. El objeto padre de una ventana es un hilo, un thread. Dado un thread puedes saber cuántas ventanas ha creado, cuántas ventanas cuelgan de él. El objeto padre de un thread es un proceso, una Application. Dado un identificador de un proceso, un PID, se puede hallar cuántos threads ha creado, cuántas ventanas ha creado cada thread, cuántos controles cuelgan de cada ventana y acceder a ellos.

La clase ventana probablemente parta del handle de esa ventana para acceder a todas sus propiedades, de manera que un cast objetoventana sobre un handle de ventana te dé una referencia a una ventana para usar sus propiedades a través de PB:
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