dbgridde titleclik yaparak a..z nasıl listerim

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
metemete
Üye
Mesajlar: 422
Kayıt: 21 Mar 2004 12:30
Konum: samsun
İletişim:

dbgridde titleclik yaparak a..z nasıl listerim

Mesaj gönderen metemete »

adodateset ile dbgridin titleclik olayına aşağıdakı kodu tıklayarak
a..z ye ve z..a ya sıralma yapmasını sağlıyordum;


if ADODataSet1.IndexFieldNames=column.Field.FieldName then
begin ok.ImageIndex:=0;
ADODataSet1.IndexFieldNames:=Column.Field.FullName+' DESC' end
else begin ok.ImageIndex:=1;
ADODataSet1.IndexFieldNames:=column.Field.FieldName end;

peki IBdateset ile nasıl yapabilirim?
En son metemete tarafından 30 Kas 2005 12:19 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Selamlar.
IBDataset nesnesinin SelectSQL'ine ilgili sorguyu yazarak (order by-order by desc şeklinde..) bunu yapabilirsiniz..

Kolay gelsin..
Kullanıcı avatarı
metemete
Üye
Mesajlar: 422
Kayıt: 21 Mar 2004 12:30
Konum: samsun
İletişim:

olmuyorr

Mesaj gönderen metemete »

titleclick olayında kullanıyorum.
sizin dediğiniz gibi yaparsam IBDATASET kapatıp acmam gerekcek
bende acıp kapatmak ıstemıyorum

adodataset bu işi yapıyorsa IBDATASET de yapar diye umuyorum???



IBdataset.sort özelliği olsa söyle de olurdu sanırım

dbGrid1.Columns[wRenkKolonu].Font.Color := clBlack;
column.Font.Color := clBlue;
if wSort = true
Then qrygrid.Sort := column.FieldName + ' ASC '
Else qrygrid.Sort := column.FieldName + ' DESC ';
wSort := not wSort;
wRenkKolonu := column.index;

bilen yokmu arkadaşlar ???
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
ibdatasaet le değlde ibtable kullanırsan sanırım onda indexfieldname özelliği var.

kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Mesaj gönderen sako »

DBGrid1TitleClick...

VAR
ColumName:STRING;
begin
ColumName:= Column.FieldName; //tıklanan sütun başlığı
ibtable.IndexFieldNames:=ColumName;
ibtable.Refresh;
ibtable.First;
end;
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

adodatasette olan sort özellliği ibdatasette yok malesef. bu işlemi yapmak için ibdatasettin ilgili sql özelliğini değiştirip close,open yapmaktan başka bir çözüm bilmiyorum ama illa close,open yapmadan bu işi yapmam gerekiyor derseniz araya birde clientdataset bileşeni almanız gerekecek. ibdatasetteki verileri clientdatasete attıktan sonra verilerin sıralamasını istediğiniz şekilde değiştirme şansınız olur. denemedim ama bir diğer yol ise firebird'ün odbc sürücülerini yükleyip adodataset kullanarak bağlanmayı da deneyebilirsiniz.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
metemete
Üye
Mesajlar: 422
Kayıt: 21 Mar 2004 12:30
Konum: samsun
İletişim:

Mesaj gönderen metemete »

tşk ederim arkadaşlar
ama ibdataset yerine table kullanmak istemiyorum.
bmw den inip hacı murata binmek gibi olur
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

Kod: Tümünü seç

  { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmMusteriListe: TFrmMusteriListe;
  OrderDir: Boolean = True; //Grid başlıklarında arama yapmak için
Buda Kod:

Kod: Tümünü seç

procedure TFrmMusteriListe.DBGrid1TitleClick(Column: TColumn);
begin
  //Bu Kodlarla Tıklanan Butona Göre Sıralıyoruz.
  if OrderDir then
  begin
    Screen.Cursor := crSQLwait;

    datmodul.sorgu.SelectSQL.Text := 'select * from MUSTERI order by ' +
      Column.FieldName + ' ASC';
    Screen.Cursor := crDefault;

  end
  else
  begin
    Screen.Cursor := crSQLwait;

    datmodul.sorgu.SelectSQL.Text := 'select * from MUSTERI order by ' +
      Column.FieldName + ' DESC';
    Screen.Cursor := crDefault;

  end;
  OrderDir := not OrderDir;
  datmodul.sorgu.Close;
  Screen.Cursor := crSQLwait;

  datmodul.sorgu.Open;
  Screen.Cursor := crDefault;

end;
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2384
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

IBTable ın kodlarını incelersenin onunda SQL oluşturup çalıştırdığını göreceksiniz, yani sadece araya bir arayüz eklemek gibi bir şey olur.
Yapılmak istenen in 2 çözümü var. Query kullanıp SQL oluşturup çalıştırmak, yada 3.parti componentlar kullanmak. cxGrid gibi.
Fikir vermesi açısından çalışma mantığını söyliyeyim. cxGrid tüm dataset i okuyup hafızaya alır.Parametrelerle bunu değiştirebilirsiniz ama özellikleri değiştirmek gridin işlevlerini etkiliyecektir. Hafızaya aldığı kayıtlar üzerinde işlem yapar. dolayısıyla Dataset in açılıp kapanmasına yada field larda index olmasına gerek yoktur. Ayrıca işlem memory de yapıldığından ve algoritması iyi tasarlandığından makul bir performansı vardı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 !!!
Cevapla