ComboBox'a ReadOnly Özelliği Verme

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
dynamo
Üye
Mesajlar: 96
Kayıt: 21 Haz 2005 02:05
Konum: istanbul

ComboBox'a ReadOnly Özelliği Verme

Mesaj gönderen dynamo »

TComboBox nesnesinin normal durumda ReadOnly(salt okunur) özelliği(property) yok. ComboBox'ı readonly yapmak için

ComboBox.Style:=csDropDownList;

yapmak gerekir.Fakat sytle, csDropDownList durumunda olduğunda veritabanından değer okuyup doğrudan

Kod: Tümünü seç

ComboBox1.Text:=Query1.FieldByName('Kod').AsString; 
ile değeri combobox'ın textine atmamıza izin vermiyor .

Kod: Tümünü seç

ComboBox1.ItemIndex:=ComboBox1.Items.IndexOf(Query1.FieldByName('Kod').AsString) ;

şeklinde kullanmak zorunda kalıyoruz.Style csDropDown durumunda iken ReadOnly yapmak için SendMessage fonksiyonu kullanılır.

SendMessage API fonksiyonu kullanarak combobox'ı readonly hale getirme ve readonly özelliğini kaldırma:

//ReadOnly yap
SendMessage(GetWindow(ComboBox1.Handle,GW_CHILD), EM_SETREADONLY, 1, 0);

//ReadOnly kaldır
SendMessage(GetWindow(ComboBox1.Handle,GW_CHILD), EM_SETREADONLY, 0, 0);

combobox'ın büyük-küçük harf değişikliği yapmaması için:
ComboBox1.AutoComplete:=false;
yapın.

Kod: Tümünü seç

procedure TfrmAyarlar.FormShow(Sender: TObject);
begin
   //combobox'ı readonly yap
   SendMessage(GetWindow(ComboBox1.Handle,GW_CHILD), EM_SETREADONLY, 1, 0);
   
   //otomatik tamamlamayı iptal et büyük-küçük harf sorunundan dolayı
   ComboBox1.AutoComplete:=false;
 
end;
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Paylaşım için teşekkürler :)
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

çok teşekkürler.Çok işime yaradı.
Cevapla