برترین مقالات کامپیوتر

برترین مقالات کامپیوتر

برترین مقالات کامپیوتر

برترین مقالات کامپیوتر

تغییر 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;


همه کارها انجام شد. حالا شما میتوانید نتیجه را مشاهده کنید.

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد