cxgrid sütun sırası ve filtreleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
sunye
Üye
Mesajlar: 101
Kayıt: 24 Ağu 2004 04:49
Konum: izmir

cxgrid sütun sırası ve filtreleme

Mesaj gönderen sunye »

Merhaba,

cxGRID hakkında 2 tane sorunum var;

1. Tasarım ekranında oluşturduğum field sıralamasını müşteri istediği gibi özelleştirebilir mi?

Örneğin;
Tasarımım SıraNo, CariKodu, CariIsim, Adres, Telefon
Müşteri Adres, Telefon, CariKodu, CariIsim gibi sıralamayı değiştirebilir mi? (Her kullanıcı bunu kendisi sıralamayı değiştirebilir)

Bunun için cxPropertiesStore kullanıyorum ancak sıralamayı hafızasında tutmuyor, diğer alan görünür görünemez gibi değişiklikleri kayıt edebiliyorum.

Başka yöntem var mı?

2. Yine cxgrid üzerinde birden fazla alanda filtre vermek istediğimde ikinci filtre alanı tüm kayıtları getiriyor, birinci filtreye göre kısıt uygulamıyor.

İl İzmir ilçe Çankaya olmasını istiyorum.
İl alanında filtreden "İzmir"i işaretledim,
İlçe alanına geldiğim zaman tüm ilçe kayıtları geliyor. Exceldeki gibi sadece İl'i izmir olan ilçeleri nasıl getirebilirim.

Bunun için gridin kendi filter özelliğini kullanıyorum ekstra bi sorgu çalıştırılmıyor.
Bildiğim tek şey, hiç bir şey bilmediğim.

m_yaprakci

Re: cxgrid sütun sırası ve filtreleme

Mesaj gönderen m_yaprakci »

1. soru icin ben ini dosyaya saklamayı kullanıyorum. İsterseniz registry'ye de gorunumu kaydedebilirsiniz.
şöyle ki formun onclose olayına

Kod: Tümünü seç

cxGrid1DBTableView1.StoreToIniFile(ExtractFilePath(ParamStr(0))+'GridGorunum.ini');
geri çağırmak için ise

Kod: Tümünü seç

cxGrid1DBTableView1.RestoreFromIniFile(ExtractFilePath(ParamStr(0))+'GridGorunum.ini');
PropertiesStore'a gerek yok ;)

2. sorunuzda da veri yapınız soyle ise sorun cıkmamalı:
il ilce
izmir buca
izmir Aliağa
izmir Balçova
izmir Bayındır
izmir Bayraklı
izmir Bergama
izmir Beydağ
izmir Bornova
Konya Karatay
Konya Selçuklu

bu şekilde izmiri secerseniz izmir ilceleri gelecektir sadece.
cxgridde filtrelemeyi nerde yaparsanız yapın filtreleme sonrası ekranda kalan veriler üzerinden yeniden filtreleme yapılır.

Onemli 1. secenekteki gibi düzenleme yapmak istiyorsanız CxGridDbbTableView ozelliklerinden

Kod: Tümünü seç

OptionsCustomize> ColumnFiltering > True
OptionsCustomize> ColumnSorting > True
OptionsCustomize> ColumnMoving > True
OptionsCustomize> ColumnQuickCustomization > True
yapmalısınız.
Bu sekilde baslıkların hemen solunda kucuk bir alan belirecek ve buradan hızlı sekilde alan ekleyip cıkarabileceksiniz.

Bunun yerine dilerseniz cxpopupmenu ile de alan düzenleyicisini acabilirsiniz.

Kullanıcı avatarı
sunye
Üye
Mesajlar: 101
Kayıt: 24 Ağu 2004 04:49
Konum: izmir

Re: cxgrid sütun sırası ve filtreleme

Mesaj gönderen sunye »

Merhaba,

cevabınız için teşekkür ederim, en kısa sürede deneyip sonucu yazacağım.
Bildiğim tek şey, hiç bir şey bilmediğim.

Kullanıcı avatarı
sunye
Üye
Mesajlar: 101
Kayıt: 24 Ağu 2004 04:49
Konum: izmir

Re: cxgrid sütun sırası ve filtreleme

Mesaj gönderen sunye »

Tekrar merhaba,

1. işlem tamam. istediğim gibi oldu, tüm özellikleri kaydediyor.

2. işlem yani filtreleme ise hala sıkıntılı aynı sorun devam ediyor.
Bildiğim tek şey, hiç bir şey bilmediğim.

Kullanıcı avatarı
maxpaynen
Üye
Mesajlar: 9
Kayıt: 14 Tem 2018 03:20
İletişim:

Re: cxgrid sütun sırası ve filtreleme

Mesaj gönderen maxpaynen »

Çoklu sütunlara göre sıralamak için, Shift tuşunu basılı tutarken sütun başlıkları tıklanmalıdır.
Görünmez bir sütun kullanarak birden çok sıralamak istiyorsanız, GridView.OptionsCustomize.ColumnSorting seçeneğini devre dışı bırakmanızı ve GridView'ın OnMouseUp olayını işlerken sütunun SortOrder özellik değerini el ile değiştirmeniz önerilir. Bu çözümü gösteren bir örnek ekledim.

Kod: Tümünü seç

procedure TForm1.cxGrid1DBTableView1MouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  AHitTest: TcxCustomGridHitTest;
  AView: TcxGridTableView;
  AColumn: TcxGridColumn;
  ASortOrder: TcxDataSortOrder;
begin
  with TcxGridSite(Sender) do
  begin
    AView := TcxGridTableView(GridView);
    AHitTest := ViewInfo.GetHitTest(X, Y);
  end;
  if AHitTest is TcxGridColumnHeaderHitTest then
  begin
    AColumn := TcxGridColumnHeaderHitTest(AHitTest).Column;
    ASortOrder := AColumn.SortOrder;
    if not (ssShift in Shift) then
    begin
      AView.DataController.ClearSorting(false);
      cxGrid1DBTableView1Country.SortOrder := soAscending;
    end;
    if (ASortOrder = soDescending) or (ASortOrder = soNone) then
      AColumn.SortOrder := soAscending
    else if ASortOrder = soAscending then
      AColumn.SortOrder := soDescending;
  end;
end;

cagatay77
Üye
Mesajlar: 37
Kayıt: 31 Eki 2003 12:34

Re: cxgrid sütun sırası ve filtreleme

Mesaj gönderen cagatay77 »

2. soru için formun create olayına gridtableview adını değiştirerek aşağıdaki kodu ekleyin.

Kod: Tümünü seç

cxGrid1DBTableView1.Filtering.ColumnFilteredItemsList := True;

Cevapla