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

📄 baseedit.pas

📁 用delphi编写的数据库管理软件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit BaseEdit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, MDIBase, Grids, DBGridEh, StdCtrls, ExtCtrls, ActnList, DB,
  DBClient, Menus, DBCtrlsEh, wwcheckbox, wwdblook, Mask, wwdbedit, DBCtrls,
  FR_DSet, FR_DBSet, FR_Class, MSNPopUp, FR_Desgn;
  
Const
  WM_USER_GETDATA = WM_USER+1024;
  WM_USER_SETFOOTER = WM_USER+8028;

type
  TfrmBaseEdit = class(TfrmMDIBase)
    Panel1: TPanel;
    FormTitle: TLabel;
    Panel3: TPanel;
    PnEdit: TPanel;
    pBtn: TPanel;
    btnExit: TButton;
    Panel4: TPanel;
    btnrefresh: TButton;
    btnsearch: TButton;
    btnprint: TButton;
    btndelete: TButton;
    btnedit: TButton;
    btncopy: TButton;
    btnadd: TButton;
    Button1: TButton;
    grid: TDBGridEh;
    ActionList1: TActionList;
    acNew: TAction;
    acEdit: TAction;
    acDelete: TAction;
    acSave: TAction;
    acCancel: TAction;
    acRefresh: TAction;
    acSearch: TAction;
    acExit: TAction;
    CDSBaseinfo: TClientDataSet;
    DSBaseinfo: TDataSource;
    ActionList2: TActionList;
    acPrev: TAction;
    acPrint: TAction;
    acPSet: TAction;
    acRSet: TAction;
    acExcel: TAction;
    ppmreport: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    frBaseinfo: TfrReport;
    frDBDataSet1: TfrDBDataSet;
    MSNSaveinfo: TMSNPopUp;
    plStandard: TPanel;
    Label5: TLabel;
    plcalendar: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    edtCreauser: TwwDBEdit;
    edtcreadate: TwwDBEdit;
    editno: TwwDBEdit;
    acFieldProperty: TAction;
    popupgrid: TPopupMenu;
    N10: TMenuItem;
    N11: TMenuItem;
    N13: TMenuItem;
    N14: TMenuItem;
    N15: TMenuItem;
    N16: TMenuItem;
    N17: TMenuItem;
    N18: TMenuItem;
    N20: TMenuItem;
    N21: TMenuItem;
    N12: TMenuItem;
    N19: TMenuItem;
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure gridDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
    procedure btnprintClick(Sender: TObject);
    procedure acExitExecute(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure acPrevExecute(Sender: TObject);
    procedure acPrintExecute(Sender: TObject);
    procedure acPSetExecute(Sender: TObject);
    procedure acRSetExecute(Sender: TObject);
    procedure DSBaseinfoStateChange(Sender: TObject);
    procedure DSBaseinfoDataChange(Sender: TObject; Field: TField);
    procedure acNewExecute(Sender: TObject);
    procedure acEditExecute(Sender: TObject);
    procedure acDeleteExecute(Sender: TObject);
    procedure acSaveExecute(Sender: TObject);
    procedure acCancelExecute(Sender: TObject);
    procedure acRefreshExecute(Sender: TObject);
    procedure acSearchExecute(Sender: TObject);
    procedure CDSBaseinfoBeforePost(DataSet: TDataSet);
    procedure acFieldPropertyExecute(Sender: TObject);
    procedure CDSBaseinfoAfterPost(DataSet: TDataSet);
    procedure CDSBaseinfoAfterInsert(DataSet: TDataSet);
    procedure gridTitleBtnClick(Sender: TObject; ACol: Integer;
      Column: TColumnEh);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    function GetGridTitle(TableName:String):Boolean;
    function SetControlField(TableName:string):boolean;
    procedure Getdata(var getdata:Tmessage);Message WM_USER_GETDATA;
    procedure setfooter(var setfooter:Tmessage);Message WM_USER_SETFOOTER;
    procedure generalFieldIndicateDS;
    procedure SetfieldDisplayFormat;    
  protected
    iFunctionID:integer;
    MainTable:string;
    MainView:String;
    KeyField:String;
    ReportName:string;
    FormStatus:String;
    function CheckSave :Boolean;  {检测当前数据是否保存函数}
  public
    { Public declarations }
  end;

var
  frmBaseEdit: TfrmBaseEdit;

implementation

uses Global, DataProcess, Bsearch, Binterface;

{$R *.dfm}

procedure TfrmBaseEdit.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  inherited;
  CanClose:=CheckSave;
  Grid.SumList.Active:=False;
end;

function TfrmBaseEdit.CheckSave: Boolean;
begin
Result:=true;
if CDSBaseInfo.State in [dsInsert,dsEdit] then //判断当前状态
   Case Messagedlg('是否保存当前的修改?',mtWarning,[mbYes,mbNo,mbCancel],0) of
   mrYes:
     begin
     CDSBaseInfo.Post ;
     Result := CDSBaseInfo.State = dsBrowse;  //状态是否为Browse
     end;
   mrNo:
     begin
     CDSBaseInfo.Cancel ;
     Result := CDSBaseInfo.State = dsBrowse;  //状态是否为Browse
     end;
   mrCancel:
     Result := False ;
   End
end;

procedure TfrmBaseEdit.gridDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);
begin
  inherited;
  if CDSBaseInfo.RecNo  mod 2 = 0 then
    begin
      Grid.Canvas.Brush.Color:=$00EAEFED;
      Grid.Canvas.Font.Color:=clBlack;
    end
    else
    begin
      Grid.Canvas.Brush.Color:=clWhite;
      Grid.Canvas.Font.Color:=clBlack;
    end;
  if gdselected in state then
    begin
      grid.Canvas.Brush.Color:=clBackground;
      grid.Canvas.Font.Color:=clWhite;
    end;
  grid.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;

procedure TfrmBaseEdit.btnprintClick(Sender: TObject);
var
  Point:Tpoint;
begin
  inherited;
  Point:=GetScreenPoint(btnprint);
  ppmreport.Popup(point.X,point.Y);
end;

procedure TfrmBaseEdit.acExitExecute(Sender: TObject);
begin
  inherited;
  Close;
end;

procedure TfrmBaseEdit.Getdata(var getdata: Tmessage);
var
  tiao:String;
begin
  tiao:=KeyField+'>='+vartosql(GetMaxid(MainView,KeyField)-20);
  GetSqlData(CDSBaseinfo,MainView,KeyField,tiao);
  GetGridTitle(MainView);
end;

function TfrmBaseEdit.GetGridTitle(TableName: String): Boolean;
var
  i:integer;
  TMPCDS:TclientDataset;
begin
Result:=True;
if TableName='' then
    Exit;
  try
    CDSbaseinfo.DisableControls;
    TMPCDS:=Tclientdataset.Create(nil);
    TMPCDS.FetchOnDemand:=False;
    GetsqlData(TMPCDS,'TTablefield','fid','ftableName='+vartosql(TableName),20);
    if TMPCDS.RecordCount > 0 then
      begin
        for i:=0 to CDSBaseinfo.Fields.Count - 1 do
          begin
           TMPCDS.First;
            while not TMPCDS.Eof do
              begin
                if UpperCase(CDSbaseinfo.fields[i].FieldName)=UpperCase(TMPCDS.FieldByName('fname').AsString) then
                  begin
                    CDSbaseinfo.Fields[i].DisplayLabel:=TMPCDS.fieldbyname('fdesc').AsString;
                    if (TMPCDS.FieldByName('ftype').AsString='int') or
                        (TMPCDS.FieldByName('ftype').AsString='bit') or
                        (TMPCDS.FieldByName('ftype').AsString='datetime') or
                        (TMPCDS.FieldByName('ftype').AsString='numeric') then
                        CDSbaseinfo.Fields[i].DisplayWidth := 12
                        else
                        CDSbaseinfo.Fields[i].DisplayWidth:=Trunc(TMPCDS.fieldbyname('flength').AsInteger/1.5);
                    if not TMPCDS.FieldByName('fisVisible').AsBoolean then
                      begin
                        CDSbaseinfo.Fields[i].Visible:=False;
                      end;
                  end;
                TMPCDS.Next;
              end;
            CDSBaseinfo.Next;
          end;
      end;
  finally
    TMPCDS.Close;
    TMPCDS.Free;
    CDSbaseinfo.EnableControls; 
  end;
  SetfieldDisplayFormat;
  postmessage(handle,WM_USER_SETFOOTER,0,0);
  application.ProcessMessages;
end;

function TfrmBaseEdit.SetControlField(TableName: string): boolean;
var
  I:integer;
  ParentC:Tcomponent;
  TMPCDS:TclientDataset;
begin
  inherited;
  ParentC:=self.FindComponent('DSBaseinfo');
  generalFieldIndicateDS;
  try
    TMPCDS:=Tclientdataset.Create(nil);
    TMPCDS.FetchOnDemand:=False;
    GetsqlData(TMPCDS,'TTablefield','fid','ftableName='+vartosql(TableName),20);
    if TMPCDS.RecordCount > 0 then
      begin
        TMPCDS.First;
        while not TMPCDS.Eof do
          begin
            for i:=0 to pnEdit.ControlCount - 1 do
              begin
                if (pnedit.Controls[i] is TwwDBEdit) then
                  begin
                    if Trim(UpperCase((pnedit.Controls[i] as TwwDBEdit).Hint))=Trim(UpperCase(TMPCDS.fieldbyname('fname').AsString)) then
                      begin
                        (pnEdit.Controls[i] as TwwDBEdit).DataSource:=Tdatasource(ParentC);
                        (pnedit.Controls[i] as TwwDBEdit).DataField:=Trim(TMPCDS.fieldbyname('fname').AsString);
                        (pnedit.Controls[i] as TwwDBEdit).MaxLength:=TMPCDS.fieldbyname('flength').AsInteger;

                      end;
                  end;
                if (pnedit.Controls[i] is TwwDBLookupCombo) then
                  begin
                    if Trim(UpperCase((pnedit.Controls[i] as TwwDBLookupCombo).Hint))=Trim(UpperCase(TMPCDS.fieldbyname('fname').AsString)) then
                      begin
                        (pnEdit.Controls[i] as TwwDBLookupCombo).DataSource:=Tdatasource(ParentC);
                        (pnedit.Controls[i] as TwwDBLookupCombo).DataField:=Trim(TMPCDS.fieldbyname('fname').AsString);
                        (pnedit.Controls[i] as TwwDBLookupCombo).MaxLength:=TMPCDS.fieldbyname('flength').AsInteger;
                      end;
                  end;
                if (pnedit.Controls[i] is TDBmemo) then
                  begin
                    if Trim(UpperCase((pnedit.Controls[i] as TDBmemo).Hint))=Trim(UpperCase(TMPCDS.fieldbyname('fname').AsString)) then
                      begin
                        (pnEdit.Controls[i] as TDBmemo).DataSource:=Tdatasource(ParentC);
                        (pnedit.Controls[i] as TDBmemo).DataField:=Trim(TMPCDS.fieldbyname('fname').AsString);
                        (pnedit.Controls[i] as TDBmemo).MaxLength:=TMPCDS.fieldbyname('flength').AsInteger;
                        (pnedit.Controls[i] as TDBmemo).ScrollBars:=ssVertical;
                      end;
                  end;
                if (pnedit.Controls[i] is TDBDateTimeEditEh) then
                  begin
                    if Trim(UpperCase((pnedit.Controls[i] as TDBDateTimeEditEh).Hint))=Trim(UpperCase(TMPCDS.fieldbyname('fname').AsString)) then
                      begin
                       (pnEdit.Controls[i] as TDBDateTimeEditEh).DataSource:=Tdatasource(ParentC);
                       (pnedit.Controls[i] as TDBDateTimeEditEh).DataField:=Trim(TMPCDS.fieldbyname('fname').AsString);
                      end;
                  end;
                if (pnedit.Controls[i] is TwwCheckBox) then
                  begin
                    if Trim(UpperCase((pnedit.Controls[i] as TwwCheckBox).Hint))=Trim(UpperCase(TMPCDS.fieldbyname('fname').AsString)) then
                      begin
                       (pnEdit.Controls[i] as TwwCheckBox).DataSource:=Tdatasource(ParentC);
                       (pnedit.Controls[i] as TwwCheckBox).DataField:=Trim(TMPCDS.fieldbyname('fname').AsString);
                      end;
                  end;
              end;
            TMPCDS.Next;
          end;
      end;
  finally
    TMPCDS.Close;
    TMPCDS.Free;
  end;
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -