Power Builder - Como saber si una hoja esta ya abierto dentro de un mdi

   
Vista:

Como saber si una hoja esta ya abierto dentro de un mdi

Publicado por Hiroshy (2 intervenciones) el 01/02/2015 19:11:22
Hola a Todos,

Tengo el siguiente codigo y quiero que solo me aperture una unica hoja dentro del MDI

//w_ancestro es una ventana que usare como ancestro
li_contador++
str_diferenciadora.ls_nombre_ventana="ventana "+string(li_contador)
w_ancentro w_nueva_ventana
opensheetwithparm(w_nueva_ventana,w_principal,str_diferenciadora)

como se sabe, este codigo me permite abrir "n" ventanas ancestro... lo que me propongo es limitar a que se abra tan solo una vez, ya que enviare una estructura como parametro y con esto hare diferente esta ventana con las demas.
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

Como saber si una hoja esta ya abierto dentro de un mdi

Publicado por MMan (23 intervenciones) el 02/02/2015 03:01:14
variables compartidas.. (Shared )

una vez q declaras una variable shared , el "ambito" (scope) funciona a nivel de "ancestro/descendiente"

ej. declaras una var. shared cuenta

en el open de la ventana (objeto) haces un ... cuenta++
y en el close de la ventana (ojb) haces un cuenta--

si creas 10 instancias (descendientes).. cuenta valdra 10

con eso para tu programa.. podrias incluirle...
if cuenta >1 then
messagebox("","solo 1 ventana")
close(this)
end if


o algo parecido
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

Como saber si una hoja esta ya abierto dentro de un mdi

Publicado por Hiroshy (2 intervenciones) el 02/02/2015 03:11:07
Muchas Gracias, voy a probarlo, por ahora he estado probando con este codigo y tambien me ha resultado

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
funcion buscar_sheet_x_nomber(string nombreVentana )
 
boolean bValid,bEncontrado=false
window wSheet
wSheet = w_mdi.GetFirstSheet()
IF IsValid(wSheet) THEN
	if wSheet.Title = ls_nombreVentana Then bEncontrado = true
	DO
	wSheet = w_mdi.GetNextSheet(wSheet)
	bValid = IsValid (wSheet)
	IF bValid THEN
		if wSheet.Title = ls_nombreVentana Then bEncontrado = true
	End If
	LOOP WHILE bValid
END IF
return bEncontrado

Hasta ahora corre bien... Nuevamente gracias MMan
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