resetear - Cómo restablecer un TForm delphi a la apariencia original después del uso de ScaleBy()
como resetear un alcatel one touch pop c5 (3)
Primero, ajuste la escala a la escala original, luego escale a una nueva escala. Por ejemplo, para escalar un formulario en un evento OnResize:
...
private
FDesignHeight: Integer;
FDesignWidth: Integer;
FPrevWidth: Integer;
end;
...
procedure TForm1.FormShow(Sender: TObject);
begin
FDesignHeight := Height;
FDesignWidth := Width;
FPrevWidth := Width;
Scaled := True;
end;
procedure TForm1.FormResize(Sender: TObject);
begin
if Scaled then
begin
DisableAlign;
ScaleBy(FDesignWidth, FPrevWidth);
ScaleBy(Width, FDesignWidth);
EnableAlign;
end;
FPrevWidth := Width;
end;
procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
begin
NewHeight := Round(NewWidth * FDesignHeight / FDesignWidth);
end;
Quiero permitir que el usuario dimensione un formulario con sus controles proporcionalmente redimensionados. ScaleBy (N, M) funciona bien para mí, pero hay, por supuesto, errores acumulativos de redondeo si se repite. Para contrarrestar esto, simplemente deseo anteceder a ScaleBy () con una llamada para recrear el formulario en su apariencia y tamaño predeterminados y luego llamar a ScaleBy con varios valores. Sé que puedo hacerlo alojando mi formulario dentro de un panel (y desechándolo / recreándolo) pero ¿hay una llamada que restablecerá el formulario después de usar ScaleBy ()?
Editar: estoy usando Delphi XE2 y también me interesaría el éxito de cualquier persona con un componente u otro código (pagado o gratuito) para escalar un formulario de manera ordenada: mis propias descargas no han producido una solución funcional.
Una solución sería usar la propiedad Componentes del formulario interar sobre todos los controles secundarios de un formulario y restablecerlos a su valor original.
El siguiente artículo tiene un código de ejemplo: http://delphi.about.com/od/adptips2005/qt/storecontrolpos.htm
Esto es para un propósito ligeramente diferente, pero no debería ser difícil modificar el código según sus necesidades.
Pruebe el EasySize
( TFormResizer
).
El componente TFormResizer
cambia el tamaño de todos los controles en un formulario (o panel) cuando cambia el tamaño del formulario.
Lo utilicé con éxito hace años: funciona con D5 / 7. Es posible que deba hacer pequeños ajustes para XE2 (no tengo XE2, así que no puedo probarlo).
Uso:
uses
..., Easysize;
type
TForm1 = class(TForm)
...
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
private
FR: TFormResizer;
end;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
FR := TFormResizer.Create(Self);
FR.ResizeFonts := True;
FR.InitializeForm;
end;
procedure TForm1.FormResize(Sender: TObject);
begin
FR.ResizeAll;
end;
end.