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 05-09-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Arrow llamar a procedimientos desde otro form

Hola

tengo un form childMDI , que esta heredado de otro . En la creación del formulario tengo el siguiente código :

Código Delphi [-]
procedure TFormDatos.FormCreate(Sender:TObject);
begin

  inherited;

  PageControl.ActivePage := TabSheet1;
  TabSheet2.TabVisible := False;
  Caption := 'xselelsee........';

end;

Pero quiero , quitar el código del FormCreate y ponerlo en la ventana principal de la aplicacion MDIForm , para que llamando a esta formulario después de crearlo me haga el código que he puesto .

Tengo en el formulario principal , un código de creación de la ventan MDI y luego e intentado poner algo así

Código Delphi [-]

TFormDatos.Lanzar ; // aquí se crea la aplicación

// El código que pongo acontinuación me da error , No al compilar si al ejecutar

with formDatos do
begin
  PageControl.ActivePage := TabSheet1;
  .......................
end;
Responder Con Cita
  #2  
Antiguo 05-09-2006
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Bueno, me parece que no te he entendido muy bien, pero creo que puede ser una cosa...

Si FormDatos es la ventana hija (MDIChild), antes de hacer nada con ella tienes que crearla (si no se crea automáticamente, míralo en Project|Option|Forms). Es algo así:

Código Delphi [-]
FormDatos:=TFormDatos.Create(Self);
With FormDatos do
  begin
  PageControl.ActivePage:=TabSheet1;
  {...}
  end:;

Por supuesto, asegúrate de que se destruye (en el evento OnClose del MDIChild pon "Action:=caFree;");

Si pudieras explicarlo un poco mejor, igual te podría ayudar más... y un consejo: ponle nombre a todos los componentes que manejes por código (PageControl, TabSheet1...).
Responder Con Cita
  #3  
Antiguo 05-09-2006
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 21
yusnerqui Va por buen camino
Lo que te dice el amigo ixMike es sierto, por otra parte, creo que deberías publicar un poco más detallado tu código de creación, quizás estes olvidando algo en el mismo.

saludos

yusnerqui
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo

Responder Con Cita
  #4  
Antiguo 05-09-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Pongo la función lanzar , que esta en el formulario , del cual derivan los MDI.

Asi pues TFormDatos viene de TFormPadre ,

type
TFrmGCobrosPagos = class(TFrmMaestros)

Código Delphi [-]
class Function TFormPadre.Lanzar : TFormPadre;
var
 i : integer;
 f: TForm;
begin
    For i := Screen.FormCount -1 downto 0 do
    begin
        F := Screen.Forms[i];
        if F.ClassType = self then
            begin
                if F.WindowState <> wsMAximized then
                    F.WindowState := wsMaximized;
                    Result := TFormPadre(F);
                    Exit;
            end
            else  if F.FormStyle = fsMDIChild then
                F.Close;

    end;

    Result := self.Create(Application);
end;

El resto del código ya lo he puesto . El formulario se crea sin problemas , eso no tiene ningún error .

Cuando pongo

TFormDatos.Lanzar;

Se crea el MDIChild y no hay ningún error , así se crean todos los formularios y no da error .

El Error esta cuando pongo el código que he puesto antes , el siguiente

Código Delphi [-]
with formDatos do
begin
  PageControl.ActivePage := TabSheet1;
  .......................
end;
Responder Con Cita
  #5  
Antiguo 05-09-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Depurando me he dado cuenta de que falla en sólo cuando llega a :

PageControl.ActivePage := TabSheet1;
TabSheet2.TabVisible := False;
Responder Con Cita
  #6  
Antiguo 05-09-2006
[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
Y que mensaje de error te da?
Responder Con Cita
  #7  
Antiguo 06-09-2006
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
Hola!!

Se supone que escribes

Código Delphi [-]
begin
  //  ...
  TFormDatos.Lanzar;
  // ...
  with formDatos do
  begin
    PageControl.ActivePage := TabSheet1;
    // ...
end;

Ahí está el programa ya que el método de clase que utilizas (TFormDatos.Lanzar) debería guardar el formulario que crea en una variable.

Creo que debería de ser así:

Código Delphi [-]
var
  formDatos: TFormDatos;
begin
  //  ...
  formDatos: TFormDatos.Lanzar;
  // ...
  with formDatos do
  begin
    PageControl.ActivePage := TabSheet1;
    // ...
end;

Esto es lo que ya te ha contestado ixMike, pero creo que debería funcionar
Responder Con Cita
  #8  
Antiguo 06-09-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Si pongo el anterior código me da error , ya que el formulario esta heredado y no puedo ponerle la variable , no me deja compilar .

como yo lo he puesto , me deja compilar ,no me da error , pero al ejecutar el programa me da este error :

http://img168.imageshack.us/img168/641/delphiqq7.jpg
Responder Con Cita
  #9  
Antiguo 06-09-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Ya lo he resuelto , con este código :

Código Delphi [-]
TFormDatos.Lanzar;

       with (ActiveMDIChild as TFormDatos) do
       begin

            // Aquí el código
       end;
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
Imposible hacer visible un form desde otro form SMTZ .NET 13 16-01-2006 21:41:08
como utilizar procedimientos de otro form? ConanDoel Varios 2 18-05-2005 05:39:24
Llamar una form desde otra form!!! niogon Varios 2 30-09-2004 16:09:17
llamar a un procedure desde otro negama Conexión con bases de datos 1 28-08-2003 01:22:15
llamar a otro programa desde el mio sergionr Lazarus, FreePascal, Kylix, etc. 1 15-05-2003 18:35:06


La franja horaria es GMT +2. Ahora son las 11:59:27.


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