تغییر Hint برای هر ستون از DBGrid در دلفی
ابتدا باید یک عنصر جدید مبتنی بر TDBGrid ایجاد کنید و رویداد OnMouseMove را فراخوانی کنید:

کد:
type 
TMyDBGrid = class(TDBGrid) 
published  
property OnMouseMove; 
end;




اگرچه شما در رویداد OnMouseMove مختصات X و Y را بدست خواهید آورد، اما شما باید ستون مورد نظر را پیدا کنید. برای ادامه کار لازم است که سطر زیر را در قسمت protected قرار دهید:



کد:
procedure WMMouseMove(var Message : TWMMouse); message WM_MOUSEMOVE;
همچنین متغیر های زیر را در قسمت public اضافه نمایید:



کد:
MouseRow : integer; MouseCol : integer;
بنابراین متد WMMouseMove بصورت ریر خواهد بود:

[HTML]procedure TMyDBGrid.WMMouseMove(var Message : TWMMouse);
var
t : TGridCoord;
begin
t := MouseCoord(Message.XPos, Message.YPos);
MouseCol := t.x;
MouseRow := t.y;
inherited;
end;[/HTML]


ما ابتدا فیلدهای XPost و YPos را از ساختار WMMouseMove تنظیم میکنیم:


کد:
procedure TForm2.MyDBGrid1MouseMove(Sender: TObject; Shift:  TShiftState; X, Y: 
Integer); 
begin 
if (((dgIndicator in  MyDBGrid1.Options) and (MyDBGrid1.MouseCol > 0)) or 
((not (dgIndicator in  MyDBGrid1.Options)) and (MyDBGrid1.MouseCol <> -1))) 
and  (MyDBGrid1.MouseCol <> OldMouseCol) then begin 
OldMouseCol :=  MyDBGrid1.MouseCol; 
if dgIndicator in MyDBGrid1.Options then  
MYDBGrid1.Hint := MyDBGrid1.Columns[MyDBGrid1.MouseCol - 1].FieldName  
else 
MYDBGrid1.Hint := MyDBGrid1.Columns[MyDBGrid1.MouseCol].FieldName;  
end;
end;

حالا مجددا" تعریف زیر را در قسمت public قرار دهید:



کد:
HintMouseMessage(Control : TControl; var Message : TMessage)
در قسمت OnMouseMove از TDBGrid نیز فرامین زیر را اضافه نمایید:


کد:
var 
r : TMessage;  
begin 

Application.HintMouseMessage(self, r); 
TWMMouse(r).XPos :=  X; 
TWMMouse(r).YPos := Y; 
Application.HintMouseMessage(MyDBGrid1, r);  
end;
همه کارها انجام شد. حالا شما میتوانید نتیجه را مشاهده کنید