Dbgrid harf ile sıralama
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Dbgrid harf ile sıralama
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
yardımlarınız için şimdiden çok teşekkürler
Kainat dahi bir programdır ve şüphesiz onun bir programcısı vardır...
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...
burada sort olayını çok güzel anlatıyor bir bak istersen ben burdakinin aynısını kullanmıştım...
-
- Üye
- Mesajlar: 298
- Kayıt: 19 Tem 2004 01:45
- Konum: Giresun/Samsun
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
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
Tawsiyem Query Kullanman.
Ayrıca ; iki tarih arası listeleme için ;
tarih isim ayrımı içinde checkbox lar koyup ;
if checkbox1.checked then
şeklinde yapabilirsin.
Kolay Gelsin
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;
Kod: Tümünü seç
Select * from table where between :ilktarih and :ikinci_trh
if checkbox1.checked then
şeklinde yapabilirsin.
Kolay Gelsin
merhaba
bu kod da sadece bir colon için index nasıl yapabilirim ?
yapmak istedigim sadece rakamların oldugu 'No' kolonunda index yapması
(AdoQuery kullanıyorum)
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;
(AdoQuery kullanıyorum)
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Armani yazdı:yapmak istedigim sadece rakamların oldugu 'No' kolonunda index yapmasıKod: Tümünü seç
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
(AdoQuery kullanıyorum)
Column.Title özelliğini kullanabilirsin.
if Column.Title <> 'No' Then Exit gibi...