Dbgrid harf ile sıralama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
EeCOMP
Üye
Mesajlar: 119
Kayıt: 13 Tem 2003 10:38
Konum: istanbul
İletişim:

Dbgrid harf ile sıralama

Mesaj gönderen EeCOMP »

formumda bir dbgrid var veritabanında filtreleme yapıp çıkan sonuçları dbgrid ile gösteriyorum.ben bir buton ile dbgriddeki verileri isim alanında harf sırasına göre listeletmek istiyorum hatta mümkünse isteğe göre tarih sıra no vs vs. listeletmek istiyorum bunu nasıl yapabilirim
yardımlarınız için şimdiden çok teşekkürler
Kainat dahi bir programdır ve şüphesiz onun bir programcısı vardır...
cortex
Üye
Mesajlar: 40
Kayıt: 21 Tem 2004 11:10

Mesaj gönderen cortex »

http://delphi.about.com/library/weekly/aa042203a.htm

burada sort olayını çok güzel anlatıyor bir bak istersen ben burdakinin aynısını kullanmıştım...
EeCOMP
Üye
Mesajlar: 119
Kayıt: 13 Tem 2003 10:38
Konum: istanbul
İletişim:

Mesaj gönderen EeCOMP »

çok teşekkür ederim ama ben maalesef ingilizce bilmiyorum.
Kainat dahi bir programdır ve şüphesiz onun bir programcısı vardır...
Arifceylan28
Üye
Mesajlar: 298
Kayıt: 19 Tem 2004 01:45
Konum: Giresun/Samsun

Mesaj gönderen Arifceylan28 »

viewtopic.php?t=3452&highlight=sort

Buraya bi bakın isterseniz.Kolay gelsin
cortex
Üye
Mesajlar: 40
Kayıt: 21 Tem 2004 11:10

Mesaj gönderen cortex »

hmm

tamam anlatıyorum :)

Dbgridin onmousemove eventine

procedure TForm1.DBGrid1MouseMove
(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
pt: TGridcoord;
begin
pt:= DBGrid1.MouseCoord(x, y);

if pt.y=0 then
DBGrid1.Cursor:=crHandPoint
else
DBGrid1.Cursor:=crDefault;
end;


Bu kodu giriyorsun

Daha sonra,

Titlecliclick eventine

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
{$J+}
const PreviousColumnIndex : integer = -1;
{$J-}
begin
if DBGrid1.DataSource.DataSet is TCustomADODataSet then
with TCustomADODataSet(DBGrid1.DataSource.DataSet) do
begin
try
DBGrid1.Columns[PreviousColumnIndex].title.Font.Style :=
DBGrid1.Columns[PreviousColumnIndex].title.Font.Style - [fsBold];
except
end;

Column.title.Font.Style :=
Column.title.Font.Style + [fsBold];
PreviousColumnIndex := Column.Index;

if (Pos(Column.Field.FieldName, Sort) = 1) and (Pos(' DESC', Sort)= 0) then
Sort := Column.Field.FieldName + ' DESC'
else
Sort := Column.Field.FieldName + ' ASC';
end;
end;

bu kodu giriyorsun,

böylelikle sort olayı oluyor, son olarak,

Run dediğinde problem çıkarıyormuş gibi olabilir ama çalışacak exe den dene direk olayı.

ve DBGrid1, ADOQuery1, AdoTable1 bu componentlere göre hazırlanmıştır gerekli değişikliği sen componentine göre ayarla..

Kolay gelsin
DotCom
Kıdemli Üye
Mesajlar: 1696
Kayıt: 11 Tem 2003 10:30
Konum: İzmir
İletişim:

Mesaj gönderen DotCom »

Tawsiyem Query Kullanman.

Kod: Tümünü seç

Query1.close;
Query1.Sql.Clear;
Query1.Sql.Add('Select * from table where order by isim'); 
// isimden sonra desc yazarsan z-a sıralama yapar
Query1.open;
Ayrıca ; iki tarih arası listeleme için ;

Kod: Tümünü seç

Select * from table where between :ilktarih and :ikinci_trh
tarih isim ayrımı içinde checkbox lar koyup ;

if checkbox1.checked then

şeklinde yapabilirsin.

Kolay Gelsin
Armani
Üye
Mesajlar: 104
Kayıt: 18 Mar 2004 05:32
Konum: Ankara

Mesaj gönderen Armani »

merhaba
bu kod da sadece bir colon için index nasıl yapabilirim ?

Kod: Tümünü seç

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
{$J+}
const PreviousColumnIndex : integer = -1;
{$J-}
begin
if DBGrid1.DataSource.DataSet is TCustomADODataSet then
with TCustomADODataSet(DBGrid1.DataSource.DataSet) do
begin
try
DBGrid1.Columns[PreviousColumnIndex].title.Font.Style :=
DBGrid1.Columns[PreviousColumnIndex].title.Font.Style - [fsBold];
except
end;

Column.title.Font.Style :=
Column.title.Font.Style + [fsBold];
PreviousColumnIndex := Column.Index;
Sort := Column.Field.FieldName + ' ASC';
end;
end;
yapmak istedigim sadece rakamların oldugu 'No' kolonunda index yapması
(AdoQuery kullanıyorum)
Armani
Üye
Mesajlar: 104
Kayıt: 18 Mar 2004 05:32
Konum: Ankara

Mesaj gönderen Armani »

Günaydın Arkadaşlar
dedigim gibi sadece bir colonda nasıl yapılır acaba ?

Yardımcı olabilirseniz sevinirim.
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

Armani yazdı:

Kod: Tümünü seç

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
yapmak istedigim sadece rakamların oldugu 'No' kolonunda index yapması
(AdoQuery kullanıyorum)

Column.Title özelliğini kullanabilirsin.

if Column.Title <> 'No' Then Exit gibi...
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Cevapla