دوستان به جای اینکه خاشیه پردازی کنید مشکل همدیگه رو حل کنید :)
این مشکل در تمامی نسخه های دلفی وجود داره. من با یک تغییر کوچک در کامپونت گرید این مشکل رو برای خودم حل کردم. این کامپوننت رو نصب کنید همون کامپوننت dbgrid هستش که مشکلش حل شده. البته من این رو توی دلفی 2005 نوشته بودمش. برای xe2 نمی دونم درست عمل کنه یا نه. علاوه بر اون رویداد onmouseenter و onmouseexit هم داره برای هایلایت کردن گرید وقتی با موس میرین روش رو هم داراست:
unit AFBDBGrid;
interface
uses
SysUtils, Classes, Controls, Grids, DBGrids,stdCtrls, messages;
type
TAFBDBGrid = class(TDBGrid)
private
MouseAct:Boolean;
FmouseEnter:TNotifyEvent;
FmouseExit:TNotifyEvent;
{ Private declarations }
protected
procedure MouseEnter (var Msg:Tmessage);message cm_mouseEnter;
procedure MouseLeave (var Msg:Tmessage);message cm_mouseleave;
{ Protected declarations }
public
constructor Create (Owner: TComponent); override;
published
property MouseAction:Boolean read MouseAct write MouseAct default False;
property OnMouseEnter:TNotifyEvent read FMouseEnter write FMouseEnter;
property OnMouseExit:TNotifyEvent read FMouseExit write FMouseExit;
property ScrollBars;
property BorderStyle;
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('AFB', [TAFBDBGrid]);
end;
constructor TAFBDBGrid.Create(Owner: TComponent);
begin
inherited Create (Owner);
Scrollbars:=ssNone;
end;
procedure TAFBDBGrid.MouseEnter (var Msg:Tmessage);
begin
inherited;
if MouseAct=true then bevelkind:=bkFlat;
if assigned(FmouseEnter) then FmouseEnter(self);
end;
procedure TAFBDBGrid.Mouseleave (var Msg:Tmessage);
begin
inherited;
if MouseAct=true then bevelkind:=bkNone;
if assigned(FMouseExit) then FMouseExit(self);
end;
end.
امیدوارم به دردتون بخوره.