我想更改标准DBNavigator栏上的插入按钮的行为,从数据集插入到追加.
我可以在BeforeAction事件中捕获按钮单击,执行追加等操作;然后在OnClick事件中中止原始插入,但这似乎有点黑客.有更好的想法吗?我正在使用D6(时钟500,000公里,仍然很强劲……).
谢谢你的建议
问候,
PhilW.
解决方法
您可以从TDBNavigator派生自己的类并覆盖BtnClick方法.
或者,对于快速和脏的修复,您可以在运行时更改插入按钮的单击处理程序,例如:
或者,对于快速和脏的修复,您可以在运行时更改插入按钮的单击处理程序,例如:
type THackDBNavigator = class(TDBNavigator); procedure TForm1.DBNavigatorInsertClick(Sender: TObject); 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; end; procedure TForm1.FormCreate(Sender: TObject); begin THackDBNavigator(DBNavigator1).Buttons[nbInsert].OnClick := DBNavigatorInsertClick; end;