تغییر
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 بصورت ریر خواهد بود:
procedure TMyDBGrid.WMMouseMove(var Message : TWMMouse);
var
t : TGridCoord;
begin
t := MouseCoord(Message.XPos, Message.YPos);
MouseCol := t.x;
MouseRow := t.y;
inherited;
end;
ما ابتدا فیلدهای 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;
همه کارها انجام شد. حالا شما میتوانید نتیجه را مشاهده
کنید.
بازگشت به فهرست
بازگشت به صفحه نخست