DBLookUpCombobox'da Satır Boyama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
kara_kule06
Üye
Mesajlar: 150
Kayıt: 18 Nis 2006 02:15
Konum: ankara/polatlı
İletişim:

DBLookUpCombobox'da Satır Boyama

Mesaj gönderen kara_kule06 »

Herkese Kolay Gelsin.

Benim Bir Adet Tablom var ve bu tabloda il bilgileri tutuluyor(İlkodu,İlAdı,Sinavvar(0 or 1)). Şimdi bu DblookupCombobox nesnemin listfield'ini il adına bağladım. ve Herşey Normal. bütün illeri DBlookUpcomboboxda bütün illeri görebiliyorum. Ama benim istediğim SınavVar alanı 0 ise İladı soluk Gözüksün. Bunu Nasıl Yapabilirim. Acele Cevap yazarsanız çoooookkkk sevinirim.


Kolay Gelsin...
İlim öğrenmek akıntıya karşı yüzmek gibidir. Ara verildiği zaman gerilenir...
erdoganturkmen

Mesaj gönderen erdoganturkmen »

s.a Eğer sınavvar bölümü 0 olduğunda kullanıcı combobox'ın içindeki ili değiştirmeyecekse Combobox'ın Enabled özelliğini false yaparak soluk görünmesini sağlayabilirsin. Kolay gelsin
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam.

- İl dediğin için ve sayısı sınırlı olduğundan sorun olmayacağını değerlendirdiğimden normal ComboBox kullanabilirsin diycem. Şöyleki ;

- Tablonda tüm iller vardır. Bunları şu formatta bir ComboBox'a aktar.
İlkodu,İlAdı,Sinavvar

Kod: Tümünü seç

  ComboBox.Items.Add( Format('%d|%s-%s', [FieldByName('SinavVar').AsInteger, FieldByName('ilkodu').AsString,FieldByName('ilAdi').AsString ]) );
- Bu format yardımı ile combobox'ta giriş şu şekilde olur.

Kod: Tümünü seç

1|01-ADANA
0|02-ADIYAMAN
0|03-AFYONKARAHİSAR
1|04-AĞRI
- ComboBox'ta CANVAS operasyonları ile renklendirme yapılmış ve sadece il adı listeye yansıtılmış olarak işlem tamamlanır.

Kod: Tümünü seç

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
Var
  Renk, Yazi : String;
begin
  with ComboBox1 do
  begin
    Renk := Copy( Items[Index], 1, Pos('|', Items[Index])-1);
    Yazi := Copy( Items[Index], Pos('|', Items[Index])+1, 99999);
    case index of
      0: begin
            Canvas.Brush.Color := clWindow;
            Canvas.Font.Color  := clGray;
         end;
      1: begin
            Canvas.Brush.Color := clBlue;
            Canvas.Font.Color  := clYellow;
         end;
    end;
    Canvas.FillRect(Rect);
    Canvas.TextOut(Rect.Left , Rect.Top , Yazi);
  end;
end;
Resim
Resim ....Resim
Kullanıcı avatarı
kara_kule06
Üye
Mesajlar: 150
Kayıt: 18 Nis 2006 02:15
Konum: ankara/polatlı
İletişim:

Mesaj gönderen kara_kule06 »

Teşekkürler hocam. Yaptım Ama Drawitem olayı gerçekleşmiyor.
İlim öğrenmek akıntıya karşı yüzmek gibidir. Ara verildiği zaman gerilenir...
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Kod: Tümünü seç

procedure ComboColor(C: TWinControl; I : Integer; R : TRect; EColor, OColor, FColor : TColor);
begin
 with (C as TCombobox) do    //TCombobox oder T.....box
   begin
     if Odd(I) then Canvas.Brush.color := OColor
                   else Canvas.Brush.color := EColor;
     Canvas.FillRect(R);
     Canvas.Font.Color := FColor;
     Canvas.TextOut(R.Left,R.Top,Items[I]);
   end;
end;

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  ComboColor(Control, Index, Rect, clInfoBk, clWhite, clBlack);
end;

//Combobox.Style := csOwnerDrawFixed;
bunu bir deneyin olur diye tahmin ediyorum...tabi bu combobox üzerinde yapılmış Dblookupcomboboxa uyarlarsanız belki çalışır bizide haberdar etmeyi unutmayın.Kolay gelsin.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
kara_kule06
Üye
Mesajlar: 150
Kayıt: 18 Nis 2006 02:15
Konum: ankara/polatlı
İletişim:

Mesaj gönderen kara_kule06 »

Öncelikle alakanız için teşekkürler.

vedatkaba hocamın dediği şekil benim işime yaramıyor. Çünkü senin dediğin gibi yaptım itemleri sırayla sarı-beyaz yapıyor. Ama belki ilerde yarar.

mrmarman Hocamın Yapdığında ise küçük bir düzeltme işimi gördü. Tabi bu Combobox için oluyor. DblookUpCombobox'ın canvas özelliği ve DrawItem özelliği yok bu yüzden Galiba olamaz. Neyse, mrmarman hocamın yazdığı kodda

Kod: Tümünü seç

Case index of 
yazan yeri

Kod: Tümünü seç

case strtoint(renk) of
olarak değiştirdim oldu.

Kolay Gelsin...
İlim öğrenmek akıntıya karşı yüzmek gibidir. Ara verildiği zaman gerilenir...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

evet haklısın. Bu örneği hazırlarken başka bir arkadaş için belli satırların belli renklerle donatılması üzerine çalıştığımdan index'e göre case bloğu irdelenmişti. Halbu ki er satır için baştaki kırpılan RENK değişkenine göre case içine alınmalıydı. Case Index yerine Case RENK[1] demek yeterli olurdu. Böylece '1' olanlar ve '0' olanlar olarak ayırt edilebilir hal alabilirdi. :wink:
Resim
Resim ....Resim
Cevapla