![]() |
Duda con 'Self' ...Urgente
Hola a todos
Tengo una unidad en la cual se ejecutan varios procedimientos, pero ahora quiero incluir uno que construye un Objeto Digamos un (Form) y lo ejecuta todo bien pero cuando trato de compilar me da un aviso [Error] Procedim.pas(622): Undeclared identifier: 'Self' El procedimiento es el siguiente procedure ShowForm(FormClass: TFormClass); begin With FormClass.Create(Self) do try ShowModal; finally Free; end; end; La pregunta es la siguiente ¿ Porqué si lo ejecuto dentro de una form si compila y si lo hago dentro de solamente una Unit me da ese error ? y como poder superarlo Nota : Sera que falta incluir alguna unidad ? De Antemano, Gracias :D |
Self es una variable implicita, que funciona solamente en el contexto de un objeto, ya que contiene una referencia a si mismo (self). Es decir, a la instancia del objeto dentro del cual se hace la llamada al método en tiempo de ejecución.
De tal forma, si tenes una clase TForm1, utilizar self en uno de sus métodos te permitirá acceder a los métodos, propiedades y atributos de la instancia de TForm1 sobre la que se este actuando en ese momento. En cambio, si lo utilizas dentro de la clase TMiClase, Self es una variable de tipo TMiClase. En tu caso particular, podes agregar un parámetro al procedimiento, que traiga el owner del formulario, o por definicion crearlos con el objeto application como owner o por ultimo, sin owner. Algo como Código:
With FormClass.Create(Application) doEspero haberme explicado lo suficiente. Hasta luego. ;) |
Aclaro que te respondi, porque no me di cuenta del "urgente" del título de tu post... el cual me disgusta bastante.
TE recomiendo que leas la guia de estilo de los foros (vinculo al pie de este mensaje) y que en un futuro tengas un mejor criterio para titular tus posts. Hasta luego. |
Gracias por tu respuesta jachguate, por lo de Urgente, espero no haber ocasionado mas disgustos, para la proxima tendre mas cuidado
De antemano, Gracias :) |
| La franja horaria es GMT +2. Ahora son las 19:36:04. |
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