📄 fmsingleu.pas
字号:
{单档基类}
unit FMSingleU;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, FMBaseU, DB, ADODB, StdCtrls, Buttons, ExtCtrls, Menus;
type
TFMSingle = class(TFMBase)
cdsMain: TADODataSet;
dsMain: TDataSource;
BtnPanel: TPanel;
btnFirst: TBitBtn;
btnPre: TBitBtn;
btnNext: TBitBtn;
btnLast: TBitBtn;
btnAdd: TBitBtn;
btnModify: TBitBtn;
btnDelete: TBitBtn;
btnSave: TBitBtn;
btnCancle: TBitBtn;
btnQuery: TBitBtn;
btnExit: TBitBtn;
btnPrint: TBitBtn;
SingleMenu: TPopupMenu;
pnmFirst: TMenuItem;
pnmPre: TMenuItem;
pnmNext: TMenuItem;
pnmLast: TMenuItem;
N5: TMenuItem;
pnmInsert: TMenuItem;
pnmModify: TMenuItem;
pnmDelete: TMenuItem;
N11: TMenuItem;
pnmSave: TMenuItem;
pnmCancle: TMenuItem;
pnmQuery: TMenuItem;
pnmExit: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure btnAddClick(Sender: TObject);
procedure btnModifyClick(Sender: TObject);
procedure btnDeleteClick(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
procedure btnCancleClick(Sender: TObject);
procedure btnFirstClick(Sender: TObject);
procedure btnPreClick(Sender: TObject);
procedure btnNextClick(Sender: TObject);
procedure btnLastClick(Sender: TObject);
procedure btnExitClick(Sender: TObject);
procedure btnQueryClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure dsMainStateChange(Sender: TObject);
procedure cdsMainBeforeScroll(DataSet: TDataSet);
procedure cdsMainAfterScroll(DataSet: TDataSet);
procedure cdsMainPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
private
{ Private declarations }
FAddType:integer ;
FSQL,FSubSQL,FTableName:string ;
public
{ Public declarations }
aErrMsg :string ;
property PAddType :integer read FAddType write FAddType ; {传递的过滤语句或返回结果的SQL语句}
property PSQL :string read FSQL write FSQL ; {传递的过滤语句或返回结果的SQL语句}
property USubSQL :string read FSubSQL write FSubSQL ; {传递的过滤语句或返回结果的SQL语句}
property PTableName :string read FTableName write FTableName ; {查询的表}
function DelCheck:boolean ; virtual;
procedure SetButton;
end;
var
FMSingle: TFMSingle;
implementation
{$R *.dfm}
uses FMDBU,FmSearchU ;
function TFMSingle.DelCheck:boolean;
begin
result :=true ;
end ;
{按钮控制}
procedure TFMSingle.SetButton;
begin
btnExit.Enabled := dsMain.DataSet.State in [dsBrowse];
btnPrint.Enabled :=(cdsMain.Active) and (dsMain.DataSet.State in [dsBrowse]);
btnCancle.Enabled := (dsMain.DataSet.State in [dsInsert, dsEdit]);
btnAdd.Enabled := (not cdsMain.Active) or (dsMain.DataSet.State in [dsBrowse]);
btnQuery.Enabled :=(not cdsMain.Active) or (dsMain.DataSet.State in [dsBrowse]) ;
if cdsMain.State in [dsInsert, dsEdit] then
begin
btnModify.Enabled := False;
btnDelete.Enabled := False;
end
else
begin
{btnModify.Enabled := ((dsMain.DataSet.State in [dsBrowse]) and
(not dsMain.DataSet.Eof) or
(not dsMain.DataSet.Bof));}
btnModify.Enabled := ((dsMain.DataSet.State in [dsBrowse]) and
(dsMain.DataSet.RecordCount>0));
{btnDelete.Enabled := ((dsMain.DataSet.State in [dsBrowse]) and
(not dsMain.DataSet.Eof) or
(not dsMain.DataSet.Bof)); }
btnDelete.Enabled := ((dsMain.DataSet.State in [dsBrowse]) and
(dsMain.DataSet.RecordCount>0));
end;
btnSave.Enabled := (dsMain.DataSet.State in [dsInsert, dsEdit]);
btnFirst.Enabled := ((dsMain.DataSet.State in [dsBrowse]) and
(not dsMain.DataSet.Bof));
btnPre.Enabled := ((dsMain.DataSet.State in [dsBrowse]) and
(not dsMain.DataSet.Bof));
btnNext.Enabled := ((dsMain.DataSet.State in [dsBrowse]) and
(not dsMain.DataSet.Eof));
btnLast.Enabled := ((dsMain.DataSet.State in [dsBrowse]) and
(not dsMain.DataSet.Eof));
pnmFirst.Enabled :=btnFirst.Enabled ;
pnmPre.Enabled :=btnPre.Enabled ;
pnmNext.Enabled :=btnNext.Enabled ;
pnmLast.Enabled :=btnLast.Enabled ;
pnmInsert.Enabled :=btnAdd.Enabled ;
pnmModify.Enabled:=btnModify.Enabled ;
pnmDelete.Enabled :=btnDelete.Enabled ;
pnmSave.Enabled :=btnSave.Enabled ;
pnmCancle.Enabled :=btnCancle.Enabled ;
pnmQuery.Enabled :=btnQuery.Enabled ;
pnmExit.Enabled :=btnExit.Enabled ;
end ;
{初始化}
procedure TFMSingle.FormCreate(Sender: TObject);
begin
inherited;
if aErrMsg='' then aErrMsg :='该记录不能删除.';
SetButton;
PSQL :=cdsMain.CommandText ;
if FAddType=1 then
cdsMain.CommandText :=cdsMain.CommandText +' and 1=2';
end;
{新增}
procedure TFMSingle.btnAddClick(Sender: TObject);
begin
inherited;
if not cdsMain.Active then
cdsMain.Active :=True;
cdsMain.Append ;
SetEnable(True);
end;
{修改}
procedure TFMSingle.btnModifyClick(Sender: TObject);
begin
inherited;
if cdsMain.Active then
begin
SetEnable(True);
cdsMain.Edit ;
end ;
end;
{删除}
procedure TFMSingle.btnDeleteClick(Sender: TObject);
begin
inherited;
if not DelCheck then
begin
MessageBox(handle,PChar(aErrMsg),'提示',MB_OK+MB_ICONWARNING);
exit ;
end ;
if messagebox(handle,'确定删除此记录吗?','确认',MB_OKCANCEL+MB_ICONINFORMATION)<>IDOK then exit;
cdsMain.Delete ;
end;
{保存}
procedure TFMSingle.btnSaveClick(Sender: TObject);
begin
inherited;
if not(cdsMain.State in [dsInsert,dsEdit]) then exit ;
try
cdsMain.Post ;
SetEnable(False);
except
on E:Exception do MessageBox(handle,PChar(E.Message),'提示',MB_OK+MB_ICONWARNING);
end ;
end;
{取消}
procedure TFMSingle.btnCancleClick(Sender: TObject);
begin
inherited;
if not(cdsMain.State in [dsInsert,dsEdit]) then exit ;
cdsMain.Cancel ;
SetEnable(False);
end;
{第一笔记录的按钮}
procedure TFMSingle.btnFirstClick(Sender: TObject);
begin
inherited;
if dsMain.DataSet.State = dsBrowse then
begin
dsMain.DataSet.First;
btnFirst.Enabled := False;
btnPre.Enabled := False;
end;
end;
{上一笔记录的按钮}
procedure TFMSingle.btnPreClick(Sender: TObject);
begin
inherited;
if dsMain.DataSet.State = dsBrowse then
begin
dsMain.DataSet.Prior;
if dsMain.DataSet.Bof then
begin
dsMain.DataSet.First;
btnFirst.Enabled := False;
btnPre.Enabled := False;
end;
end;
end;
{下一笔记录的按钮}
procedure TFMSingle.btnNextClick(Sender: TObject);
begin
inherited;
if dsMain.DataSet.State = dsBrowse then
begin
dsMain.DataSet.Next;
if dsMain.DataSet.Eof then
begin
dsMain.DataSet.Last;
btnLast.Enabled := False;
btnNext.Enabled := False;
end;
end;
end;
{最后一笔记录的按钮}
procedure TFMSingle.btnLastClick(Sender: TObject);
begin
inherited;
if dsMain.DataSet.State = dsBrowse then
begin
dsMain.DataSet.Last;
btnLast.Enabled := False;
btnNext.Enabled := False;
end;
end;
{离开}
procedure TFMSingle.btnExitClick(Sender: TObject);
begin
inherited;
if cdsMain.State in [dsInsert,dsEdit] then
if MessageBox(GetActiveWindow(),PChar('您正在编辑数据,是否退出 '+Caption+ '?'),'提示',MB_YESNO+MB_DEFBUTTON2)=IDNO then abort ;
cdsMain.Active :=False ;
close ;
end;
{查询}
procedure TFMSingle.btnQueryClick(Sender: TObject);
begin
if Application.FindComponent('FmSearch')=nil then
FmSearch:=TFmSearch.create(self);
FmSearch.Caption :=Caption+'查询' ;
FmSearch.UTableName :=FTableName;
FmSearch.USQL :=FSubSQL ;
if FmSearch.ShowModal=mrOK then
begin
cdsMain.Active :=false ;
cdsMain.CommandText :=PSQL + FmSearch.USQL ;
cdsMain.Active :=True ;
end;
end;
procedure TFMSingle.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
cdsMain.close ;
end;
procedure TFMSingle.dsMainStateChange(Sender: TObject);
begin
inherited;
SetButton;
end;
procedure TFMSingle.cdsMainBeforeScroll(DataSet: TDataSet);
begin
inherited;
if cdsMain.State in [dsInsert,dsEdit] then exit ;
end;
procedure TFMSingle.cdsMainAfterScroll(DataSet: TDataSet);
begin
inherited;
SetButton;
end;
procedure TFMSingle.cdsMainPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
inherited;
cdsMain.Edit ;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -