Delphi 如何用TSpeedButton替换TDBNavigator?
我做到了: 它可以工作,但问题是当我点击按钮到达最后一条记录时,按钮没有被禁用,就像在TDBNavigator中一样Delphi 如何用TSpeedButton替换TDBNavigator?,delphi,delphi-7,delphi-xe2,delphi-2010,delphi-10.2-tokyo,Delphi,Delphi 7,Delphi Xe2,Delphi 2010,Delphi 10.2 Tokyo,我做到了: 它可以工作,但问题是当我点击按钮到达最后一条记录时,按钮没有被禁用,就像在TDBNavigator中一样 我是如何使TSpeedButton像TDBNavigator一样自动禁用和启用的?在表单上放置一个战术列表,并向其添加标准数据集操作。将这些操作连接到数据集,将SpeedButton连接到相应的操作。这些标准操作将根据当前数据集状态处理启用状态。这里有一个简单的解决方案,非常适合我 我有一个表单frmMain、dataset dsWork、datasource srcWork、g
我是如何使TSpeedButton像TDBNavigator一样自动禁用和启用的?在表单上放置一个战术列表,并向其添加标准数据集操作。将这些操作连接到数据集,将SpeedButton连接到相应的操作。这些标准操作将根据当前数据集状态处理启用状态。这里有一个简单的解决方案,非常适合我 我有一个表单frmMain、dataset dsWork、datasource srcWork、grid和两个speedbutton btnNext和btnPrior。重要的部分是TDataSource的OnDataChange事件。以下是源代码:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
DataTable.qOrders.Next;
end;
只需在button last事件中禁用button next事件
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.