Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-11-2014
socger socger is offline
Miembro
 
Registrado: jun 2004
Posts: 89
Poder: 20
socger Va por buen camino
¿Como abrir un form sin tenerlo en el uses?

Buenas, la idea es abrir desde un form1, un form2 y que este abriera un form3 pero sin tenerlo declarado en el uses.

Por supuesto tampoco están declarados como abiertos en el proyecto, si no que se irían abriendo conforme se fueran necesitando y luego cerrándose.

Gracias de antemano. Saludos
Responder Con Cita
  #2  
Antiguo 11-11-2014
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 14
pacopenin Va por buen camino
Hola.

¿Sin tenerlo en el uses? Creo que no se puede. La única opción que se me ocurre es tenerlo en una DLL externa.

Saludos.

P.D. Por qué no quieres tenerlo en el uses? Es pura curiosidad.
__________________
http://www.gestionportable.com
Responder Con Cita
  #3  
Antiguo 11-11-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Y porque quieres hacer eso?
__________________
El malabarista.
Responder Con Cita
  #4  
Antiguo 11-11-2014
socger socger is offline
Miembro
 
Registrado: jun 2004
Posts: 89
Poder: 20
socger Va por buen camino
Porque he creado un formulario de filtros de registros común a cualquier módulo.

Su pantalla es esta imagen que adjunto
form.jpg

Como veis al lado del concepto CAMPO (donde cambio el campo a elegir que lo he pasado en un TField), asociaría a cierto campo elegido el que fuera visible el bitBtn que hay al lado para que abriera un form que correspondería con otro módulo del que seleccionaría el campo id del registro que hubiera seleccionado, para así pasarlo al edit CONCEPTO.

Pero claro este módulo, ya es de por si llamado por ejemplo desde el form1. Form2 es el que os he mostrado y ahora si estuviera visible el bitBtn llamaría a otro form3, pero que podría ser diferente dependiendo de que tuviera que ir por ejemplo al mentenimiento de clientes, proveedores, articulos, etc.

Pero claro como quiero que este form2 sea genérico para diferentes proyectos, no quiero tener en el uses los TForm de cada proyecto. Si no que quiero crearlos en tiempo real (aunque ya se crearon en tiempo de diseño), llamarlos y después cerrarlos.

Bueno esa es la idea. Agradecería cualquier tipo de ayuda.
Saludos
Responder Con Cita
  #5  
Antiguo 11-11-2014
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Poder: 13
engranaje Va por buen camino
A ver si te he entendido bien y si me explico:

Si a tu form2 le pasas como parametro el form3 y realmente el form2 no necesita saber nada del interior del form3 y solo quieres abrilo puedes pasarle como parametro al metodo que utilices del form2 un tform.
Asi en el uses del form1 deberias tener el form2 y el form3 pero al form2 del pasarias el form3 como parametro.
Si en el form2 no necesitas hacer nada que no se pueda hacer con un tform no es necesario que lo añadas al uses.

Algo asi:

Código Delphi [-]
procedure TForm3.mostrar(formulario: tform);
begin
  formulario.Show;
end;

Última edición por engranaje fecha: 11-11-2014 a las 15:21:05. Razón: añadir ejemplo
Responder Con Cita
  #6  
Antiguo 11-11-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por socger Ver Mensaje
Buenas, la idea es abrir desde un form1, un form2 y que este abriera un form3 pero sin tenerlo declarado en el uses.
Por supuesto tampoco están declarados como abiertos en el proyecto, si no que se irían abriendo conforme se fueran necesitando y luego cerrándose.
La única forma de realizar eso es utilizar packages dinámicos en tu aplicación.
O DLL's, como han comentado.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 11-11-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Si entiendo lo que quieres, tienes un form de busqueda que quieres que sea generico. Lo unico que varia es el campo que buscas.

Seria el mismo caso que un diagolo como el MessageBox. Asi que no hay que hacer un form por cada campo, solo pasar los params a ese form, y crearle una funcion como:

Código Delphi [-]

function BuscarPorCampo(Nombre:String):
__________________
El malabarista.
Responder Con Cita
  #8  
Antiguo 11-11-2014
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Hola SocGer,

Necesita incluir el uses para poder usarlo en cualquier otro formulario, si no lo incluyes no podrá utilizarlo ni ese ni ninguno, si lo que te preocupa es que cuando vayas a reutilizar el formulario genérico en otro Form se quede el anterior, eso no te tiene que preocupar ya que cuando destruyes el Form también se destruye lo de mas.

También te digo que un formulario lo puedes crear tantas veces como quieres, puedes crear un TForm cientos de veces dentro de un procedimiento o función, solo hay que cambiar el nombre de la variable.

Código Delphi [-]
....
var
  aForm: TFiltroForm;
  bForm: TFiltroForm;
begin
  aFrom := TFritroForm.Create(Self);
    aForm.Edit1.Text := 'bla, bla, bla';
    aFrom.ShowModal;
  bForm := TFiltroForm.Create(Self);
    bForm.Edit1.Text := 'blo, blo, blo';
    bForm.ShowModal;
end;
ambos representa al TFiltroForm pero el contenido de cada uno es distinto.

buscas esto o me he perdido yo

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #9  
Antiguo 12-11-2014
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Poder: 13
engranaje Va por buen camino
Si yo entendí bien, la idea es un form genérico que se pueda utilizar desde cualquier proyecto y que dependiendo de desde donde se muestre tendrá botones que muestren distintos forms. Es decir si el formulario tiene tres botones, uno mostrar detalle del cliente,otro mostrar facturas, otro mostrar pedidos y se va a utilizar desde el proyecto A y desde el proyecto B se quiere que según desde que proyecto se llame se muestre los formularios de detalle de cliente, facturas y pedidos de ese proyecto en cuestión. Lo que no se quiere es añadir nada exclusivo de un proyecto a un form genérico, por eso quiere poder hacerlo sin añadir al uses los forms.

Tal y como yo lo veo es una situación en la que se puede utilizar el polimorfismo. Si en el form genérico se declaran objetos de un tipo antepasado común a todos los forms que se puedan mostrar desde el form genérico y cuando se llama al form genérico quien lo llama le pasa los forms del proyecto casteados al tipo de form antepasado como parametros, desde el form genérico podrán llamarse a todos los métodos del form declarados en el antepasado, entre ellos el show y el showmodal etc.

El problema que esto plantea si es la creación de los forms, deben crearse en el proyecto y pasarse como parámetros instancias ya creadas de los tipos de forms propios del proyecto. Dentro del formulario genérico no podrán crearse aunque si destruirse.
Responder Con Cita
  #10  
Antiguo 12-11-2014
socger socger is offline
Miembro
 
Registrado: jun 2004
Posts: 89
Poder: 20
socger Va por buen camino
Chicos, muchas gracias. Ahora es momento de hacer pruebas.

Muy buen aporte y participación. Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como evito abrir 2 veces el mismo form? daragor Lazarus, FreePascal, Kylix, etc. 13 14-08-2016 09:37:07
Como puedo abrir un form en un PageControl marcoev OOP 7 05-09-2008 18:41:38
Abrir tablas de Firebird sin tenerlo instalado David Conexión con bases de datos 3 23-05-2006 17:41:54
Abrir un Form tantas veces como desee jorodgar Servers 3 20-04-2005 09:07:43
Cómo utilizar el BDE sin tenerlo instalado? tupez Conexión con bases de datos 3 24-08-2003 21:34:02


La franja horaria es GMT +2. Ahora son las 21:34:13.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi