Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Coleccion Formularios
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Coleccion Formularios 
 
Hola gente, estoy intentando hacer una enumeración de los formularios de mi proyecto, pero no doy con la manera de hacerlo.

He googleado bastante y no encuentro la solución a mi problema, supongo que algo me estoy planteando mal. Vengo de visual basic, y condicionado por ello, os expongo en código lo que tengo en mente. El código es completamente erróneo, ya que la colección forms, sirve para VB, y lo que busco es el equivalente en gambas que no logro encontrar:

for each form in forms
  message(form.name)
next form

Por lo que he leído, creo que tengo que crear yo mismo la colección de formularios, pero me encuentro algo perdido, porque me extraña que gambas no facilite la colección de formularios de una manera sencilla. Gracias a todos!
 



 
pikas - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Coleccion Formularios 
 
Tal vez deberías contarnos cuál es realmente tu necesidad, en vez de cómo pensaste que podías satisfacerla.

Al menos yo no recuerdo que gambas lleve una colección de los formularios abiertos, de modo que deberías crear una colección y agregas una referencia de cada formulario a la colección a medida que se abren. Si tienes muchos clases de formularios diferentes lo que puedes hacer es establecer la propiedad Group de cada formulario a un valor común y luego crear un manejador para los eventos Open de ese grupo (en esa rutina escribes el código para añadir la referencia del formulario a la colección).

Saludos cordiales.
 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Coleccion Formularios 
 
Concido con Fabian que indiques lo que quieres hacer porque en gambas no hay colección de forms como en VB pero tampoco hacen falta. Hay muchas cosas que se pueden hacer en gambas de manera bastante mejor.

Caes (yo también caí en ello) en el error de hacer una traslación directa de VB. gambas es mucho mas rico que VB.

 
 



 
última edición por soplo el Sabado, 23 Enero 2010, 18:46; editado 1 vez 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Coleccion Formularios 
 
Bueno, pues os explico lo que quiero hacer. Tengo un workspace donde salen formularios, en cada formulario hay un  panel con todos los controles. Estos paneles, son mas pequeños que el formulario que los contiene. Lo que quiero hacer, es que al cambiar el tamaño de la ventana principal, los paneles se centren en los formularios. El como centrarlos, ya se como hacerlo, lo que me falta es que el programa compruebe que formularios hay en el workspace.

Para llevar a cabo esta comprobacion queria usar algo del estilo:

for each formulario
  if workspace.children.find(formulario) = 0 then centrar_panel()
next
 



 
pikas - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Coleccion Formularios 
 
Para eso tienes que jugar con la propiedad arrangement que decide como se ajustan los controles de un container (en tu caso un form). Es decir como se ajustan los children de un container cualquiera.

Solo es cuestión de probar a ver cual de las posibilidades te queda mejor. Por lo que dices entiendo que será arrange.horizontal

No tienes que codificar nada. Solo poner la propiedad con su valor adecuado.
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Coleccion Formularios 
 
El rollo no va por ahi Soplo. No quiero parecer borde, pero es que la cuestion se esta complicando. Simplemente quiero saber como hacer una coleccion de todos los formularios del proyecto, esten o no en el workspace, o como segunda opcion, enumerar los formularios que contiene el workspace. Pasarse a otros temas es desviar mi pregunta. Que haya metodos mejores o peores es otra cosa, pero por lo que he visto en otros foros de cualquier tipo de programacion, hay gente que pregunta cosas muy por el aire, y la gente experta responde "por favor concreta tu pregunta". En este caso yo estoy preguntando algo super concreto y me estais derivando a otros temas. Vuelvo a insistir en que no quiero parecer borde, pero mi pregunta esta enfocada a un punto, aun que no sea la mejor manera de hacerlo, quiero saber como hacerlo, si estoy en un error os aseguro que practicando por mi mismo me dare cuenta, pero por el momento quiero saber como hacer esto en particular, gracias a todos por vuestra colaboracion.
 



 
pikas - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Coleccion Formularios 
 
Haces bien en insistir si estás preguntando bien y somos los demás los que no te comprendemos, no te preocupes por eso.

Te decía que en gambas no hay una colección directa de forms como en vb, pero es que no hace falta para nada. A mí también me costó un poco hasta que le pillé el nervio a gambas y desde entonces no he vuelto a necesitar esa coleccción. Por eso te pregunté lo que quieres hacer.

Seǵún yo entiendo tu tienes un workspace con varios form y una pestaña para cada uno de manera que los form son independientes entre si y todos están dentro de un workspace común. Tu problema es que si cambia de tamaño el workspace tu quieres que tus form hijos se reajusten y por tanto los controles que estos contienen.

¿Es eso?

Como nunca he trabajado con workspace no puedo decirte las cosas sin probarlas y ahora no puedo, pero si me confirmas que este es exactamente tu problema mañana lo habré probado, pero según yo entiendo con arrange haces que tus forms hijos (que deben tener expand true) se adapten. Por tanto ahora el problema es el mismo dentro de cada formulario. Debe tener arrangement  y sus controles hijos debieran estar agrupados en containers que pudieran adaptarse al nuevo tamaño. Cada uno de estos containers contienen a su vez controles que se adaptarán al tamaño de su frame (o el  que sea).

No te preocupes por insistir. Mañana probaré esto y ya está.

La lista de forms debería estar en children. Al fn y al cabo children es un array de object[] razón por la cual en children.count debería estar la cantidad de forms y recorrerlos sería algo como
for each f in wkspc.children.count
f.delete (o lo que sea, esto eliminaría ese form del workspace)
next

Mañana pruebo estas cosillas que el workspace me incita alguna curiosidad
 
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Coleccion Formularios 
 
Hola pikas

Quizás aquí tengas la respuesta, aunque no lo he probado:

http://gambasdoc.org/help/comp/gb.form.mdi/workspace/children

La propiedad 'Children' devuelve un array de los objetos de tipo Form que son hijos del Workspace. Luego sólo tienes que enumerarlos o recorrerlos con un bucle.

Lo que no me queda claro es cuando dices:

pikas escribió: [Ver mensaje]
Lo que quiero hacer, es que al cambiar el tamaño de la ventana principal, los paneles se centren en los formularios. El como centrarlos, ya se como hacerlo, lo que me falta es que el programa compruebe que formularios hay en el workspace.t


Entiendo que tal como dice soplo, deberías usar los contenedores y sus propiedades relacionadas como se explica en este hilo.

Si ya lo has probado y no te funciona, quizás sea un problema de tu implementación.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Coleccion Formularios 
 
Efectivamente tal como dije he podido hacerlo sin ninguna dificultad de esta manera
public sub form_open()
dim wk as new workspace(me) 'el workspace
dim w as window, w1 as window, w2 as window, w3 as window
dim b1 as button, b2 as button, b3 as button

me.arrangement=arrange.fill 'que el workspace llene el formulario

w1 = NEW window
w1.text = "uno"
w1.arrangement=arrange.fill 'que esta ventana haga lo mismo con lo que contenga

w2 = NEW window
w2.text = "dos"
w2.arrangement=arrange.fill 'que esta ventana haga lo mismo con lo que contenga

w3 = NEW window
w3.text = "tres"
w3.arrangement=arrange.fill 'que esta ventana haga lo mismo con lo que contenga

'crear un botón en cada ventana
b1=new button(w1)
b2=new button(w2)
b3=new button(w3)

wk.Add(w1) 'añadir las tres ventanas
wk.Add(w2)
wk.Add(w3)

Ahora recorrer las tres ventanas y cambiarles el texto
FOR EACH w IN wk.Children 'bucle que recorre las ventanas
  w.Text &= "*"  'a cada título le añade un *
NEXT

end

 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Coleccion Formularios 
 
Citar:

Simplemente quiero saber como hacer una coleccion de todos los formularios del proyecto, esten o no en el workspace


Pikas, esto ya te fue respondido. Sólo resta aclarar que los formularios no poseen propiedad group como la mayoría de los controles (   ¡ups!).

PUBLIC FormsCollection AS Collection

PUBLIC SUB Form_Open()
  FormsCollection = NEW Collection
END

'Podrías modificar esta función según tu necesidad, por ejemplo agregarle argumento de tipo object
'que recibirá un formulario de un tipo específico previamente diseñado (FCliente, FProveedor...)
PRIVATE FUNCTION CrearFormulario(SufixName AS String) AS Object
DIM f AS Form
    'FIncrustado seria el formulario que diseñaste con el panel que se centra...
    f = NEW FIncrustado
    f.Name = f.Name & SufixName
    FormsCollection.Add(f, f.Name)
    RETURN f
END

PRIVATE SUB RecorrerTodosFormularios(Forms AS Collection)
DIM obj AS Object
  IF Forms.Count > 0 THEN
    FOR EACH obj IN Forms
      PRINT obj.name
    NEXT
  ENDIF
END
 


Citar:

, o como segunda opcion, enumerar los formularios que contiene el workspace.


Pikaaaasss, la mesa está servidaaa:

PRIVATE SUB RecorrerFormulariosIncrustados()
DIM obj AS Object
  WITH Workspace1
    FOR EACH obj IN .Children
      PRINT obj.name
    NEXT
  END WITH  
END
 


Citar:

Pasarse a otros temas es desviar mi pregunta.


Eso suena a que quieres que te resolvamos tu problema. Bien... creo ya lo hemos hecho, así que al menos nos debes unas cervezas  

Citar:

Que haya metodos mejores o peores es otra cosa, pero por lo que he visto en otros foros de cualquier tipo de programacion, hay gente que pregunta cosas muy por el aire, y la gente experta responde "por favor concreta tu pregunta". En este caso yo estoy preguntando algo super concreto y me estais derivando a otros temas.


Tu pregunta fue muy concreta y mal orientada porque como mencioné antes no expone cuál es tu necesidad, sino cómo estás pensando en que podrías resolverla. Además, en tu segundo mensaje desviaste tú el tema innecesariamente hacia lo de centrar el panel en el formulario. Por las dudas:

PUBLIC SUB Form_Resize()
  WITH Panel1
    .X = (.Parent.ClientWidth - .Width) / 2
    .y = (.Parent.ClientHeight - .Height) / 2
  END WITH
END
 


Aún después de este diálogo contigo, que lleva varios mensajes de respuesta, no sabemos concretamente cuál es tu necesidad. Eso nos conduce ha responderte un poco a ciegas y nos hace perder tiempo (y eso no nos gusta).

Saludos.

(no te olvides de las cervezas)


Edición:

soplo no había visto tu respuesta. Hasta hace unos días, si estabas escribiendo una respuesta y entraba un nuevo mensaje al hilo, se mostraba un mensaje de advertencia. Pero en mis últimos dos mensajes esto ya no ocurrió.
 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
última edición por fabianfv el Domingo, 24 Enero 2010, 18:16; editado 1 vez 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Formularios Muchos Formularios Ideas De D... codificador General 5 Viernes, 07 Junio 2013, 07:22 Ver último mensaje
codificador
No hay nuevos mensajes Coleccion De Palabras Que Guarden Valores ... v3ctor General 8 Viernes, 07 Noviembre 2014, 21:32 Ver último mensaje
jsbsan
No hay nuevos mensajes Coleccion O Array Para Datos Que No Variaran? v3ctor General 6 Lunes, 18 May 2015, 20:10 Ver último mensaje
vuott
No hay nuevos mensajes Coleccion Dentro De Un Formulario De Un Wo... tincho Proyecto gauchoCAD 3 Viernes, 22 May 2020, 19:33 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron