Quantum Grid Boyama...
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 6
- Kayıt: 02 Şub 2004 11:42
Quantum Grid Boyama...
Arkadaşlar DevExpress in cxGridinde satır boyama işiyle uğraşan oldumu hiç. kolondaki bi değer e göre satır yada kolonu renklendirmem lazım. Örneklerde çok fazla detaya girilmiş ortalık karışmış... Böyle bir örneği olan varsa buraya yazabilirse çok sevinirim.
Iyi calismalar.
Iyi calismalar.
Selamlar,
Eğer dxDBGrid ise sorduğunuz aşağıdaki gibi renklendirebilirsiniz.
Aşağıdaki kodda, ODM_VADE ve ODM_DURUM fieldları kontrol edilerek, ODM_VADE'nin günün tarihi ile arasındaki farklara göre gridi satır satır renklendiriyor.
Kolay Gelsin.
Eğer dxDBGrid ise sorduğunuz aşağıdaki gibi renklendirebilirsiniz.
Aşağıdaki kodda, ODM_VADE ve ODM_DURUM fieldları kontrol edilerek, ODM_VADE'nin günün tarihi ile arasındaki farklara göre gridi satır satır renklendiriyor.
Kod: Tümünü seç
procedure TfrmOdemeListesi.dxgOdemeCustomDraw(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode;
AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont;
var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean);
Var
dblTarih, dblBugun : Double ;
intFark : Integer ;
begin
If ANode.Count = 0 Then
Begin
dblBugun := Date ;
If Not ASelected Then
Begin
If ANode.Values[dxgOdeme.ColumnByFieldName('ODM_DURUM').Index] = 0 Then
Begin
dblTarih := ANode.Values[dxgOdeme.ColumnByFieldName('ODM_VADE').Index] ;
intFark := Trunc(dblTarih - dblBugun) ;
If intFark < 0 Then
AColor := clODEME_TARIHI_GECTI
Else If intFark = 0 Then
AColor := clODEME_TARIHI_BUGUN
Else If intFark <= 5 Then
AColor := clODEME_TARIHI_GELMEDI_5
Else
AColor := clODEME_TARIHI_GELMEDI_10 ;
End
Else
AColor := clODEME_TAMAM ;
End ;
End ;
end;
Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Bu arada OnCustomDraw Event'ine yazacaksınız
Gerçi koddan okunabiliyor ama ben yinede gözden kaçabilir diye ekleyeyim dedim.
Tekrar Kolay Gelsin.

Tekrar Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Merhaba,
Ben de Quantum Grid 4 için yazayım.
Cell için : Önce cxStyleRepository ile bir style oluşturuyorsun. Renk ve fontunu ayarlıyorsun. Daha sonra aşağıdaki kodu OnGetContentStyle olayına yazıyorsun :
Satır(Row) için : Yine style oluşturup, ayarla. Yine OnGetContentStyle olayına aşağıdaki kodu yaz :
Kolay gelsin.
Ben de Quantum Grid 4 için yazayım.
Cell için : Önce cxStyleRepository ile bir style oluşturuyorsun. Renk ve fontunu ayarlıyorsun. Daha sonra aşağıdaki kodu OnGetContentStyle olayına yazıyorsun :
Kod: Tümünü seç
if ARecord.Values[AItem.Index] = 5 then
AStyle := stlTicketPrice;
Kod: Tümünü seç
var
AColumn: TcxCustomGridTableItem;
begin
AColumn := (Sender as TcxGridDBTableView).GetColumnByFieldName('Email');
if VarToStr(ARecord.Values[AColumn.Index]) = '' then
AStyle := cxStyleNullEmail;
-
- Üye
- Mesajlar: 6
- Kayıt: 02 Şub 2004 11:42
Hücre Boyama
Hücre boyama nasıl yapılıyor arkadaşlar bir el atsanız. Eski versionunda vardı ama şöyleydi
AColor diye bir olgu bulamadım yenide. Nasıl ulaşırım o parametreye
Kod: Tümünü seç
if not ASelected and (AColumn = HizirDBGridKurumPersonelilkpUnvani) then
begin
Value := ANode.Values[AColumn.Index];
if not VarIsNull(Value) then
begin
dmPersonel.tbUnvan.Locate('Unvan',dmpersonel.tbPersonellkpUnvani.Value,[]);
if Value = dmpersonel.tbPersonellkpUnvani.Value then AColor := StringToColor(dmpersonel.tbUnvanRenk.Value);
hata
merhaba arkadaslar..
mustafa hocanın dediği gibi
asagıdakı kodları yazdım
ancak
satırın da Acces Validation at adres 00580960 in module 'Project1.exe' hatası verdi. .program calışmadı sonra..
sebebi ne olabilir..
mustafa hocanın dediği gibi
asagıdakı kodları yazdım
Kod: Tümünü seç
procedure Tuyeler.cxGrid1DBTableView1StylesGetContentStyle(
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
AItem: TcxCustomGridTableItem; out AStyle: TcxStyle );
var
AColumn: TcxCustomGridTableItem;
begin
AColumn := (Sender as TcxGridDBTableView).GetColumnByFieldName('adi');
if VarToStr(ARecord.Values[AColumn.Index]) = '' then
AStyle := cxStyle1;
end;
Kod: Tümünü seç
if VarToStr(ARecord.Values[AColumn.Index]) = '' then
sebebi ne olabilir..
s.a.
satır satır çalıştırarak hatanın tam yerini ve nedenini bulabilirsin.
hata oluşan satıra breakpoint koy.(o satıra gelip f5 e bas satır renklenecek) programı çalıştır. o satıra gelince program duracaktır. o anda değişkenlerin üzerine gelererk değerlerini görebilirsin. değerlerde bi terslik varmı bak.
tahminime göre cxstyle1 ile ilgili bişey. ama burdan bunu öğrenmek biraz zor.
dediğim gibi yapıp değişkenlerde veya nesnelerde olması gerekenden başka bir değeri olan varmı kontrol et.
kodu şu şekilde değiştirebilirmisiniz. Hatanın nerede olduğunu tam net öğrenmeniz için.
kolay gelsin.
satır satır çalıştırarak hatanın tam yerini ve nedenini bulabilirsin.
hata oluşan satıra breakpoint koy.(o satıra gelip f5 e bas satır renklenecek) programı çalıştır. o satıra gelince program duracaktır. o anda değişkenlerin üzerine gelererk değerlerini görebilirsin. değerlerde bi terslik varmı bak.
tahminime göre cxstyle1 ile ilgili bişey. ama burdan bunu öğrenmek biraz zor.
dediğim gibi yapıp değişkenlerde veya nesnelerde olması gerekenden başka bir değeri olan varmı kontrol et.
kodu şu şekilde değiştirebilirmisiniz. Hatanın nerede olduğunu tam net öğrenmeniz için.
Kod: Tümünü seç
if VarToStr(ARecord.Values[AColumn.Index]) = '' then
begin
AStyle := cxStyle1;
end;
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
sorun devam ediyor
iyi çalışmalar hocam
... programı satır satır calıştırdım ...
...daha net görebilmek için şeklinde yazdım..
adım adım takip ettiğimde a '', aRecord nil, aColumn ilk satırda csingeritable değerlerini alıyor.. a:= VarToStr(ARecord.Values[AColumn.Index]); satırında aynı şekilde yukarıda bahsettiğim satırda hata veriyor..
... programı satır satır calıştırdım ...
...daha net görebilmek için
Kod: Tümünü seç
var
AColumn: TcxCustomGridTableItem;
a : string;
begin
AColumn := (Sender as TcxGridDBTableView).GetColumnByFieldName('Adi');
a:= VarToStr(ARecord.Values[AColumn.Index]);
if a = '' then
AStyle := cxStyle1;
adım adım takip ettiğimde a '', aRecord nil, aColumn ilk satırda csingeritable değerlerini alıyor.. a:= VarToStr(ARecord.Values[AColumn.Index]); satırında aynı şekilde yukarıda bahsettiğim satırda hata veriyor..
a
derdimi yine tam olarak anlatayım..
aslında çok basıt.. cxgrid de listelediğim tabloda durum diye boolean bir field ım var.. field ın true ya da false olmasına bağlı stylereposty ile oluşturduğum style1 veya style 2 olsun... herhalde sorunum durum fieldını value sini oğrenmek..
saygılarımla..
aslında çok basıt.. cxgrid de listelediğim tabloda durum diye boolean bir field ım var.. field ın true ya da false olmasına bağlı stylereposty ile oluşturduğum style1 veya style 2 olsun... herhalde sorunum durum fieldını value sini oğrenmek..
saygılarımla..
Asagidaki ornekte MesajlarDBTableView1Column8 datetime turunde degisken ve onun null olup olmamasi kontrolu var, MesajlarDBTableView1Column8.Index ile degeri okuyorum cunki kullanici coloum'un yerini degistirebilir diye
procedure TOSInternalMesajGoster.MesajlarDBTableView1StylesGetContentStyle(
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
begin
if ARecord is TcxGridDataRow then
begin
if ARecord.Values[MesajlarDBTableView1Column8.Index]=Null then
AStyle:=Menuz.OSUnRead;
end;
end;
procedure TOSInternalMesajGoster.MesajlarDBTableView1StylesGetContentStyle(
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
begin
if ARecord is TcxGridDataRow then
begin
if ARecord.Values[MesajlarDBTableView1Column8.Index]=Null then
AStyle:=Menuz.OSUnRead;
end;
end;
OnCustomDrawCell eventine şöyle bir kod yazın:
İyi çalışmalar.
Kod: Tümünü seç
try
if AViewInfo.Item.Index = 5 then //Durum
if VarToStr(AViewInfo.GridRecord.Values[5]) = 'True' then
ACanvas.Brush.Color := clRed
else
ACanvas.Brush.Color := clYellow;
except
// Ne olur ne olmaz.
end;
Selamlar,
Express Quantum Grid 3.2.2'de var, yani 3'lü versiyonlarda var ama 4 ve 5'de değiştirildi o kısımlar. Orada renklendirme daha farklı yapılıyor. Onlarda Style'lar ile yapabilirsiniz.
Kolay Gelsin
Express Quantum Grid 3.2.2'de var, yani 3'lü versiyonlarda var ama 4 ve 5'de değiştirildi o kısımlar. Orada renklendirme daha farklı yapılıyor. Onlarda Style'lar ile yapabilirsiniz.
Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
tamam arkadaşlar teşekkur ediyorum.. yalnız sizi soylediğiniz şekilde
kolon renkleniyor. ben satırı renklendirmek istiyorum .. kusura bakmayın ama hem arıyyorum hem de demolarda boyle birşey var ... ama cxgrid için yeni olduğumdan demolar bana çok karışık geldi
bu arada 4 versiyonunu kullanıyorum..
saygılarımla...
kolon renkleniyor. ben satırı renklendirmek istiyorum .. kusura bakmayın ama hem arıyyorum hem de demolarda boyle birşey var ... ama cxgrid için yeni olduğumdan demolar bana çok karışık geldi
bu arada 4 versiyonunu kullanıyorum..
saygılarımla...