Hallo,
ich hätte da noch eine Lösung ohne Timer:
Delphi-Quellcode:
type
TEdit = class (StdCtrls.TEdit)
private
FOnSizeChange : TNotifyEvent;
public
procedure SetBounds (ALeft, ATop, AWidth, AHeight: Integer); override;
property OnSizeChange: TNotifyEvent
read FOnSizeChange write FOnSizeChange;
end;
TForm1 = class (TForm)
{...}
Button1 : TButton;
Edit1 : TEdit;
Label1 : TLabel;
procedure Button1Click (Sender: TObject);
procedure FormCreate (Sender: TObject);
private
procedure SizeChanged (Sender: TObject);
end;
procedure TEdit.SetBounds (ALeft, ATop, AWidth, AHeight: Integer);
begin
inherited;
if Assigned(FOnSizeChange) then
FOnSizeChange (Self);
end;
procedure TForm1.Button1Click (Sender: TObject);
begin
with Edit1.Font do
Size := Size + 1;
end;
procedure TForm1.FormCreate (Sender: TObject);
begin
Edit1.OnSizeChange := SizeChanged;
end;
procedure TForm1.SizeChanged (Sender: TObject);
begin
with (Sender as TEdit) do
Label1.Caption := Format('Height: %d', [Height]);
end;
Der Vorteil dieser Lösung besteht darin, daß sie auch auf (versteckte) Änderungen des Fonts im Edit reagiert. Ein manuelles Nachführen des Labels ist in solchen Fällen oft schwierig.
Gruß Hawkeye