DBLookUpCombobox'da Satır Boyama
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- kara_kule06
- Üye
- Mesajlar: 150
- Kayıt: 18 Nis 2006 02:15
- Konum: ankara/polatlı
- İletişim:
DBLookUpCombobox'da Satır Boyama
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...
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...
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
- Bu format yardımı ile combobox'ta giriş şu şekilde olur.
- ComboBox'ta CANVAS operasyonları ile renklendirme yapılmış ve sadece il adı listeye yansıtılmış olarak işlem tamamlanır.
- İ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 ]) );
Kod: Tümünü seç
1|01-ADANA
0|02-ADIYAMAN
0|03-AFYONKARAHİSAR
1|04-AĞRI
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;
- kara_kule06
- Üye
- Mesajlar: 150
- Kayıt: 18 Nis 2006 02:15
- Konum: ankara/polatlı
- İletişim:
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;
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
- kara_kule06
- Üye
- Mesajlar: 150
- Kayıt: 18 Nis 2006 02:15
- Konum: ankara/polatlı
- İletişim:
Ö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
yazan yeri
olarak değiştirdim oldu.
Kolay Gelsin...
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
Kod: Tümünü seç
case strtoint(renk) of
Kolay Gelsin...
İlim öğrenmek akıntıya karşı yüzmek gibidir. Ara verildiği zaman gerilenir...
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. 
