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.