cxGrid Artan - Azalan Sıralama

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.
Cevapla
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

cxGrid Artan - Azalan Sıralama

Mesaj gönderen akuyumcu63 »

merhaba;
cxgrid de sütunun OnGetDataText olayına, parasal sütunlar için aşağıdaki kodu kullanıyorum.

Kod: Tümünü seç

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.

teşekkür ederim.
İsteyen, yapabildiğinden daha fazlasını yapar.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: cxGrid Artan - Azalan Sıralama

Mesaj gönderen freeman35 »

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 !!!
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Re: cxGrid Artan - Azalan Sıralama

Mesaj gönderen akuyumcu63 »

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.
İsteyen, yapabildiğinden daha fazlasını yapar.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: cxGrid Artan - Azalan Sıralama

Mesaj gönderen freeman35 »

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 !!!
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Re: cxGrid Artan - Azalan Sıralama

Mesaj gönderen akuyumcu63 »

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ü.

kolay gelsin.
İsteyen, yapabildiğinden daha fazlasını yapar.
Kullanıcı avatarı
cengaver
Üye
Mesajlar: 111
Kayıt: 01 Nis 2014 05:02
Konum: İstanbul

Re: cxGrid Artan - Azalan Sıralama

Mesaj gönderen cengaver »

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.

Kod: Tümünü seç

object cxGrid1: TcxGrid
  Left = 244
  Top = 42
  Width = 373
  Height = 161
  TabOrder = 0
  object cxGrid1DBTableView1: TcxGridDBTableView
    Navigator.Buttons.CustomButtons = <>
    DataController.Summary.DefaultGroupSummaryItems = <>
    DataController.Summary.FooterSummaryItems = <>
    DataController.Summary.SummaryGroups = <>
    object cxGrid1DBTableView1Column1: TcxGridDBColumn
      Caption = 'Bu S'#252'tunun Ba'#351'l'#305#287#305
      PropertiesClassName = 'TcxCurrencyEditProperties'
      Properties.DisplayFormat = ',0.00 TL;-,0.00 '#8378'   FORMATI BURAYA YAZ'
      Width = 110
    end
  end
  object cxGrid1Level1: TcxGridLevel
    GridView = cxGrid1DBTableView1
  end
end
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Re: cxGrid Artan - Azalan Sıralama

Mesaj gönderen akuyumcu63 »

"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.

sıkıntı bu.
İsteyen, yapabildiğinden daha fazlasını yapar.
Kullanıcı avatarı
cengaver
Üye
Mesajlar: 111
Kayıt: 01 Nis 2014 05:02
Konum: İstanbul

Re: cxGrid Artan - Azalan Sıralama

Mesaj gönderen cengaver »

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.
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Re: cxGrid Artan - Azalan Sıralama

Mesaj gönderen akuyumcu63 »

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.
İsteyen, yapabildiğinden daha fazlasını yapar.
Cevapla