Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-10-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ricardo_yah.

Una forma práctica de hacerlo es usando referencia de clase. La siguiente función crea el Form si no existe, o lo muestra si está creado:
Código Delphi [-]
procedure TForm1.MostrarChild(AClass: TFormClass);
var
  i: Integer;
begin
  for i:= 0 to Screen.FormCount -1 do  // 0 hasta MDIChild abiertos
    if Screen.Forms[i] is AClass then  // Si está el que buscamos
    begin
      Screen.Forms[i].WindowState:= wsNormal; // a modo normal
      Screen.Forms[i].BringToFront;           // traerlo al frente
      Exit;                                   // encontrado, salir
    end;
  with AClass.Create(Self) do Show;           // crearlo
end;

Ejemplo de llamada:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  MostrarChild(TForm2);
  // MostrarChild(TOtroForm);
  // MostrarChild(...
end;

Saludos.
Responder Con Cita
  #2  
Antiguo 01-11-2010
ricardo_yah ricardo_yah is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 13
Poder: 0
ricardo_yah Va por buen camino
Hola amigo,

hola amigo gracias por responder
mira entiendo el proceso pero me marca un error en

procedure TForm1.MostrarChild(AClass: TFormClass);

me Tform1 no contiene un componene llamado mostrarchild


tambien me marca un error en

with AClass.Create(Self) do Show;

identificador (self) no declarado

no se si es por la version de delphi tengo xe

gracias y disculpa la molestia
Responder Con Cita
  #3  
Antiguo 01-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ricardo_yah.

Ese error surge por que te falta declarar la cabecera de la función MostrarChild en la Clase TForm1, o por que la clase del Form no se llama TForm1.

Te pongo el código completo el cuál acabo de probar para pegarte el ejemplo y funciona perfectamente:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    procedure MostrarChild(AClass: TFormClass);  // declaracion que te falta
  public
  end;

var
  Form1: TForm1;

implementation {$R *.dfm}

uses Unit2; // unidad donde está declarado TForm2

procedure TForm1.MostrarChild(AClass: TFormClass);
var
  i: Integer;
begin
  for i:= 0 to Screen.FormCount -1 do  // 0 hasta MDIChild abiertos
    if Screen.Forms[i] is AClass then  // Si está el que buscamos
    begin
      Screen.Forms[i].WindowState:= wsNormal; // a modo normal
      Screen.Forms[i].BringToFront;           // traerlo al frente
      Exit;                                   // encontrado, salir
    end;
  with AClass.Create(Self) do Show;           // crearlo
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MostrarChild(TForm2);
end;

end.

Por supuesto que TForm1 tiene que estar como fsMDIForm y Form2 como fsMDIChild respectivamente. Y si no se llamasen TForm1 y TForm2, cambiar los nombres por los que les hayas asignado.

Es conveniente (aunque no necesario) que quites el Form MDIChild de la creación automática de forms:
Project -> Options -> Forms -> Auto-create forms


Saludos.

Última edición por ecfisa fecha: 01-11-2010 a las 01:45:37.
Responder Con Cita
  #4  
Antiguo 01-11-2010
ricardo_yah ricardo_yah is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 13
Poder: 0
ricardo_yah Va por buen camino
funciono ecfisa

gracias ecfisa y disculpa las molestias funciono perfectamente el codigo
y te agradesco la aclaracion ya que como mencione estoy empezando con delphi y ese tipo de aclaraciones me ayudara en lo sucesivo me ayudara.

Mil Gracias.................
Responder Con Cita
  #5  
Antiguo 01-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
De nada, me alegra haber podido ayudarte.

Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Activar Boton agustin173 Varios 8 03-07-2010 01:27:10
Activar con voz Pablo Carlos Varios 3 22-05-2010 18:12:01
Activar el salvapantallas azulin API de Windows 6 14-11-2008 13:21:03
Activar formulario pabliyo Gráficos 1 07-04-2008 12:06:28
Activar los Componetes Ado.Net BuenaOnda Conexión con bases de datos 0 02-08-2006 15:57:35


La franja horaria es GMT +2. Ahora son las 01:57:07.


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