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 30-08-2003
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Angry 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

__________________
IVAND
Responder Con Cita
  #2  
Antiguo 30-08-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 30-08-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Thumbs down

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.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate

Última edición por jachguate fecha: 30-08-2003 a las 01:46:30.
Responder Con Cita
  #4  
Antiguo 31-08-2003
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Gracias por tu respuesta jachguate, por lo de Urgente, espero no haber ocasionado mas disgustos, para la proxima tendre mas cuidado



De antemano, Gracias
__________________
IVAND
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


La franja horaria es GMT +2. Ahora son las 16:05:31.


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