📄 mdibaseinfo.~pas
字号:
unit MDIbaseinfo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MDIbase, Buttons, StdCtrls, ExtCtrls, Grids, DBGridEh, ImgList,
ActnList, Mask, wwdbedit, wwdbdatetimepicker, DB, DBClient, ComCtrls,
comobj, Excel2000, Menus, FR_Class, FR_Desgn, FR_DSet, FR_DBSet, ADODB;
const
WM_USER_GetData = WM_USER+1024;
type
TfrmMDIbaseinfo = class(TfrmMDIbase)
paneltitle: TPanel;
formTitle: TLabel;
spbtnprint: TSpeedButton;
spbtnprior: TSpeedButton;
spbtnnext: TSpeedButton;
paneledit: TPanel;
panelbutton: TPanel;
spbtnadd: TSpeedButton;
spbtnmodify: TSpeedButton;
spbtndelete: TSpeedButton;
spbtnsave: TSpeedButton;
spbtncancel: TSpeedButton;
ActionList: TActionList;
acprint: TAction;
acprior: TAction;
acnext: TAction;
acadd: TAction;
acmodify: TAction;
acdelete: TAction;
acsave: TAction;
accancel: TAction;
acsearch: TAction;
ToolButtonImages: TImageList;
SpeedButton1: TSpeedButton;
Label1: TLabel;
Label2: TLabel;
wwDBDateTimePicker1: TwwDBDateTimePicker;
wwDBEdit1: TwwDBEdit;
CDSmaster: TClientDataSet;
dsMaster: TDataSource;
CDSsub: TClientDataSet;
dsSub: TDataSource;
billno: TwwDBEdit;
Label4: TLabel;
Label3: TLabel;
refno: TwwDBEdit;
Grid: TDBGridEh;
CDSselectsub: TClientDataSet;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
aclineadd: TAction;
aclinedelete: TAction;
frDSMaster: TfrDBDataSet;
frDSsub: TfrDBDataSet;
frMD: TfrReport;
popupprint: TPopupMenu;
ActionListprint: TActionList;
p01: TAction;
p02: TAction;
p03: TAction;
p04: TAction;
p05: TAction;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
SpeedButton4: TSpeedButton;
acload: TAction;
N12: TMenuItem;
p06: TAction;
bb: TwwDBEdit;
Label17: TLabel;
procedure FormShow(Sender: TObject);
procedure CDSmasterAfterOpen(DataSet: TDataSet);
procedure FormCreate(Sender: TObject);
procedure acpriorExecute(Sender: TObject);
procedure acnextExecute(Sender: TObject);
procedure acaddExecute(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure acsaveExecute(Sender: TObject);
procedure accancelExecute(Sender: TObject);
procedure CDSmasterBeforeCancel(DataSet: TDataSet);
procedure CDSmasterAfterPost(DataSet: TDataSet);
procedure CDSmasterBeforeInsert(DataSet: TDataSet);
procedure CDSmasterAfterScroll(DataSet: TDataSet);
procedure GridGetCellParams(Sender: TObject; Column: TColumnEh;
AFont: TFont; var Background: TColor; State: TGridDrawState);
procedure acmodifyExecute(Sender: TObject);
procedure acdeleteExecute(Sender: TObject);
procedure acsearchExecute(Sender: TObject);
procedure aclineaddExecute(Sender: TObject);
procedure aclinedeleteExecute(Sender: TObject);
procedure acprintExecute(Sender: TObject);
procedure p01Execute(Sender: TObject);
procedure p02Execute(Sender: TObject);
procedure p03Execute(Sender: TObject);
procedure p04Execute(Sender: TObject);
procedure frMDUserFunction(const Name: String; p1, p2, p3: Variant;
var Val: Variant);
procedure p05Execute(Sender: TObject);
procedure GridKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure GridKeyPress(Sender: TObject; var Key: Char);
procedure GridColExit(Sender: TObject);
procedure CDSsubNewRecord(DataSet: TDataSet);
private
formmode:integer;
procedure Getdata(var Getdata:Tmessage);message WM_USER_GetData;
function checkSave:boolean;
procedure controlEnabled;
procedure controlDisabled;
procedure saveall;
procedure clearall;
{ Private declarations }
protected
innumber:integer;
iBilltypeID:integer;
Titlecaption:String;
MainTable:string;
MainView:string;
SubTable:string;
SubView:string;
keyfield:String;
frname:string;
Searchfrm:Tformclass;
editstate:integer;
function selectsub():integer;
public
{ Public declarations }
end;
var
frmMDIbaseinfo: TfrmMDIbaseinfo;
implementation
uses common, Global, uitem_f;
{$R *.dfm}
procedure TfrmMDIbaseinfo.FormShow(Sender: TObject);
begin
inherited;
Formtitle.Caption:=TitleCaption;
postmessage(Handle,WM_USER_GetData,0,0);
end;
procedure TfrmMDIbaseinfo.Getdata(var Getdata: Tmessage);
begin
GetAdddata(CDSMaster,Mainview,keyfield,20);
Application.ProcessMessages;
end;
procedure TfrmMDIbaseinfo.CDSmasterAfterOpen(DataSet: TDataSet);
var
Cid:integer;
begin
inherited;
Cid:=CDSmaster.fieldbyname('fid').AsInteger;
Getsqldata(CDSSub,Subview,keyField,'fResid = '+inttostr(Cid),10);
end;
function TfrmMDIbaseinfo.checkSave: boolean;
begin
Result:=True;
if CDSmaster.State in [dsInsert,dsEdit] then
case MessageDlg('是否保存当前数据 ? ',mtWarning,[MByes,MBno,MBcancel],0) of
MRyes:
begin
CDSmaster.Post;
Result:=CDSmaster.State = dsBrowse;
end;
MRno:
begin
CDSmaster.Cancel;
Result:=CDSmaster.State = dsBrowse;
end;
MRcancel:
begin
Result:=False;
end;
end;
end;
procedure TfrmMDIbaseinfo.controlDisabled;
begin
acadd.Enabled:=bcanadd;
acmodify.Enabled:=bcanmodify;
acdelete.Enabled:=bcandelete;
acprior.Enabled:=True;
acnext.Enabled:=True;
acsearch.Enabled:=True;
acprint.Enabled:=bcanprint;
acsave.Enabled:=False;
accancel.Enabled:=False;
aclineadd.Enabled:=acsave.Enabled;
aclinedelete.Enabled:=acsave.Enabled;
acload.Enabled:=acsave.Enabled;
end;
procedure TfrmMDIbaseinfo.controlEnabled;
begin
acadd.Enabled:=False;
acmodify.Enabled:=False;
acdelete.Enabled:=False;
acprior.Enabled:=False;
acnext.Enabled:=False;
acsearch.Enabled:=False;
acprint.Enabled:=False;
acsave.Enabled:=True;
accancel.Enabled:=True;
aclineadd.Enabled:=acsave.Enabled;
aclinedelete.Enabled:=acsave.Enabled;
acload.Enabled:=acsave.Enabled;
end;
procedure TfrmMDIbaseinfo.FormCreate(Sender: TObject);
begin
inherited;
controlDisabled;
formmode:=0;
Innumber:=0;
end;
procedure TfrmMDIbaseinfo.acpriorExecute(Sender: TObject);
begin
inherited;
CDSmaster.Prior;
end;
procedure TfrmMDIbaseinfo.acnextExecute(Sender: TObject);
begin
inherited;
CDSmaster.Next;
end;
procedure TfrmMDIbaseinfo.acaddExecute(Sender: TObject);
begin
inherited;
CDSmaster.Append;
formmode:=1;
Innumber:=Getinnumber(iBilltypeid);
controlEnabled;
// billno.SetFocus;
editstate:=1;
end;
procedure TfrmMDIbaseinfo.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
inherited;
CanClose:=CheckSave;
Grid.SumList.Active:=False;
end;
procedure TfrmMDIbaseinfo.clearall;
begin
if CDSmaster.State in [dsInsert,dsEdit] then
begin
CDSMaster.Cancel;
end;
controlDisabled;
formmode:=0;
end;
procedure TfrmMDIbaseinfo.saveall;
begin
if CDSmaster.State in [dsInsert,dsEdit] then
begin
CDSMaster.Post;
if CDSmaster.ChangeCount>0 then
begin
applyupdata(CDSMaster,Maintable,keyfield);
CDSMaster.MergeChangeLog;
end;
end;
controlDisabled;;
formmode:=0;
end;
procedure TfrmMDIbaseinfo.acsaveExecute(Sender: TObject);
begin
inherited;
CDSMaster.FieldByName('fresid').AsInteger:=Innumber;
CDSMaster.FieldByName('frefno').AsString:=Getoutnumber(iBilltypeid);
saveall;
end;
procedure TfrmMDIbaseinfo.accancelExecute(Sender: TObject);
begin
inherited;
clearall;
end;
function TfrmMDIbaseinfo.selectsub: integer;
begin
if formmode=0 then
exit
else
begin
CDSsub.Edit;
itemid:=0;
if not assigned(frmitem_f) then
frmitem_f:=Tfrmitem_f.Create(application);
frmitem_f.ShowModal;
end;
if itemid>0 then
begin
GetsqlData(CDSselectsub,'Vitem','fid','fid='+vartosql(itemid),1);
if CDSselectsub.RecordCount > 0 then
begin
CDSsub['fitemid']:=itemid;
CDSsub['fcode']:=CDSselectsub['fcode'];
CDSsub['fname']:=CDSselectsub['fname'];
CDSsub['ftype'] :=CDSselectsub['ftype'];
CDSsub['funit']:=CDSselectsub['funit'];
// CDSsub['color']:=CDSselectsub['color'];
// CDSsub['colorno']:=CDSselectsub['colorno'];
// CDSsub['zs']:=CDSselectsub['zs'];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -