Delphi Kodlama – Formları Otomatik Yeniden Boyutlandırma ve Merkezleme

Delphi Kodlama – Formları Otomatik Yeniden Boyutlandırma ve Merkezleme

Bu kod ile formun OnActivate olayında, formu kişinin ekran çözünürlüğüyle orantılı olarak yeniden boyutlandıracak ve merkezleyecektir. Örneğin 1280 × 768 çözünürlükte programlama yapıyorsanız form yüksekliği ve genişliği hesaplandıktan sonra merkezlenebilir.

Bu tam olarak orantılı olarak eski ekran çözünürlükleri için veya daha yeni uzatılmış ekranlar için ekranları uygun şekilde yeniden boyutlandıracak bir kod örneğidir

Form otomatik olarak ve AutoScroll := False olarak ayarlanmalıdır.

AutoScroll := False En azından yeniden hesaplanırken AutoScroll := False .

Ayrıca, formun font büyüklüğü 800 × 600 için aşağı doğru yeniden boyutlandırılacak font için (muhtemelen) 12 olmalıdır

Tüm kontroller ParentFont := True olarak ayarlanmalıdır, böylece yeniden boyutlandırılırlar.

uses
   math,windows;

 const
   screenx = 1280 ;
   screeny = 768 ;

 procedure tform1.autosizeall ;
 var
   scrx,scry, k:integer ;
   ratio:double;
 begin
   scrx:= GetSystemMetrics(SM_CXSCREEN);  {finds screen resolution x value}
   scry:= (GetSystemMetrics(SM_CYSCREEN));  {finds screen resolution y value}

   ratio:=min(scrx/screenx,scry/screeny);
   {takes the smaller ratio and makes sure you dont make the window 
    too big for the screen}

   scaleby(trunc(ratio* 100 ), 100 );
   {scales all controls and attempts to place them in the correct position}

   {to centre the form on the screen}
   form1.Left:=centreleft(form1.width);
   form1.Top:=centretop(form1.Height) ;

 end ; 

Bu kod iki işleve atıfta bulunur:  ölçeklendirme ve merkezleme . Bunlar şu şekilde tanımlanmıştır:

function centreleft(fw:integer):integer;
   {calculates the form.left}
 var
   smcx:integer;
 begin
   smcx:=GetSystemMetrics(SM_CXSCREEN);
   centreleft:=(smcx-fw) div 2 ;
 end ;

 function centretop(fh:integer):integer;
   {calculates the form.top}
 var
   smcy:integer;
 begin
   smcy:=GetSystemMetrics(SM_CYSCREEN);
   centtop:=(smcy-fh) div 2 ;
 end ; 

Program kullanıcının ekran çözünürlüğüne göre yeniden boyutlandırılmış olur. 

Delphi örnek projeler ve kaynak kodlara buradan erişebilirsiniz.