Mengubah Resolusi layar dengan Delphi

July 25, 2006 at 2:32 pm | Posted in General | 4 Comments

By Zamrony P Juhara

Artikel ini saya tulis untuk menanggapi seringnya muncul pertanyaan mengenai bagaimana mengubah resolusi layar yang sering diajukan di milis delphindo. Sebenarnya tulisan ini adalah posting saya di milis tersebut.

Kalo saya pribadi sih, mengubah resolusi layar menjadi sesuka kita bukan sesuatu yang bagus karena screen termasuk resource milik bersama. Mengubah-ubah resolusi layar menyebabkan aplikasi lain yang sedang jalan kemungkinan mengalami hal yang sama yaitu tampilannya menjadi aneh. Itu berarti aplikasi kita tidak kooperatif dan cenderung egois.

TScreen memiliki property Width dan Height yang dapat digunakan untuk mengetahui resolusi layar saat ini. Property Width dan Height dibuat read only untuk menekankan konsep bahwa pada sistem operasi multi tasking aplikasi seharusnya kooperatif untuk menggunakan resource milik bersama.

Bayangkan jika ada dua aplikasi yang saling berebut menggunakan resolusi favorit masing-masing, yang terjadi adalah layer akan pernuh kerjapan akibat switching resolusi layar.

Jauh lebih baik jika aplikasi yang menyesuaikan diri dengan kondisi resolusi layar. Jadi jika resolusi layar berubah kita ubah juga ukuran form-form bila width heightnya melebihi resolusi layar

untuk mengetahui kapan resolusi layar berubah kita bisa menghandle message WM_DISPLAYCHANGE .contoh

type TForm1=class(TForm)
private
...
procedure WMDisplayChange(var msg:TMessage);
message WM_DISPLAYCHANGE;
...
end;
...
procedure TForm1.WMDisplayChange(var msg:TMessage);
begin
  if Width>Screen.Width then
    Width:=Screen.Width;
  if Height>Screen.Height then
    Height:=Screen.Height;
end;

Agar ketika form diresize isinya tidak kacau, gunakan kontainer-kontainer semacam TPanel dan set property align-nya menjadi alClient, dengan demikian otomatis akan resize sesuai ukuran parent controlnya. Untuk dialog-dialog yang ukurannya fix, set ukuran formnya sedemikian rupa agar cukup kecil dan tidak melebihi ukuran screen.

Tapi jika anda masih ngotot ingin mengubah resolusi layar anda bisa menggunakan fungsi ChangeDisplaySettings() di windows.pas
contoh untuk mengubah resolusi layar saja

procedure SetScreenResolution(const width,
                             height:integer);overload;
var mode:TDevMode;
begin
  zeroMemory(@mode,sizeof(TDevMode));
  mode.dmSize:=sizeof(TDevMode);
  mode.dmPelsWidth:=width;
  mode.dmPelsHeight:=height;
  mode.dmFields:=DM_PELSWIDTH or DM_PELSHEIGHT;
  ChangeDisplaySettings(mode,0);
end;

untuk mengubah resolusi layar dan kedalaman warna

procedure SetScreenResolution(const width,
         height,colorDepth:integer);overload;
var mode:TDevMode;
begin
  zeroMemory(@mode,sizeof(TDevMode));
  mode.dmSize:=sizeof(TDevMode);
  mode.dmPelsWidth:=width;
  mode.dmPelsHeight:=height;
  mode.dmBitsPerPel:=colorDepth;
  mode.dmFields:=DM_PELSWIDTH or DM_PELSHEIGHT or
                 DM_BITSPERPEL;
  ChangeDisplaySettings(mode,0);
end;

untuk mengubah menjadi resolusi 800×600


SetScreenResolution(800,600);

untuk mengubah menjadi resolusi 1024×768 16 bits (65536 warna)


SetScreenResolution(1024,768,16);

ok semoga tulisan ini membantu anda.

4 Comments »

RSS feed for comments on this post. TrackBack URI

  1. Hmmm wah patut di coba neehhh, btw tau gak caranya membuat satu file exe dari file exe juga, bukan di copy jadi exe yang satu sama yang satunay lagi beda isinya

  2. Lebih asyik lagi jika aplikasi tidak tergantung resolusi layar. Di resolusi manapun komponennya akan menyesuaikan skalanya berdasarkan resolusi yg digunakan.

    Salam.

  3. untuk resolusi warna pake kode tsb emang ngefek, cuman buat kedalaman warna sepertinya gak ngaruh tuch.

  4. Lebih mantap lagi kalo gak main program, PUSING


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.
Entries and comments feeds.