Power Builder - consulta tabpage

 
Vista:
sin imagen de perfil

consulta tabpage

Publicado por Xavi (72 intervenciones) el 12/02/2014 22:15:28
amigos tengo este inconveniente
Tengo un tab con varios tabpage quiero que en cada tabpage se dispare un mismo evento...
como no quiero repetir por cada tabpage el mismo codigo sino invocar directamente al evento que contiene por ejempo el
InserRow(0)
Hago lo que sigue.
en una variable de instancia guardo el numero del tabpage en el que estoy posicionado
en el evento Ue_insertar
quiero algo como esto, pero me da error de sintaxis

string ls_tabpage
ls_tabpage='tabpage_'+string(id_tabpage)//id_tabpage es la variable de instancia

this.tab_1.ls_tabpage.cdw_datos.Reset()

Alguna sugerencia?, me hacen saber si no se entiende lo que necesito.
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

consulta tabpage

Publicado por Leopoldo Taylhardat (710 intervenciones) el 15/02/2014 19:44:05
Saludos...

tienes que manejar los tabpage por su nombre y no por numero...

tabpage_1, tabpage_2, etc...
lo que buscas hacer no se puede...
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

consulta tabpage

Publicado por Moises (5 intervenciones) el 16/02/2014 21:00:10
no puedes mezclar un objeto (tab) con un string (ls_tabpage) de esa manera
en orientacion a objetos....

objetopadre.objetohijo.metodos_o_propiedades <<-- no hay variables d por medio

A MENOS q sea un indice ....

recuerda q el tab es un contenedor.. que solamente puede contener tabpages (hasta donde me he enterado) y tiene una propiedad CONTROL.. con el q puedes acceder a todos los controles contenidos en el tab como si fuese un arreglo/array

por lo que si tuvieses...

this.tab_1.tabpage_1.cdw_datos.Reset()

tambien podrias ponerlo como

this.tab_1.control[1].cdw_datos.Reset()
// no estoy seguro si el indice empieza con 0 o 1.. pero eso facilmente lo puedes averiguar

o si tienes una variable de instancia
this.tab_1.control[ id_tabpage ].cdw_datos.Reset()

o tambien...para saber cual es el tabpage activo/seleccionado

id_tabpage = this.tab_1.selectedTab()

///

lo que no entendi es... si tienes multiples tabpages... y un solo CWD_DATOS... para q quieres la variable?

salu2
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

consulta tabpage

Publicado por Xavi (72 intervenciones) el 17/02/2014 15:11:50
Pues esta es la solución que me valdría, pero me da un error de: INCOMPATIBLE PRPERTY CDW_DATOS FOR TYPE USEROBJECT. Con respecto a tu consuta, tengo multiples tabpages y un CDW distinto por cada tabpage, perdón no lo especifique.
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

consulta tabpage

Publicado por MoisesMan (5 intervenciones) el 17/02/2014 21:09:41
.. me lo imaginaba....

te sale ese error xq el control [ ] devuelve un objecttype generico.. es decir el PB no sabe si es un boton o un control DW

.. entonces lo q tienes q hacer es definir variables para determinar el tipo d datos antes de acceder a sus metodos

y como dices q tanto los tabpages como los DW son diferentes, lo q tienes q hacer es recorrer todo el array control y preguntar si es datawindow, asignarlo a una variable tipo DW (para q no te salga el error) y luego acceder a los metodos por medio de esa variable...

(los controles dinamicos es algo complicado, y tal vez usar referencias directas sea mas facil y rapido -para programar y en tiempo d ejecucion )


integer totalobj, mi_page, n_index
DataWindow midw

//totalobj = upperbound ( parent.tab_1.tabpage_1.control )

mi_page = parent.tab_1.selectedtab // obtiene el tabpage actual

totalobj = upperbound ( parent.tab_1.control[mi_page].control ) // cuantos controles hay en el tabpage

for n_index = 1 to totalobj // recorre todos para buscar cual es el dw
if parent.tab_1.control[mi_page].control[n_index].typeof() = DataWindow! then
midw = parent.tab_1.control[mi_page].control[n_index]
exit
end if
next


// accedes a los metodos/propiedades a traves de la variable

w_tabpagestest.title = midw.classname()

midw.borderstyle = StyleShadowBox!

/////////////////
///////////////
//////////////
y otra cosa q hice para probar fue.. declarar un array/arreglo/matriz de tipo datawindow.. asignarle el/los datawindows a cada elemento del arreglo

q es casi lo mismo q hacer referencias directas en cada uno de los tabpages

datawindow midws[2]

midws[1] = w_tabpagestest.tab_1.tabpage_1.dw_1
midws[2] = w_tabpagestest.tab_1.tabpage_2.dw_2


// accedes a los metodos/propiedades

mi_page = parent.tab_1.selectedtab // obtiene el tabpage actual
midws[ mi_page ].borderstyle = StyleRaised!


espero q t sirva :)
recien llevo 1 mes y algo leyendo manuales de PB, asi q experiencia no hay, pero aprendo rapido ;)

solo hice un pequeño programa con la api de loquendo, q cuando termina el tiempo de una pc. sale una voz "termino cabina 1, 15" entonces mi vieja va y avisa a los viciosos jajaja :)

http://powerbuilder.hyderabad-colleges.com/powerbuilder.html
http://en.helpdoc-online.com/powerbuilder_9.0/index.html

salu2
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

consulta tabpage

Publicado por luchetti (1 intervención) el 29/08/2014 06:38:03
Hola amigo

tengo un encargo de que de una aplicacion power builder se pueda hablar una voz
pudes explicarme por favr como usar el pi de loquend y de donde te lo bajaste
te lo voy a graecer mucho.

saludos
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