Windows klasik teması ile çalıştırmak.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
cagatay77
Üye
Mesajlar: 37
Kayıt: 31 Eki 2003 12:34

Windows klasik teması ile çalıştırmak.

Mesaj gönderen cagatay77 »

Windows üzerindeki aktif kullanıcı temasını yoksayıp, sadece yazdığımız programı, Windows'un klasik teması ile görüntületmenin bir yolu var mı acaba?

Şimdiden teşekkürler...
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Windows klasik teması ile çalıştırmak.

Mesaj gönderen Battosai »

xpmanifest eklemezsen programına zaten klasik görünümde çalışacaktır....
cagatay77
Üye
Mesajlar: 37
Kayıt: 31 Eki 2003 12:34

Re: Windows klasik teması ile çalıştırmak.

Mesaj gönderen cagatay77 »

Battosai yazdı:xpmanifest eklemezsen programına zaten klasik görünümde çalışacaktır....
Yanlış anladınız herhalde. Klasik tema derken aşağıdaki temayı kastetmiştim. XP stilinde olmayan tema.

Resim
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Windows klasik teması ile çalıştırmak.

Mesaj gönderen Battosai »

Doğru anladım, dediğim unit programınıza eklenmemiş ise delphi componentleri windows klasik modunda görünecektir...Standart budur zaten...
cagatay77
Üye
Mesajlar: 37
Kayıt: 31 Eki 2003 12:34

Re: Windows klasik teması ile çalıştırmak.

Mesaj gönderen cagatay77 »

Battosai yazdı:Doğru anladım, dediğim unit programınıza eklenmemiş ise delphi componentleri windows klasik modunda görünecektir...Standart budur zaten...
xpmanifest kullanmıyorum. hiçbir formumda xpman uniti de yoktur. Dediğiniz gibi xpmanifest kullanmayınca butonlar klasik olarak gelir ancak pencere yapısını Windows, otomatik olarak görsel stile çevirip açar. Benim engellemeye çalıştığım da bu zaten.
Ben klasik tema derken bir bütün olarak pencere yapısını klasik hale getirmeye çalışıyorum. Zaten butonlarla ilgili herhangi bir problemim yok. Dolayısıyla xpmanifestin de konuyla bağlantısı yok.
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Windows klasik teması ile çalıştırmak.

Mesaj gönderen Battosai »

Daha önce biri projen üzerinde çalışmış veya sen devralmışsan veya bir ara ekleyip silmişsen yinede xpmanfest görevini görür böyle bir cinsliği vardır yani...forumda nasıl kaldırılacağına dair konular olacaktı yanılmıyorsam aramakta fayda var....
cagatay77
Üye
Mesajlar: 37
Kayıt: 31 Eki 2003 12:34

Re: Windows klasik teması ile çalıştırmak.

Mesaj gönderen cagatay77 »

Battosai yazdı:Daha önce biri projen üzerinde çalışmış veya sen devralmışsan veya bir ara ekleyip silmişsen yinede xpmanfest görevini görür böyle bir cinsliği vardır yani...forumda nasıl kaldırılacağına dair konular olacaktı yanılmıyorsam aramakta fayda var....
Hocam ne olursun bırak artık şu xpmanifesti :D . Hayatımda bir defa bile kullanma ihtiyacı hissetmediğim bir component. Onunla ilgili olmadığına eminim yani.

Yine de ilgilenip, mesaj attığınız için teşekkürler :)
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Re: Windows klasik teması ile çalıştırmak.

Mesaj gönderen mussimsek »

Çeşitli skin componentleri var, forumda arasanız bilgi bulabilirsiniz. Ama ben standart bırakıp, kullanıcı hangisi seçmişse öyle gelmesinden yanayım.

Kolay gelsin.
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Windows klasik teması ile çalıştırmak.

Mesaj gönderen Battosai »

Delhpi'nin hangi sürümünü kullanıyorsun Delphi7 ve 2007 kullandım, hala kullanıyorum... delphinin kendiliğinden pencereleri değiştirme özelliğine hiç şahit olmadım... Projende var bi sakatlık, xpmanifest dememdeki gaye; başka bir skin componenti kullanmadıysan böyle bir duruma delphinin kendisinin yol açmayacağıdır...
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: Windows klasik teması ile çalıştırmak.

Mesaj gönderen emin_as »

Ana menuden Project > Options penceresini aç.
Pencerenin solundaki listeden applications u seç ve sağdaki Enable runtime themes deki işareti kaldır.

XPManifest delphinin eski versiyonları için geçerliydi sanırım, delphi 7 ve öncesi olabilir.

Not: Yukarıdaki işlem pencere çerçevesini degiştirmez, eger pencere çerçevesi de degişsin istiyorsan. Aşagıdaki kodu ekle.

Kod: Tümünü seç


uses uxtheme;
.............
setwindowhandle(form1.handle,nil,'');
.........
cagatay77
Üye
Mesajlar: 37
Kayıt: 31 Eki 2003 12:34

Re: Windows klasik teması ile çalıştırmak.

Mesaj gönderen cagatay77 »

Battosai yazdı:Delhpi'nin hangi sürümünü kullanıyorsun Delphi7 ve 2007 kullandım, hala kullanıyorum... delphinin kendiliğinden pencereleri değiştirme özelliğine hiç şahit olmadım... Projende var bi sakatlık, xpmanifest dememdeki gaye; başka bir skin komponenti kullanmadıysan böyle bir duruma delphinin kendisinin yol açmayacağıdır...
Pardon ama ben Delphi değiştiriyor diye birşey mi söyledim. Windows teması XP stilindeyken, ChildForm'a ait pencere tasarımının kötü durmasına sebep oluyor. Bunun için kullanıcının teması ne olursa olsun ben projemi Windows klasik temasıyla açmaya çalışıyorum. Böylece temalardan kaynaklanan bozulmaları engellemeye çalışıyorum.

Siz ısrarla anladığınızı söylüyorsunuz ancak aynı şeylerden bahsetmiyoruz.

Benim açmış olduğum konu, normalde olmaması gereken bir hatanın çözümüne yönelik değildir. Tam aksine, herhangi bir skin komponenti kullanmıyorsanız Windows'un temasının değiştirilmesi, sizin proje pencerenizin farklı boyutlarda açılmasına sebebiyet verebiliyor.
Mustafa Şimşek'in söylediği gibi skin komponentlerine de başvurmadan önce, belki kısa bir kodla bu özelliği ekleyebiliriz diye düşünmüştüm.

Yine de ilginiz için teşekkürler...

@ emin_as
Delphi 7 kullandığım için o yöntemini deneyemiyorum. "Enable runtime themes" seçeneği Delphi 7'de bulunmuyor, teşekkürler.
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: Windows klasik teması ile çalıştırmak.

Mesaj gönderen emin_as »

Yukarıdaki kod u yanlış yazmışım, dogrusu şöyle olacak ve delphi 7de de çalışması lazım.

Kod: Tümünü seç

uses uxtheme;


....
SetWindowTheme(form1.handle,nil,'');
........
SetWindowTheme procedurunu formcreate de çagırabilirsin.
Bu fonksiyon tüm pencerenin temasını klasige çeviriyor.
Cevapla