Ver Mensaje Individual
  #1  
Antiguo 26-02-2010
Archer Archer is offline
Miembro
 
Registrado: sep 2005
Ubicación: Valencia
Posts: 28
Reputación: 0
Archer Va por buen camino
¿¿TFont es una clase puntero??

Pues simplemente eso, ¿¿TFont es una clase puntero??, tengo un ejemplo que parece que lo confirma, pero me ralla la tira...

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    Fuente: TFont;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Fuente := Label1.Font;
  Fuente.Color := clWhite;
  Label2.Font := Fuente;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Fuente := TFont.Create;
  Label1.Font.Size := 20;
end;

end.

es muy sencillo dos labels y un boton, supuestamente despues de pulsar el boton teniamos que tener 2 etiquetas con tamaño de fuente 20 una blanca y otra negra, pero no es asi, tenemos 2 etiquetas de tamaño 20 de color blanco las dos!!!!

parece ser que cuando cambio la propiedad "color" de la variable fuente se cambia tambien en la label1, como si realmente no existiera la variable como un objeto sino simplemente como una referencia hacia label1.font

¿es normal esto? ¿os pasa a todos? ¿lo sabias? ¿como narices se puede saber, que no sea el metodo prueba y ensayo, si una clase es una "clase puntero" o tiene "datos propios"? y ya por ultimo, ¿como hariais para acabar con una etiqueta de cada color de una manera "elegante" y sin usar mas etiquetas no visibles y cosas de esas?

por supuesto la mayoria de las preguntas de arriba no esperan respuesta, es una manera de hablar, tranquis!!!

Saludos.

PD: Supongo que no tendra nada que ver pero uso Turbo Delphi Explorer en WinXP
Responder Con Cita