Cuando pones
Código Delphi
[-]MiComponente1.MiBmp := Image1.picture.Bitmap;
estás
asignando un valor a la propiedad MiBmp. Como en la declaración de esta propiedad tienes puesto un método de acceso para escritura (
write), entonces la asignación es equivalente a:
Código Delphi
[-]
MiComponente1.SetMiBmp(Image1.picture.Bitmap);
En el segundo caso:
Código Delphi
[-]MiComponente1.MiBmp.Assign(Image1.picture.Bitmap);
No estás asignando un valor a la propiedad, no hay una sentencia de la forma
Código:
objeto.propiedad := valor;
Lo que estás haciendo es usar el método Assign del objeto
Código:
MiComponente1.MiBmp
Piensa lo que tendría que hacer el compilador cuando encuentra:
Código:
MiComponente1.MiBmp.Assign(Image1.picture.Bitmap);
Como ha de usar el método Assign de MiBmp,
primero debe saber quién es MiBmp, es decir, debe
leer la propiedad. En la declaración de la propiedad ve que no hay método deacceso de lectura (
read) sino una referencia directa a FMiBmp, entonces usa el método Assign de este objeto FMiBmp.
Que no te confunda el hecho de estar usando un método que porcasualidad se llama Assign, con el hecho de estar asignando un valor a una propiedad como en el primer caso que planteas.
// Saludos