Añadir En Tiempo De Ejecucion Al Estilo De "gedit"


Objetivo: Añadir En Tiempo De Ejecucion Al Estilo De "gedit"
Hola estoy haciendo una aplicacion en la cual necesito añadir controles en tiempo de ejecucion cuando el usuario pulse un button. Seria algo al estilo gedit al dar nuevo documento me abre una pestaña independiente con los nuevos controles, se deberian abrir tantas como el usuario quiera. No se si me he explicado. Alguien me puede echar una mano.

Perfil MP  
Objetivo: Re: Añadir En Tiempo De Ejecucion Al Estilo De "gedit"
Usa un Tabstrip, y con la propiedad .count se vas añadiendo pestañas.

última edición por jsbsan el Lunes, 01 Noviembre 2010, 10:53; editado 1 vez
Objetivo: Re: Añadir En Tiempo De Ejecucion Al Estilo De "gedit"
Eso es lo que tenia pensado. Pero mi problema es que cada pestaña tiene muchos controles, y necesito saber como crear eso.

Perfil MP  
Objetivo: Re: Añadir En Tiempo De Ejecucion Al Estilo De "gedit"
Crea un formulario con los controles que necesites. Después, o bien puedes usar tabstrip, como comenta jsbsan e ir "embebiendo" una nueva instancia del formulario ya creado en un contenedor "panel" , o bien puedes usar MDI. De esa forma, cada nueva instancia del formulario, la puedes ir añadiendo al workspace.

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

Esta solución es válida sólo si los controles que necesitas crear son los mismos para cada nueva pestaña, si no, deberás crear los controles para cada pestaña mediante código, lo cual complica mucho más las cosas.

Saludos

Perfil MP  
Objetivo: Re: Añadir En Tiempo De Ejecucion Al Estilo De "gedit"
Ok eso seria lo ideal, MDI y workspace. sabes de algun ejemplo para poder echarle un vistazo.

Perfil MP  
Ayortano
Objetivo: Re: Añadir En Tiempo De Ejecucion Al Estilo De "gedit"
Bien, yo lo uso en Areida, pero es algo más complicado. Te lo explico aquí. Diseñas un formulario y le pones de nombre "Fsec", y a éste le añades los controles que quieras (como cualquier formulario). Luego supongamos que tienes una función llamada "NewTab", y que el control Workspace que tienes se llama hWork:

Public Procedure NewTab()
Dim nForm as Fsec

nForm = New Fsec
hWork.Add(nForm)
End


¿Cómo puedes acceder a los datos de cada formulario? Bien, tienes varias maneras. Si todos los formularios que añades son los mismos, está fácil. Usando Object.Call y Object.{Get | Set}Property puedes cambiar propiedades o lanzar métodos. Por ejemplo, en el formulario Fsec tienes una función llamada UndoGa() que necesita una cadena, y devuelve otra. En el formulario que contiene el workspace (hWork) tienes un botón que obtendrá una propiedad del formulario embebido y ejecutará un método del mismo. Veamos..

Public Procedure btnGet()
Dim prop as String

prop= Object.GetProperty(hWork.ActiveWindow,"Title")
prop = Object.Call(hWork.ActiveWindow,"UndoGa", [prop])
End

Examinemos. Primero declaramos una variable llamada prop, luego obtenemos el valor de la propiedad Title, y lo almacenamos en prop. Una vez hecho esto llamamos al método UndoGa, con un argumento sólo, esta vez, siempre almacenado en un Array, que devuelve una cadena. En este caso prop vuelve a ser donde se almacena, pero no es obligatorios. Te añado un ejemplo para que lo entiendas mejor, es un muy simple editor de textos con pestañas.


Cualquier duda, exprésala.

Saludos

última edición por Invitado el Lunes, 01 Noviembre 2010, 19:39; editado 3 veces

EjMDI-0.0.1.tar.gz
Descripción: Ejemplo del control Workspace 
Descargar
Nombre del archivo: EjMDI-0.0.1.tar.gz
Tamaño: 8.02 KB
Descargado: 106 veces
EjMDI-0.0.1.tar.gz
Descripción: Ejemplo del control Workspace 
Descargar
Nombre del archivo: EjMDI-0.0.1.tar.gz
Tamaño: 8.02 KB
Descargado: 106 veces
EjMDI-0.0.1.tar.gz
Descripción: Ejemplo del control Workspace 
Descargar
Nombre del archivo: EjMDI-0.0.1.tar.gz
Tamaño: 8.02 KB
Descargado: 106 veces


Página 1 de 1


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4027s (PHP: -79% SQL: 179%)
Consultas SQL: 49 - Debug off - GZIP Activado