Página principal
Artículos y trucos
Catálogo de productos
Ejemplos y descargas
Mis libros
Cursos de formación
Investigación y desarrollo
Libros recomendados
Mis páginas favoritas
Acerca del autor
 
En colaboración con Amazon
 
Intuitive Sight

Koan #1: Cuando uno son dos y dos son uno

Coloque un componente TMemo en un formulario; agregue un botón e intercepte el evento OnClick de este último:

procedure TForm1.Button1Click(Sender: TObject);
var
  F: TFont;
begin
  F := Memo1.Font;
  F.Style := [fsBold];
end;

Estoy asignando a una variable temporal F el valor de la propiedad Font del memo. Como sabemos, las variables de objetos representan realmente punteros a dichos objetos. Así que la asignación que se realiza sobre el estilo del tipo de letra está afectando a su vez al tipo de letra del memo, pues F y Memo1.Font apuntan al mismo objeto. Dos son uno...

Ahora bien, traiga un componente TFontDialog, y sustituya el manejador de eventos anterior por el siguiente:

procedure TForm1.Button1Click(Sender: TObject);
begin
  FontDialog1.Font := Memo1.Font;
  if FontDialog1.Execute then
    Memo1.Font := FontDialog1.Font;
end;

Font del memo a la propiedad del diálogo, ¿no se está perdiendo el objeto de tipo de letra al cual apuntaba el diálogo? Y ahora, ¿por qué necesitamos reasignar el tipo de letra del diálogo al memo? ¿No habíamos quedado en que uno eran dos...?