⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mdibaseinfo.pas

📁 在打沙场用的最简单
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -