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 17-05-2008
das das is offline
Registrado
 
Registrado: may 2008
Posts: 3
Poder: 0
das Va por buen camino
Aplicaciones MDI - Principiante

Hola la lista. Soy nuevo en Delphi, lo pienso aprender de forma 100%autodidacta. Me gustaria saber como desde el formulario principal se puede referenciar a la ventana activa para ejecutar un método alojada en la misma. Para ser mas concreto: el ejemplo de aplicación MDI tiene una especie de "wordpad" lo compilo, lo ejecuto, abro multiples instancias del editor y desde el menú principal quiero grabar el contenido de una de ellas o sea el de la ventan activa. Teniendo en cuenta que el código del menú está en el main ¿como se ejecuta un método y como se asigna una propiedad a la ventana activa? Por ej. en VB6 se utiliza ActiveForm.Metodo y ActiveForm.Propiedad = valor. Desde ya muchas gracias aguardo respuestas
Responder Con Cita
  #2  
Antiguo 18-05-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola das, no creo que te pueda ayudar mucho, pero para ver la ventana activa en MDI, talvez puedas hacerlo de esta forma, ademas que puedes acceder a algunas propiedades.

Código Delphi [-]
 Screen.Forms[0].ActiveMDIChild.Name;

donde Forms[0], es tu formulario padre.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 18-05-2008
das das is offline
Registrado
 
Registrado: may 2008
Posts: 3
Poder: 0
das Va por buen camino
Gracias ha sido muy util, sigo avanzando
Responder Con Cita
  #4  
Antiguo 18-05-2008
das das is offline
Registrado
 
Registrado: may 2008
Posts: 3
Poder: 0
das Va por buen camino
Aplicaciones MDI - Principiante II

Caro

Si bien pude navegar las propiedades visibles de los formularios hijos desde codigo insertado en el formulario padre no he podido acceder a propiedades y/o metodos propios (user defined).

Todo el proyecto fue generado de forma automatica por el asistente de aplicaciones.

Esta es la porción de código desde la que quiero activar el método en el formulario hijo, las lineas comentadas son por las distintas pruebas (realizadas de a una por vez)

procedure TMainForm.FileSave1Execute(Sender: TObject);
var
Child: TMDIChild; {Si uso esta no uso la siguiente}
Child: TForm; {Si uso esta no uso la anterior}
begin
{Grabar archivo}
{showmessage(Screen.Forms[0].Caption);}
if SaveDialog.Execute then
strFileName := SaveDialog.FileName;

Child := Screen.Forms[0] ; {Si uso esta no uso la siguiente}
Child := ActiveMDIChild; {Si uso esta no uso la anterior}

Child.GrabarDatos(strFileName);
end;

Siempre el resultado de la compilación fue similar:

[Pascal Error] MAIN.PAS(102): E2010 Incompatible types: 'TMDIChild' and 'TForm' si uso: var Child: TMDIChild;

o bien

[Pascal Error] MAIN.PAS(106): E2003 Undeclared identifier: 'GrabarDatos' si uso: var Child: TForm;

El codigo del formulario hijo es el siguiente:

unit CHILDWIN;
interface
uses Windows, Classes, Graphics, Forms, Dialogs, Controls, StdCtrls;
type
TMDIChild = class(TForm)
Memo1: TMemo;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Memo1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure GrabarDatos(FileName: String);
end;
implementation
{$R *.dfm}
procedure TMDIChild.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TMDIChild.Memo1Change(Sender: TObject);
begin
{TMainForm.FileSaveItem.enabled=true}
end;
Procedure TMDIChild.GrabarDatos(FileName: String);
Var
msgTexto: string;
Begin
{Grabar el contenido en el archivo indicado}
msgTexto := 'Grabando: ' + FileName;
showmessage( msgTexto );
end;
end.

Modestamente, ¿Que interpreto yo?: Es un problema de herencia la clase TForm no puede heredar el metodo aun cuando se declaro publico por lo cual la variable Child no puede acceder al metodo y si utilizo la otra declaracion no es compatible con ActiveMDIChild o Screen.Forms[0] por que quiere heredar el metodo y no lo encuentra.

Ahora la pregunta del millon... ¿ Como se soluciona esto ?

Saludos cordiales
Daniel
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
Guía principiante: Delphi para desarrollar aplicaciones Windows ismaws Varios 3 18-04-2008 21:01:24
de un principiante dtomeysoto MySQL 1 02-04-2008 16:11:42
Principiante krloz99 Varios 3 08-06-2007 15:59:30
Parametros al ejecutar Aplicaciones + Aplicaciones en Mi PC NeWNeO Varios 4 19-08-2004 14:01:30
principiante olybola Conexión con bases de datos 3 17-05-2004 19:56:36


La franja horaria es GMT +2. Ahora son las 21:05:53.


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