Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Form escalado por cambio de pantalla (resolucion) (https://www.clubdelphi.com/foros/showthread.php?t=88075)

emeritos 09-04-2015 07:40:54

Form escalado por cambio de pantalla (resolucion)
 
Hola dilferos.

En principio perdonad por que este tema ya lo he puesto varias veces pero no consigo solucionarlo y ya estoy desesperado.

primero deciros que lo que quiero hacer es que por muchos cambios de resolucion (tanto en tiempo de diseño como de ejecucion) que halla mi programa no se salga de la pantalla o se descuaringe.

Programo en delphi 7 con windows 7, utilizo una resolucion de 1600X900 en tiempo de diseño. Esta es la funcion que utilizo en mi programa y es llamada al crear cada from con los numeros 1600,900 que es ahora mi resolucion en tiempo de diseño.
Código Delphi [-]
var
  frmproyector: Tfrmproyector;
  ObjetoWidth, ObjetoHeight : LongInt;
  procedure ScaleForm(F: TForm; ScreenWidth, ScreenHeight: LongInt);

implementation

{$R *.dfm}

procedure ScaleForm(F: TForm; ScreenWidth, ScreenHeight: LongInt);
begin
   F.Scaled := True;
   F.AutoScroll := False;
   F.AutoSize := False;
   F.Position := poScreenCenter;
   F.Font.Name := 'Arial';
   If (Screen.Width <> ScreenWidth) OR (Screen.Height <> ScreenHeight)
      Then
         Begin
             F.Height := LongInt(F.Height) * LongInt(Screen.Height) div ScreenHeight;
             F.Width := LongInt(F.Width) * LongInt(Screen.Width) div ScreenWidth;
             //F.ScaleBy(Screen.Width,ScreenWidth)
             F.ScaleBy(Screen.Height,ScreenHeight);
         End;
end;

procedure Tfrmproyector.FormCreate(Sender: TObject);
begin
    ScaleForm(frmproyector,1600,900);
.
.
.

end;
Como veis utilizo el ScaleBy pero hay una linea comentada porque a bien se realiza en horizontal o en vertical.

En un principio yo diseñaba con una resolucion de 1280X1024 y parecia que todo iba bien hasta que me tope con una nueva pantalla de 1600X900 y ahi empezaron otra vez mis problermas, sobre todo cuando veo un programa del año 1998 que utilizamos en nuestra empresa (aunque ya muy poco, pero poco) creo que esta en VisualBasic que ha ido pasando por distintos ordenadores y resoluciones y siempre se ve todo en pantalla bien escalado.

Habia a veces que cuando se escalaba bien los distintos botones, grill, mantenian el anclaje y se escalaban raramente.

Gracias por la paciencia. El dia que lo consiga hago fiesta...


La franja horaria es GMT +2. Ahora son las 11:28:52.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi