如何访问一个控件的 Protected 段的成员,改变 DBNavigator 的行为
来源:互联网 发布:递归算法反汇编 编辑:程序博客网 时间:2024/06/17 22:37
问题:如何在使用 DBNavigator 的时候,用户点了 “+” 符号,对应的 DataSet 不是执行 Insert 而是执行 Append,达到新纪录始终出现在 DBGrid 的最底部的效果?
办法:通过修改 DBNavigator 的代码来实现。
但我们不能去修改 DBNavigator 的源代码。DBNavigator 有一个 Buttons 属性,但是属于 Portected 的,在其它地方无法访问到。对于 Delphi 的语法来说,可以这样处理:在需要访问 DBNavigator 的 Protected 区的成员的单元,声明一个新的类,继承 DBNavigator,因为 Delphi 的语法规定 Protected 区的成员在本单元可以访问,因此就可以访问被保护的 Buttons 属性了。
原理讲完,看代码:
var DBNavigator: TDBNavigator;begin DBNavigator := ((Sender as TControl).Parent as TDBNavigator); if Assigned(DBNavigator.DataSource) and (DBNavigator.DataSource.State <> dsInactive) then begin if Assigned(DBNavigator.BeforeAction) then DBNavigator.BeforeAction(DBNavigator, nbInsert); DBNavigator.DataSource.DataSet.Append; if Assigned(DBNavigator.OnClick) then DBNavigator.OnClick(DBNavigator, nbInsert); end;
0 0
- 如何访问一个控件的 Protected 段的成员,改变 DBNavigator 的行为
- 修改 DBNavigator 的 click事件;
- delphi DBNaVigator组件的使用方法
- protected访问标号的一个生僻
- 敏捷开发是如何改变团队成员既有的思维与行为模式?
- 如何由方法论设计敏捷实践, 改变团队成员既有的思维, 行为模式?
- c++ 类成员的访问权限priavte, protected, public
- C++中 public protected private 类成员的访问
- C++派生类对象访问基类的protected成员
- C++派生类对象访问基类的protected成员
- C++派生类对象访问基类的protected成员
- C++中 public protected private 类成员的访问
- protected的访问权限
- cb6的DBNavigator删除提示 汉化
- 为DBNavigator的按钮加中文
- 基类的protected成员
- 类成员访问控制符:public、protected、friendly、private 在这里进行一个透彻些的讲述
- 如何改变控件的字体
- idea添加其他包的方法
- Java 中的 static 使用之静态方法
- Leetcode Algorithm 005. Longest Palindromic Substring
- 基于Mojo的perl爬虫
- HDU2141-Can you find it?
- 如何访问一个控件的 Protected 段的成员,改变 DBNavigator 的行为
- 夜间车辆识别
- LeetCode (Set Matrix Zeroes)
- 计算一个字符串中的字串
- $.ajax()引发的对Deferred的总结
- Java环境配置
- 获取天气预报的小爬虫
- javascript生成32位UUID的方法
- AsyncTask+ListView