Yapmak istediğiniz işle ilgili doğru bileşeni bulmak için burayı kullanabilirsiniz. Sadece bulmak için, diğer sorular Programlama forumuna lütfen.
Forum kuralları
Bu forum sadece yapacağınız işle alakalı doğru bileşeni bulmak içindir. Şöyle bir şey yapmam lazım, hangi bileşeni kullanıyım diyorsanız, doğru yerdesiniz.
var
aValue: string;
aFormat: string;
begin
if Sender.Index = 12 then
begin
aValue := VarToStr(cxGrid1DBTableView1.DataController.Values[aRecordIndex, 12]);
if aValue <> '' then
begin
if cxGrid1DBTableView1.DataController.Values[aRecordIndex, 20] = 'TL' then aFormat := ',0.00 ₺;-,0.00 ₺';
if cxGrid1DBTableView1.DataController.Values[aRecordIndex, 20] = 'DOLAR' then aFormat := ',0.00 $;-,0.00 $';
if cxGrid1DBTableView1.DataController.Values[aRecordIndex, 20] = 'EURO' then aFormat := ',0.00 €;-,0.00 €';
aText := FormatFloat(aFormat, StrToFloat(aValue));
end;
end;
end;
bu kodu kullandığım sayısal sütunlar metne dönüşüyor. bu defa Artan azalan sıralama yapamıyorum. Sayısal sütunlar için bu kodu kullandıktan sonra tekrar sayısal sütun olarak algılanmasının nasıl sağlayabilirim. Yada bu sorunu başka nasıl aşabilirim.
sen hücreye alfanumeric değer girersen, doğal olarak vertipi değişir. Forumda olması gerek, ekrana boyama (ondraw) işleminde text i kendin basarsan istediğin olacaktır.
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak... Zoru başarırım, İmkansız zaman alır FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
ordraw ve cxgrid te de OncustomDrawCell olayı var. araştırdığım kadarıyla hücreye format verme gibi işlemler buradan yapılmıyor. örnek uygulamaya rastlamadım.
Draw -> çizmek yani hücre içeriği çizilik boyanmadan önce burası tetiklenir, burada hücreye değer vermek yada benzeri birşey yapılmaz, sana boyanacak hücre bilgileri koordinatları ve "değer" parametre olarak gelir. Sen burda yazılacak text i istediğinle değiştirebilirsin, "aText := FormatFloat(aFormat, StrToFloat(aValue));" backgraound un rengini değiştirmek vs gibi işlemlerde yapılabilir. cxgrid event e "1" sayısını parametre olarak verdi diyelim, sen bunu "Ali" olrak yazdırtabilirsin gibi.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak... Zoru başarırım, İmkansız zaman alır FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
merhaba;
öncelikle ilginiz için teşekkür ederim.
ondraw olaylarıyla sorunu çözemedim. şu şekilde yaptım;
öncelikle cxgrid in short özelliğini kapattım. daha sonra sütun başlıklarına tıklandığında sütün adını bir değişkene aktardım ve ilgili querynin Order BY Satırına aktardım duruma göre ASC ve DESC yaptırmak suretiyle artan azalan yaptım. baktım iyi çalışıyor problem yok. dediklerinizden bir sonuç üretebilseydim belki daha iyi olurdu. bu şimdilik işimi gördü.
Akkuyumcu kardeşim, (eğer doğru anladıysam) olaya çok yanlış bir noktadan başlamışsın ve bu yanlışı doğru zannedip ilerlemeye çalışıyorsun. Bu yolu terk etmeni tavsiye ederim. cxGrid için devexpress'in web sitesinde bir çok örnek var oraları incelemek daha doğru olur. Neyse, çözüme gelelim;
Amacın parasal değerler içeren bir sütunu belli bir formatta göstermek ise cxGrid'in ilgili sütununun Properties özelliğine "CurrencyEdit" demen yeterli. Gerisini cxGrid zaten kendi içinde çözüyor, bu sayede sıralama, filtreleme, gruplama gibi işlevleri de kaybetmemiş oluyorsun. Aşağıdaki kodu boş bir forma yapıştırdığında ne demek istediğimi daha net anlayacağını umuyorum.
"CurrencyEdit" sayısal değer içeren sütunlar için para birimi ayarlarken yada yüzde biçimi ayarlarken kullanıyorum. bir sorun yaşamıyorum.
sorun yaşadığım nokta şurada başlıyor.
programda format, DÖVİZ türüne göre çalışma anında değişmesi gerekiyor. TL ise TL Formatı DOLAR ise DOLAR formatının hücreye uygulanması gerekiyor. ilk mesajda belirttiğim kod bu işlemi iyi yapıyor. bu kod hücre değerinin formatını değiştiriyor freeman35 hocamın dediği gibi, yani text yapıyor. bu defa sıralama yaparken sütun değeri text değermiş gibi sıralanıyor.
Ben olsam bunun yerine para birimini yan tarafa bir sütun daha açar ve orada ayrıca gösterirdim. Diğer türlü bu kendine işkenceden başka bir şey değil, senden bunu talep eden insanlar için ayrıca para birimine göre de filtreleme imkanı sunarsan eğer, bu yeni durumu makul olarak karşılayacaklarını düşünüyorum. Yani iyi niyetle söylüyorum, bu tür şeyleri bence kendine sıkıntı etme.
değerli düşüncelerin için teşekkür ederim.
aslında dediğin gibi kedime biraz işkence çektirdiğim doğru.
haricen döviz sütunu var. bu sütuna göre takip yapılabilir daha önce program böyleydi. ancak bir programın okunabilirliği kendi değerlendirmeme göre çok önemli uğraşım bunun için.