ابتدا باید یک عنصر جدید مبتنی بر TDBGrid ایجاد کنید و رویداد OnMouseMove را فراخوانی کنید:
type
TMyDBGrid = class(TDBGrid)
published
property OnMouseMove;
end;
اگرچه شما در رویداد OnMouseMove مختصات X و Y را بدست خواهید آورد، اما شما باید ستون مورد نظر را پیدا کنید. برای ادامه کار لازم است که سطر زیر را در قسمت protected قرار دهید:
همچنین متغیر های زیر را در قسمت 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 قرار دهید:
در قسمت OnMouseMove از TDBGrid نیز فرامین زیر را اضافه نمایید:
var r : TMessage; begin Application.HintMouseMessage(self, r); TWMMouse(r).XPos := X; TWMMouse(r).YPos := Y; Application.HintMouseMessage(MyDBGrid1, r); end;
همه کارها انجام شد. حالا شما میتوانید نتیجه را مشاهده کنید.
دیدگاه خود را بیان کنید.
باید وارد سایت شده باشید برای دیدگاه دادن