Combobox Item Enabled

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Bygalaxy
Üye
Mesajlar: 4
Kayıt: 01 Oca 2008 11:57

Combobox Item Enabled

Mesaj gönderen Bygalaxy »

S.a arkadaslar programımda 3-4 tane combobox kullanıyorum .

Kod: Tümünü seç

   With Combobox1 Do Begin
        Items.Add('Merhaba');
        Items.Add('Delphi');
        Items.Add('Türkiye');
        //Mesela türkiye yazısı enabled olacak ve kullanıcı secemeyecek
   End;

Comboboxun bazı itemlerini duruma göre enabled yapmak istiyorum.Bazı programlarda görmüştüm böyle istediğim bir olayı. Delphi 7 kullanmaktayım delphinin standart componentleriyle yapmak mümkünmü? yada free olan jedi vs. gibi componentlerde buna benzer comboboxlar var mı?

Şimdiden teşekkürler
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: Combobox Item Enabled

Mesaj gönderen vkamadan »

Merhabalar,
Delphi'nin standart TCombobox nesnesinde itemlerin çizilmesi aşamasında (OnDrawItem) dilediğiniz değişiklikleri yapabilirsiniz.
Örneğin combobox' ın 2 indisli elemanının rengini gri ve yazı stilini italik yapmak için aşağıdaki yapıyı kullanabilirsiniz,

Öncelikle bilinmesi gereken konu TCombobox' ın yapacağımız özel çizimleri algılayabilmesi için Style özelliğinin ya OwnerDrawFixed ya da OwnerDrawVariable olması gerektiğidir aksi halde bizim müdehalemizi dikkate almayacaktır.

TCombobox 'ın OnDrawItem olayına ;

Kod: Tümünü seç

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin      
    if Index = 2 then
      begin
        TComboBox(Control).Canvas.Font.Color := clGrayText;
        TComboBox(Control).Canvas.Font.Style := [fsItalic];
      end;

    // yapılan değişiklikleri çizdiriyoruz.. 
     TComboBox(Control).Canvas.FillRect(Rect);
     TComboBox(Control).Canvas.TextOut(Rect.Left, Rect.Top, ( Control As TComboBox ).Items[Index]);
end;
gibi bir yapıyla seçilemeyecek itemlerin renklerini değiştirebilirsiniz,
tabiki rengi değiştirmek yeterli değil birde seçilmelerini engellemek gerekir ;

Kod: Tümünü seç

procedure TForm1.ComboBox1Select(Sender: TObject);
begin
  if ComboBox1.ItemIndex = 2 then ComboBox1.ItemIndex := 0;
end;
gibi bir yapıylada seçimi engelleyebilrisiniz.
Kolay gelsin.
Volkan KAMADAN
www.polisoft.com.tr
Bygalaxy
Üye
Mesajlar: 4
Kayıt: 01 Oca 2008 11:57

Re: Combobox Item Enabled

Mesaj gönderen Bygalaxy »

Eyvallah üstad kod acayip iş yaptı teşekkür ederim :wink: acemi olarak bir sorum daha olacaktı
Öncelikle bilinmesi gereken konu TCombobox' ın yapacağımız özel çizimleri algılayabilmesi için Style özelliğinin ya OwnerDrawFixed ya da OwnerDrawVariable olması gerektiğidir aksi halde bizim müdehalemizi dikkate almayacaktır.
demişsin.ben combobox'un style özelliğini DropDownList olarak kullanıyordum..Bunun diğerleri ile farkı tam olarak ne? diğer OwnerDrawVariable de işimi görüyor DropDownList de işimi görüyor.Verdiğin kodda dediğin gibi o özelliklerde tam istediğim gibi çalışıyor ama DropDownList özelliğinde sadece secim olayı çalışıyo o da OnSelect olayından dolayı...Diğerlerinin farkı isimlerinden anlaşıldığı gibi OwnerDrawFixed ve OwnerDrawVariable Draw çizim yapılan bir TCombobox özelliğimi?

Kusura bakma çok uzattım basını ağrıttım..Tekrar teşekkürler...
Kolay Gelsin..Saygılarımla
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: Combobox Item Enabled

Mesaj gönderen vkamadan »

Merhaba ,
DropDownList ile OwnerDrawFixed aynı şekilde davranır yani ikiside sadece listeden seçmeye izin verir kullanıcı ComboBox ı Edit gibi kullanamaz, aralarındaki tek fark OwnerDrawFixed (ya da variable) OnDrawItem olayını tetikler diğer durumlar da OnDrawItem olayı oluşmaz.
Volkan KAMADAN
www.polisoft.com.tr
Bygalaxy
Üye
Mesajlar: 4
Kayıt: 01 Oca 2008 11:57

Re: Combobox Item Enabled

Mesaj gönderen Bygalaxy »

Cok saolasın üstad yardımların için..Combobox olaylarını şimdi daha iyi kavradım.
Kolay Gelsin..Saygılarımla.
Cevapla