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