一种给TDBGrid和TLabel增加鼠标效果的简单方法。

来源:互联网 发布:手机限制网速软件 编辑:程序博客网 时间:2024/04/29 11:00

 我们在编程过程中,经常遇到要给TDBGrid增加鼠标的滚轮事件处理,具体就是让记录随着鼠标滚轮移动。这里介绍一种比较简单和有新意的方法:

首先在你使用TDBGrid的单元type处加上:

 

TDBGrid = class(DBGrids.TDBGrid)
    public
       function DoMouseWheel(Shift:   TShiftState;   WheelDelta:   Integer;   MousePos:   TPoint):     Boolean;   override;
    end;

 

 

然后在实现部分:

 

function  TDBGrid.DoMouseWheel(Shift:TShiftState;WheelDelta:Integer;MousePos:TPoint):Boolean;
  begin
      Result := true;
      if   WheelDelta<0 then
           DataSource.DataSet.Next;
      if   wheelDelta>0 then
           DataSource.DataSet.Prior;
  end; // 滚动DataSet

 

这样就可以对你整个当前窗体上的TDBGrid的滚轮事件起作用了。

 

与此类似的处理,我们也可以对当前窗体上所有的TLabel控件增加鼠标特效:当鼠标移上去的时候显示手型图标,同时文字变粗;当鼠标移开恢复状态。

 

//----------------给TLabel组件增加鼠标特效-----------------
    TLabel = class(stdCtrls.TLabel)
    public
       procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
       procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    end;

 


procedure TLabel.CMMouseEnter(var Message: TMessage);
begin
  Self.Cursor := crHandPoint;
  Self.Font.Color := clRed;
  self.Font.Style := [fsBold];
end;

procedure TLabel.CMMouseLeave(var Message: TMessage);
begin
  Self.Cursor := crDefault;
  Self.Font.Color := clBlue;
  self.Font.Style := [fsUnderline];
end;

 

 总结:这种思想,可以避免为了一些简单的功能而去自己重写控件的麻烦。

原创粉丝点击