Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Pregunta sobre los create. (https://www.clubdelphi.com/foros/showthread.php?t=60073)

Lucciano 18-09-2008 20:53:38

Pregunta sobre los create.
 
Hola como andan, necesito aclarar ciertos conceptos y quizas uds, me puedan ayudar. Cual es la gran diferencia al momento de crear un objeto, como por ejemplo un TSQLQuery, y ponerle en el create, nil, self, application.

Es decir.
var
Consulta: TSQLQuery;
Begin
.
.
Consulta:=TSQLQuery.Create(nil) o
Consulta:=TSQLQuery.Create(self) o
Consulta:=TSQLQuery.Create(application)
.
end;


Gracias, :)

coso 18-09-2008 21:13:00

Hola, el parametro q se le pasa al create es su 'parent', esto es, el objeto al que esta enlazado. Sirve para algunas cosas como por ejemplo, al destruir el parent, destruir el objeto en si (si no ha pasado ya), al pintar el parent, pintar tambien todos sus 'child', en ese caso tambien el objeto en si. te recomiendo que leas la ayuda de delphi al respecto. un saludo.

maeyanes 18-09-2008 21:13:56

Hola...

Lo que haces al pasarle un parámetro al momento de crear un componente, es indicarle quien va a ser su "dueño", esto es, quien se va a encargar de destruir al objeto en cuestion.

Código Delphi [-]
Consulta:=TSQLQuery.Create(nil)

Aquí no le estás pasando ningún Owner al objeto nuevo y por consiguiente tienes que destruirlo desde código (Consulta.Free) cuando ya no lo necesites.

Código Delphi [-]
Consulta:=TSQLQuery.Create(self)

Aquí el Owner del objeto es el objeto desde donde lo creas. Esto es, si tu código está dentro de un método de una forma, por ejemplo, el Owner de Consulta será esta misma:

Código Delphi [-]
contructor TForm1.CreateForm(Sender: TObject);
begin
  Consulta := TSQLQuery.Create(Self) // El Owner es la misma forma
end;

y para finalizar

Código Delphi [-]
Consulta:=TSQLQuery.Create(application)

Aquí estás indicando que el Owner del objeto es la misma aplicación y hasta que esta termine de ejecutarse, el objeto no se destruirá...


Espero que mi pequeña explicación te ayude a entender mejor el concepto de Owner de un componente.



Saludos...

coso 18-09-2008 21:16:45

ahora tengo yo una duda. ¿El owner y el parent son lo mismo?

maeyanes 18-09-2008 21:17:19

Hola...

Cita:

Empezado por coso (Mensaje 315035)
Hola, el parametro q se le pasa al create es su 'parent', esto es, el objeto al que esta enlazado. Sirve para algunas cosas como por ejemplo, al destruir el parent, destruir el objeto en si (si no ha pasado ya), al pintar el parent, pintar tambien todos sus 'child', en ese caso tambien el objeto en si. te recomiendo que leas la ayuda de delphi al respecto. un saludo.

Eh... nop... El Parent y el Owner de un componente no tienen que ser necesariamente el mismo. El Parent es el que le indica donde se va a situar un componente (un panel, una forma, etc...)



Saludos...

maeyanes 18-09-2008 21:18:08

Cita:

Empezado por coso (Mensaje 315037)
ahora tengo yo una duda. ¿El owner y el parent son lo mismo?

Lee mi mensaje anterior... :D :D

coso 18-09-2008 21:41:29

pues convencido, suerte que no los uso mucho directamente.

Lucciano 20-09-2008 22:24:12

Entendido.
 
Hola amigos, muchas gracias a todos especialmente a ti maeyanes por ser tan claro y sensillo.

Saludos!

PD: Ahora si me quedo claro!.:)


La franja horaria es GMT +2. Ahora son las 13:36:09.

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