Arkadaşlar merhaba;
Delphi ile yazılan bir programımız var, kare ekran ve WS ekran için iki ayrı tasarım yapıldı,
Şimdi sorunum şu;
Ayrı bir exe oluşturup kurulum esnasında o exeyi çalıştırıp monitörün durumuna göre gerekli setup'ın çalıştırılmasını sağlamak. Yani 4:3 ekranlar için 1.exe'yi, 16:9 ekranlar için 2.exe'yi çalıştırmalı, fakat monitörleri bu şekilde nasıl algılatabilirim.
Şimdiden herkese teşekkür ederim.
Delphi ile monitör oranını bulmak
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Delphi ile monitör oranını bulmak
Ekran Genişliğinin, yüksekliğine oranını Screen.Width / Screen.Height şeklinde elde edebilirsiniz.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Delphi ile monitör oranını bulmak
Cevabınız için teşekkür ederim, fakat benim aradığım örneğin 1024/768 oranı değil,
ekran çözünürlüğünü alıp bir işlemden geçirip bu 4:3 kare veya 16:9 WS bir monitör diyebilmeliyim.
ekran çözünürlüğünü alıp bir işlemden geçirip bu 4:3 kare veya 16:9 WS bir monitör diyebilmeliyim.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Delphi ile monitör oranını bulmak
Az miktarda matematikle bu iş hallolacaktır..:
Örnek..1: (1024x768)
1024/768=1,33333
4/3=1,3333
Demek ki çözünürlük 1024x768 ise 4:3 oranında kare ekran kullanılıyor demektir.
Örnek..2:(1920x1080)
1920/1080=1,777777
16/9=1,77777
Demek ki çözünürlük 1920x1080 ise 16:9 oranında geniş ekran kullanılıyor demektir.
Sonuç olarak Screen.Width/Screen.Height oranı 1.333.. ise kare ekran 1.777... ise geniş ekran var demektir.
Örnek..1: (1024x768)
1024/768=1,33333
4/3=1,3333
Demek ki çözünürlük 1024x768 ise 4:3 oranında kare ekran kullanılıyor demektir.
Örnek..2:(1920x1080)
1920/1080=1,777777
16/9=1,77777
Demek ki çözünürlük 1920x1080 ise 16:9 oranında geniş ekran kullanılıyor demektir.
Sonuç olarak Screen.Width/Screen.Height oranı 1.333.. ise kare ekran 1.777... ise geniş ekran var demektir.
Kod: Tümünü seç
if Round(Screen.Width/Screen.Height*100)=133 then ShowMessage('Kare Ekran')
else ShowMessage('Geniş Ekran');
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Delphi ile monitör oranını bulmak
Crvabınıza teşekkür ederim.
Bende bu şekilde bir yol izledikten sonra 1280x1024 ekran çözünürlüğüne gelince burada cevap aramak istedim,
1280/1024=1.25 çıkıyor,
1280/768=1.66
bu şekildede tüm çözünürlüklerden emin olamıyorum,
Bende bu şekilde bir yol izledikten sonra 1280x1024 ekran çözünürlüğüne gelince burada cevap aramak istedim,
1280/1024=1.25 çıkıyor,
1280/768=1.66
bu şekildede tüm çözünürlüklerden emin olamıyorum,
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Delphi ile monitör oranını bulmak
Bu çözünürlükler zaten 4:3 ve 16:9 oranına giremezler. Zira bir diğer formülle,
Genişlik/16=Yukseklik/9 -> 16:9
Genişlik/4=Yukseklik/3 -> 4:3
şeklinde sağlaması yapılabilir. Bu bahsi geçen çözünürlükler bu 16:9 ve 4:3 oranlarının dışında kaldığı için tahmini bir ortalama değer bularak ona göre bir şart verilebilir. Mesela Genişlik/Yükseklik 1.5 değerinin altında kalırsa Kare ekran, bu değerin üstünde olursa geniş ekran gibi bir formül üretilebilir. Tabi 1.5 oranını deneme yapmadan atıyorum. Bu oranı siz uygulamalı olarak deneyerek daha ideal başka bir değer elde edebilirsiniz.
Genişlik/16=Yukseklik/9 -> 16:9
Genişlik/4=Yukseklik/3 -> 4:3
şeklinde sağlaması yapılabilir. Bu bahsi geçen çözünürlükler bu 16:9 ve 4:3 oranlarının dışında kaldığı için tahmini bir ortalama değer bularak ona göre bir şart verilebilir. Mesela Genişlik/Yükseklik 1.5 değerinin altında kalırsa Kare ekran, bu değerin üstünde olursa geniş ekran gibi bir formül üretilebilir. Tabi 1.5 oranını deneme yapmadan atıyorum. Bu oranı siz uygulamalı olarak deneyerek daha ideal başka bir değer elde edebilirsiniz.
Kod: Tümünü seç
if Round(Screen.Width/Screen.Height*100)<150 then ShowMessage('Kare Ekran')
else ShowMessage('Geniş Ekran');
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Delphi ile monitör oranını bulmak
Kod: Tümünü seç
Function Oran ( Genislik,Yukseklik : Integer): string;
function gcd(num1, num2: integer): integer;
var
remainder: integer;
begin
remainder := num2 mod num1;
if (remainder <> 0) then
result := gcd(remainder, num1)
else
result := num1;
end;
var
agcd : Integer;
Begin
agcd := gcd(Genislik,Yukseklik);
Result := Format('%d:%d',[Genislik div agcd,Yukseklik div agcd]);
end;
Kod: Tümünü seç
Showmessage(Oran(1024,768)); //4:3
Showmessage(Oran(1280,1024)); //5:4
Showmessage(Oran(1920,1080));//16:9
Showmessage(Oran(800,600));//4:3