一种给TDBGrid和TLabel增加鼠标效果的简单方法。
2009-02-19 22:42
267 查看
我们在编程过程中,经常遇到要给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;
总结:这种思想,可以避免为了一些简单的功能而去自己重写控件的麻烦。
首先在你使用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;
总结:这种思想,可以避免为了一些简单的功能而去自己重写控件的麻烦。
相关文章推荐
- 一种简单的方法在程序中实现透明效果(JAVA)
- 利用canvas实现鼠标拖拽效果的一种方法
- 一种简单的方法在程序中实现透明效果(JAVA)(源代码)
- js实现简单鼠标跟随效果的方法
- 我的编程学习日志(4)-- 一种简单的测试代码的方法(freopen)
- 关于如何制作Rss的一种简单方法
- 通过AJAX调用页面后台代码方法实现省级三级联动效果 (简单练习)前台
- eclipse转换工作空间的时候需要配置maven等各种配置 现在有一种简单的方法可以不用复杂配置 只配置一次就行
- CSharpGL(40)一种极其简单的半透明渲染方法
- 20.调用animate()方法制作简单的动画效果
- 分享一种简单实现微信跳一跳辅助的方法
- activity之间切换动画一种简单方法
- 一种简单的生产环境部署Node.js程序方法
- JQuery实现超链接鼠标提示效果的方法
- 一种简单的方法使Delphi-TStringGrid加载Access数据表
- 实现对gridview删除行时弹出确认对话框的一种简单方法
- 一种简单产生流水号的方法
- 一种从室内采光中获取能量的简单方法---凯利讯半导体
- 一个简单的JS鼠标悬停特效具体方法
- js实现鼠标滚轮控制图片缩放效果的方法(转)