Geçerli ekran çözünürlüğünü öğrenmek istiyorsanız Windows'un SystemParametersInfo fonksiyonundan yararlanabilirsiniz. Bu fonksiyonun orijinal yapısını aşağıda görebilirsiniz. SystemParametersInfo() fonksiyonu 4 parametreye sahiptir. 3. parametre olarak kullanılmak üzere bir yapı(Structure) değişkenin tanımlanması gerekmektedir. Ekran çözünürlüğü ile toplam 4 bilgi olduğu için bu yapının 4 elemana sahip olması gerekir.
BOOL SystemParametersInfo(
UINT uiAction,
UINT uiParam,
PVOID pvParam,
UINT fWinIni );
İlk parametre ile fonksiyonun kullanım amacı seçilmektedir. Bu fonksiyon ekran çözünürlüğünü bulmak istediğim için 1. parametre olarak SPI_GETWORKAREA bilgisini kullanacağım. SystemParametersInfo() fonksiyonunu klavyenin hızı konusunda bilgi edinmek istemiş olsaydım 1. parametre olarak SPI_GETKEYBOARDSPEED bilgisini kullanırdım.
Bu fonksiyon ile elde edilecek bilgiler 3. parametre olarak kullanılacak değişkene aktarılmaktadır. Konu ekran çözünürlüğü olduğunda Integer tipinde 4 değer söz konusudur. Bu nedenle Unit’in üst kısmında Type bloğunda Integer tipinde 4 değişkene sahip bir yapı yani Record tipi tanımladım.
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
type Cozunurluk = Record
Sol : Integer;
Ust : Integer;
Sag : Integer;
Alt Integer;
end;
Bu şekilde yapı tanımlandıktan sonra forma 2 Edit 1 düğme yerleştirip aşağıda verdiğim kodu hazırladım. Bu kodda ilk tanımlamış olduğum yapı değişkeninden yararlanarak “Ekran” adında bir Pointer değişken tanımladım. Bildiğiniz gibi Pointer değişkenler tanımlanırken tip deyiminin önüne “^” konulmaktadır. SystemParametersInfo fonksiyonu geriye bool bir değer gönderdiği için Boolean tipinde bir değişken tanımladım.
Var
Ekran : ^Cozunurluk;
Sonuc : Boolean;
begin
Getmem(Ekran, 255);
Sonuc :=SystemParametersInfo(SPI_GETWORKAREA, 0, Ekran, 0);
Edit1.Text := IntToStr(Ekran.Sag);
Edit2.Text := IntToStr(Ekran.Alt);
FreeMem(Ekran, 255);
end;
Proje çalıştırılıp bu yordam işletilirse formdaki ilk Edit’e ekranın genişliği, 2. Edit’e ise yüksekliği aktarılır. Görev Çubuğu ekranda iken ekran yüksekliği biraz düşük olmaktadır.