![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#4
|
|||
|
|||
|
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 |
|
|
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 |
|