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) 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...