1- İlk önce göze hoş gelsin diye kullanıcı fareyi gridin başlıkları üzerine getirdiği zaman imleci crHandPoint haline getirelim.
Kod: Tümünü seç
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;
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;
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;
1- Bu kod sadece Ado için geçerlidir diğer bileşenler için düzenlenmesi gerekebilir.
2- Program delphiden çalıştırıldığı zaman ilk kez çalışacak Titleclick olayında List index out of bounds(-1) hatası meydana gelecek. Sakın kod çalışmıyor diye kendinizi boşa yormayın.
PreviousColumnIndex değişkeni olay ilk kez tetiklendiğinde -1 değerine sahip olduğu için bu hata meydana geliyor. Try except, bu hatayı kullanıcıdan gizliyor...
http://delphi.about.com/library/weekly/aa042203a.htm