Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Duda con 'Self' ...Urgente (https://www.clubdelphi.com/foros/showthread.php?t=3271)

IVAND 30-08-2003 01:15:23

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

jachguate 30-08-2003 01:41:55

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) do
o
With FormClass.Create(nil) do



Espero haberme explicado lo suficiente.

Hasta luego.

;)

jachguate 30-08-2003 01:44:19

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.

IVAND 31-08-2003 17:13:10

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