![]() |
Imposible hacer visible un form desde otro form
Buenas, algo que era muy sencillo realizar con Win32, lo veo imposible hacer con .NET.
Si en Win32 quería hacer visible un form ya creado desde otro form, únicamente tenía que teclear: Código:
Unit Unidad1; Código:
... Gracias. |
Solucionado
Si dentro de la unidad1 defino una variable F2 del tipo Form2, puedo ejecutar:
Código:
Uses Saludos. |
No siempre es valido
Este procedimiento es valido para los forms que creemos manualmente pero, por ejemplo, si se trata del form principal de la aplicación, que se crea automáticamente, ya no es valido, ya que al llamar al método create, crearía otro nuevo form igual que el que ya tenemos, y eso no interesa.
¿Alguien sabe cómo acceder a un form ya creado? Los componentes "normales", como un botón, tienen la propiedad Handle (creo que por ahí van los tiros), pero no un form, por lo que no sé cómo puedo manejar desde otro form las propiedades de un form creado previamente a este. Gracias. |
La aplicacion que realizas que tipo es: ( mdi, sdi . ..)
|
Nuevo form independiente
No es MDI, simplemente es un nuevo form independiente de la misma aplicación.
|
Formulario.Show;
o Formulario.ShowModal; (almenos en delphi para Win32 es así, prueba a ver...); |
Ya lo probé
Hola, para .NET la cosa iría así Formulario.Create.Show, pero es que el formulario ya está creado, no necesito crearlo otra vez, que es lo que hace y acabo llenando la pantalla de formularios repetidos, jeje.
|
Y sin .Create no se puede?
|
Hay otra manera pero tampoco funciona
En vez de Crete, se puede utilizar ActiveForm, pero es que no puedes forzar a que el formulario activo sea el que tu quieras, sino el que es el que ya está activo.
|
Me imagino que en .Net debe haber un contenedor de controles a nivel de aplicacion, asi accediendo a este se podria preguntar si esta creado y asi activarlo en vez de crearlo, esto lo he hecho en aplicacion mdi, pero el contenedor lo tiene el form padre, pero en tu caso no es MDI, pero supongo que debe haber un contenedor de nivel superior es decir aplicacion, en fin buscare y si algo pos aqui te coloco el post :)
|
No he entendido bien tu pregunta, pero si lo que quieres es traer una ventana, ya creada, al frente es asi:
public void MakeOnTop() { Form1.TopMost = true; } esta informacion esta sacada de la msdn. http://msdn.microsoft.com/library/spa/default.asp Busca: Mantener un formulario Windows Forms en primer plano. |
No es eso
No, lo que intento hacer es poner en "enable = true", por ejemplo, un form ya creado pero que no está activo desde .NET.
|
Vuelvo a explicarlo
Hola, creo que en los posts anteriores no me he explicado del todo bien, por eso vuelvo a explicar el problema que tengo desde el principio. Imaginemos dos unidades. La unidad 1 contiene un formulario que quiero activar desde la unidad 2.
Código:
UNIDAD1 Código:
UNIDAD2 Código:
Unidad2 Un saludo. |
Bueno, ahora estoy trabajando con csharp... pero algo tendra en comun con delphi.net. :P
El form principal es creado con un "new", asi que no tenemos nada con que hacer referencia por separado, asi que lo defini primero como objeto: Este codigo hay que agregarlo en el main (en delphi win32 tambien existe un .pas principal con contenido equivalente. :D) Código:
/// <summary> Código:
WelcomeForm = new TWelcomeForm(); Por ejemplo para mostrar otra ventana y ocultar la actual: Código:
Hide(); |
La franja horaria es GMT +2. Ahora son las 15:38:21. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi