Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-10-2005
Avatar de Durbed
Durbed Durbed is offline
Miembro
 
Registrado: ago 2004
Posts: 166
Poder: 20
Durbed Va por buen camino
Como saber si un Formulario ha sido creado

Necesito saber si dentro de mi aplicacion MDI, hay un formulario en concreto creado.

Gracias
__________________
Intentando hacer algo con Delphi 7 y Firebird 1.5
Responder Con Cita
  #2  
Antiguo 09-10-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Prueba con:
If Assigned(form) then
.....
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 10-10-2005
Avatar de Durbed
Durbed Durbed is offline
Miembro
 
Registrado: ago 2004
Posts: 166
Poder: 20
Durbed Va por buen camino
Eso no me funciona, a ver si me explico mejor: El formulario hijo que necesito saber si ha sido creado, lo creo desde otra ventana hija, pero la comprobacion la necesito hacer desde el formulario madre.

Gracias
__________________
Intentando hacer algo con Delphi 7 y Firebird 1.5
Responder Con Cita
  #4  
Antiguo 10-10-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Ahora no entendí.

Si llamas al formulario hijo desde otro similar, cómo piensas comprobarlo con el padre??? Con un Timer??

Realmetne no entiendo
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!

Última edición por vtdeleon fecha: 10-10-2005 a las 16:09:36.
Responder Con Cita
  #5  
Antiguo 10-10-2005
Avatar de Durbed
Durbed Durbed is offline
Miembro
 
Registrado: ago 2004
Posts: 166
Poder: 20
Durbed Va por buen camino
La cuestion es que el formulario hijo N1 lo creo desde el formulario hijo N2. Pero ahora he puesto un componente que visualiza los ficheros de un directorio, ese componente esta puesto sobre el fondo del formulario Padre, y quiero que al picar sobre un archivo de dicho componente, mire si el form N1 esta creado y en ese caso capturar el nombre del fichero.

Por eso necesito saber desde el Form Padre si el Form N1 esta creado. Si sirve de algo, el Form N2 siempre esta creado y no se puede cerrar, es decir que siempre existe mientras dure la ejecucion de la aplicacion.

Gracias de nuevo.
__________________
Intentando hacer algo con Delphi 7 y Firebird 1.5
Responder Con Cita
  #6  
Antiguo 10-10-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Tienes varias opciones, aquí te doy unas:

1. Agregar la unidad del formulario N1 a la claúsula uses del formulario padre:
Código Delphi [-]
implementation

uses { Lista de unidades... }, N1Unit;
ya con esto puedes hacer lo que te indican arriba:
Código Delphi [-]
if Assigned(N1) then
  // ...

2. Crear procedimientos o propiedades en el formulario N2 que permitan al formulario padre saber si ya está creado N1:
Código Delphi [-]
TN2 = class(TForm)
private
  //...
protected
  //...
public
  function IsN1Created: Boolean;
  procedure SetFileNameN1(const AFileName: string);
end;

implementation

uses N1Unit;

function TN2.IsN1Created: Boolean;
begin
  Result := Assigned(N1)
end;

procedure TN2.SetFileNameN1(const AFileName: string);
begin
  if IsN1Created then
    N1.Labe1.Caption := AFileName
end;
y desde el formulario padre:
Código Delphi [-]
begin
  if N2.IsN1Created then
    N2.SetFileNameN1(FileBox1.FileName);
  //...
end;

Espero que algo de esto te sirva...



Saludos...
Responder Con Cita
  #7  
Antiguo 13-10-2005
Avatar de Durbed
Durbed Durbed is offline
Miembro
 
Registrado: ago 2004
Posts: 166
Poder: 20
Durbed Va por buen camino
Ninguna de esas soluciones me funciono, gracias de todas formas, al final lo he conseguido con dos variables y un timer, asi cuando creo la ventana hija el timer empieza a comprobar en la variables (Estan en una unidad comun a toda la aplicacion) si la ruta del fichero se ha actualizado.

Un saludo y gracias.
__________________
Intentando hacer algo con Delphi 7 y Firebird 1.5
Responder Con Cita
  #8  
Antiguo 13-10-2005
rounin rounin is offline
Miembro
 
Registrado: sep 2005
Posts: 43
Poder: 0
rounin Va por buen camino
Saludos,

Si solo un exemplar de TN1 puede existir,
deja la clase TN1 ser responsable de la existencia de exemplar.

if TN1.IsExemplarCreate then ...
//TN1.UniqueExemplar.DoSomething;

Código Delphi [-]
 
 
type
  TN1 = class(TForm)
  private
    { Private declarations }
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    class function UniqueExemplar: TN1;
    class function IsExemplarCreated: Boolean;
  end;
 
//var
// N1: TN1;
 
implementation
{$R *.dfm}
 
var
  theUniqueExemplar: TN1;
 
constructor TN1.Create(AOwner: TComponent);
begin
  inherited;
  if theUniqueExemplar = nil then
    theUniqueExemplar := Self else
    raise Exception.Create('Only one exemplar of TN1 is allowed');
end;
 
destructor TN1.Destroy;
begin
  theUniqueExemplar := nil;
  inherited;
end;
 
class function TN1.IsExemplarCreated: Boolean;
begin
  Result := Assigned(theUniqueExemplar);
end;
 
class function TN1.UniqueExemplar: TN1;
begin
  if not IsExemplarCreated then {theUniqueExemplar := } TN1.Create(Application);
  Result := theUniqueExemplar;
end;

PS Es no buen estilo usar variables globales para
MDI-formularios, porque frequente hay mas que un ejemplar.

Última edición por rounin fecha: 13-10-2005 a las 14:00:37.
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


La franja horaria es GMT +2. Ahora son las 18:34:32.


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