Power Builder - Para L.Barzi

 
Vista:

Para L.Barzi

Publicado por davis (79 intervenciones) el 26/04/2007 16:34:37
Hola q tal , odrias publicar el codigo para minimizar todas las ventanas
te lo agradeceria mucho

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:Para L.Barzi

Publicado por Jorge Escobar (110 intervenciones) el 26/04/2007 18:45:10
Barzola.

yo ya lo implementé toda las opciones de ventana incluido el closeall, minimizedall. gracias a tu ayuda he llegado a contruir este (nvo) que tiene encapsulado el codigo para toda las opciones de ventana (tile,tilehorizontal,layer,cascade,icons) y minizar todas las ventans y cerrar todas las ventanas.

lo deposito este código espero les seá util para quienes lo necesiten, solo tienen que hacer el grabar el archivo como n_cst_sheetmanager.sru y luego importar a su librería.

forward
global type n_cst_sheetmanager from nonvisualobject
end type
end forward

global type n_cst_sheetmanager from nonvisualobject
event type integer ue_minimizedall ( )
event type integer ue_closeall ( )
end type
global n_cst_sheetmanager n_cst_sheetmanager

type variables
w_master iw_handle
end variables

forward prototypes
public function integer of_setcurrentstate (arrangetypes ae_arrange)
public function integer of_getsheets (ref window aw_sheets[])
public function integer of_setrequestor (w_master aw_handle)
end prototypes

event type integer ue_minimizedall();Integer li_sheetcount
integer li_cnt
window lw_sheet[]
// valido el window solicitante
if IsNull(iw_handle) Or not IsValid(iw_handle) then
return -1
end if
// obtengo toda las hojas abiertas
li_sheetcount = of_getsheets( lw_sheet)

if li_sheetcount > 0 then
// muestro las ventanas en iconos
of_setcurrentstate( icons!)
for li_cnt = 1 to li_sheetcount
lw_sheet[li_cnt].windowstate = minimized!
next
end if
return li_sheetcount

end event

event type integer ue_closeall();integer li_sheetcount
integer li_cnt
window lw_sheet[]
window lw_activesheet
if IsNull(iw_handle) or not IsValid(iw_handle) then
return -1
end if
// obtengo toda las hojas abiertas
li_sheetcount = of_getsheets( lw_sheet)

if li_sheetcount > 0 then
// muestro las ventanas en iconos
of_setcurrentstate( icons!)
for li_cnt = 1 to li_sheetcount
close(lw_sheet[li_cnt])
next
end if
return li_sheetcount
end event

public function integer of_setcurrentstate (arrangetypes ae_arrange);//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Nombre :of_SetCurrentState
// Objectivo : Seteo el estado de las hojas mostradas en el mdi (tile!,horizontal!,vertical!,layer!,cascade!,icons!)
// Creado : Jorge W. Escobar
// Fecha : 25/04/2007
// Arguments : ae_arrange
// Retorno : integer (1 se ejecuta el proceso, - 1 error )
//
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

integer li_rc = 1
integer li_cnt
integer li_count
window lw_sheets[]
if IsNull(iw_handle) or not IsValid(iw_handle) then
return -1
end if
iw_handle.arrangesheets(ae_arrange)
return li_rc
end function

public function integer of_getsheets (ref window aw_sheets[]);//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Nombre :of_GetSheets
// Objectivo : obtener la cantidad de horas abiertas
// Creado : Jorge W. Escobar
// Fecha : 25/04/2007
// Arguments : aw_shets[]
// Retorno : integer (cantidad de hojas abiertas)
//
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Integer li_counter
window lw_sheet
// valido el window solicitante
if IsNull(iw_handle) or not IsValid(iw_handle) then
return -1
end if
// obtengo toda las hojas abiertas
lw_sheet = iw_handle.GetFirstsheet( )
if IsValid(lw_sheet) then
do
li_counter++
aw_sheets[li_counter] = lw_sheet
lw_sheet = iw_handle.GetNextSheet(lw_sheet)
loop until IsNull(lw_sheet) or not IsValid(lw_sheet)
end if
return li_counter

end function

public function integer of_setrequestor (w_master aw_handle);//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Nombre :of_SetRequestor
// Objectivo : Seteo el iw_handle con la ventana mdi
// Creado : Jorge W. Escobar
// Fecha : 25/04/2007
// Arguments : aw_handle ( mdi)
// Retorno : integer (1 Success, - 1 Failed )
//
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

if IsNull(aw_handle) or not IsValid(aw_handle) then
return -1
end if
// solo el mdi pueden utlizar este servicio
if aw_handle.windowtype <> mdi! and aw_handle.windowtype <> mdihelp! then
return -1
end if
iw_handle = aw_handle
return 1

end function

on n_cst_sheetmanager.create
call super::create
TriggerEvent( this, "constructor" )
end on

on n_cst_sheetmanager.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on
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

RE:Para L.Barzi

Publicado por davis (79 intervenciones) el 26/04/2007 19:52:50
..............Gracias por el scrip
al parecer es bastante completo
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
sin imagen de perfil

Disculpas y Gracias

Publicado por L.Barzi (133 intervenciones) el 26/04/2007 20:06:24
Hola Jorge E.

Disculpas por no poner el codigo solo que no busque por falta de tiempo.

Gracias por compartir con todos tu codigo.

Saludos...

[Lima - Perú]
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
sin imagen de perfil

Minimized All Window's

Publicado por L.Barzi (133 intervenciones) el 26/04/2007 20:23:13
Hola otra vez.. bueno me quede un poco con la espina de no poder ayudar antes, hice unas pruebitas aca en el trabajo y bueno dejo este codigo:

Window lw_activesheet

lw_activesheet = ParentWindow.GetFirstSheet()

DO WHILE IsValid(lw_activesheet)

// Minimizar ventana
lw_activesheet.WindowState = Minimized!

// Busca las demas ventanas
lw_activesheet = ParentWindow.GetNextSheet(lw_activesheet)

LOOP

Saludos

[Lima - Perú]
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

RE:Minimized All Window's

Publicado por davis (79 intervenciones) el 26/04/2007 22:12:22
listo solamente tuve que agregale este codigo para que no minimizara la ventana
que sirve como fondo del mdi

if lw_activesheet <> owz_fondomdi then
// Minimizar ventana ,
lw_activesheet.WindowState = Minimized!

End IF

pero tengo algunas dudas

tengo un formulario de venta que habro varias veces usando opensheet ,se podria tener una ventana
(solo para probar este codigo si existiera )
q active la venta Nº 4 o Nº 10 de acuerdo a lo que le indiquemos en una caja de texto

y tambien si hay alguna forma de referirse a los controles de una ventana abierta con opensheet
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
sin imagen de perfil

RE:Minimized All Window's

Publicado por L.Barzi (133 intervenciones) el 26/04/2007 22:28:09
El codigo que puso Jorge E. y el que puse yo cierran las vantanas sheet. Para q no te cierre el mdi tienes que colocar ese codigo en un item de tu menu.

Saludos

[Lima - Perú]
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

RE:Minimized All Window's

Publicado por davis (79 intervenciones) el 26/04/2007 23:27:08
Si por eso lado ya no hay problemas ,
pero no me llegaste a responder la ultima pregunta que te hice

Saludos desde Lima , Los Olivos
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
sin imagen de perfil

RE:Minimized All Window's

Publicado por L.Barzi (133 intervenciones) el 27/04/2007 00:12:47
Haber si te llegue a entender, dices que tienes un window de ventas (ejemplo w_ventas) y que quieres tener una caja de texto, esa caja de texto la deseas dentro del toolbar del menu? y desde ahi hacer tus consultas a tu ventana (w_ventas)

Eso es lo que quieres?

[Lima - Perú]
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

RE:Minimized All Window's

Publicado por davis (79 intervenciones) el 27/04/2007 00:52:16
No no entendiste

Tendo un menu ventas y desde ahi abro varias ventanas/ instancias del w_ventas gracias a opensheet

de modo q tengo varios formularios de venta abiertos

se podria ? construir un pequeño formulario
que me diga a que Numero de Nº de formulario de venta quiero dirigirme que quiero o activar para llenar datos , realizar la venta ....etc etc

(todo esto es solamente para saber si se puede realizar )

y el otro problema
si estubiera en el form1 y quisera referirme a una caja de texto que esta en el w_venta solamente tendria que escribir

String
Vs_nombre = w_venta.sle_nombre.text

pero como se instancian obtengo este error
Null object reference at line 1 in clicked event of object cb_abrir of w_form1

espero me hayas entendido gracias de antemano
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

RE:Minimized All Window's

Publicado por Jancarlo (890 intervenciones) el 27/04/2007 18:30:00
Depende de como hayas instanciado las ventanas que abres.

/* Instancia */
w_ventas iw_ventas[]

/* Abrir las ventanas instanciadas */
opensheet(iw_ventas[upperbound(iw_ventas)+1],w_mdi,0,original!)

/* Enfocar una ventana especifica */
integer li_w

//Puedes capturar el valor de la ventana q deseas mostrar
li_w = 1

try
iw_ventas[li_w].show()
catch (runtimeerror err1)
messagebox('Operación Cancelada','No se puede mostrar la ventana Nº '+string(li_w)+'. Posiblemente no se encuentra abierta.',exclamation!)
end try

Espero te sirva de ejemplo.

Suerte!
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

RE:Minimized All Window's

Publicado por davis (79 intervenciones) el 28/04/2007 00:26:43
gracia por el dato , voy a revisarlo un poco y creo que ya se para q me puede servir

Saludos desde Lima Peru !!
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