我做了:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
DataTable.qOrders.Next;
end;
它可以工作,但问题是当我单击按钮到达最后一条记录时,该按钮没有被禁用,就像在TDBNavigator
.
我是如何TSpeedButton
像那样自动禁用和启用的TDBNavigator
?
我做了:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
DataTable.qOrders.Next;
end;
它可以工作,但问题是当我单击按钮到达最后一条记录时,该按钮没有被禁用,就像在TDBNavigator
.
我是如何TSpeedButton
像那样自动禁用和启用的TDBNavigator
?
将 a 拖放TActionList
到您的表单上并向其中添加标准数据集操作。将这些操作连接到您的数据集,并将您的快速按钮连接到适当的操作。这些标准操作将根据当前数据集状态处理启用状态。
这是一个简单的解决方案,非常适合我。
我有一个表单(frmMain)、数据集(dsWork)、数据源(srcWork)、网格和两个速度按钮(btnNext 和 btnPrior)。重要的部分在 TDataSource 的“OnDataChange”事件中。这是源代码:
unit MainForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, DBTables, StdCtrls, ExtCtrls;
type
TfrmMain = class(TForm)
btnNext: TButton;
srcWork: TDataSource;
dsWork: TTable;
btnPrior: TButton;
grdWork: TDBGrid;
procedure btnNextClick(Sender: TObject);
procedure btnPriorClick(Sender: TObject);
procedure srcWorkDataChange(Sender: TObject; Field: TField);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
procedure TfrmMain.btnNextClick(Sender: TObject);
begin
if not dsWork.Eof then dsWork.Next;
end;
procedure TfrmMain.btnPriorClick(Sender: TObject);
begin
if not dsWork.Bof then dsWork.Prior;
end;
procedure TfrmMain.srcWorkDataChange(Sender: TObject; Field: TField);
begin
btnNext.Enabled := not dsWork.Eof;
btnPrior.Enabled := not dsWork.Bof;
end;
end.