Memik Yanık - Kişisel Web Sitesi Ana Sayfa | Hakkımda | Kitap Önerileri | Fotoğraflarım | RSS RSS | İletişim

Ekranın Çözünürlüğünü Öğrenmek - Delphi


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.

Forumlardaki Sorular 16.05.2009 07:52:29

YORUM YOK


YorumlarYorum Yaz
Ana Sayfa | Hakkımda | Kitap Önerileri | Fotoğraflarım | RSS | İletişim
Memik Yanık 2004-2009 © Tüm Hakları Saklıdır.
Hazırlayan www.semgoksu.com