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

📄 comjbzl.pas

📁 delphi作得信息业进销存源码.功能全面,运行稳定.
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit ComJbzl;

interface

uses
	Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
	Menus, ExtCtrls, DBCtrls, ComCtrls, ToolWin, ImgList, Grids, DBGrids,
	Clipbrd, StdCtrls ,db, QuickRpt,dbtables,dbclient,comedit, ActnList,
	mconnect, Common, iniFiles, Variants;

type
  TfrmComJbzl = class(TForm)
    DBGrid1: TDBGrid;
    Panel1: TPanel;
    Label1: TLabel;
		Image2: TImage;
    MainMenu1: TMainMenu;
    smnFile: TMenuItem;
    smnPreview: TMenuItem;
    smnPrint: TMenuItem;
    smnPrinterSetup: TMenuItem;
    N1: TMenuItem;
    smnExit: TMenuItem;
    smnEdit: TMenuItem;
    smnNew: TMenuItem;
    smnModify: TMenuItem;
    smnDel: TMenuItem;
		smnRefresh: TMenuItem;
    N2: TMenuItem;
    smnSearch: TMenuItem;
    smnAll: TMenuItem;
		PopupMenu1: TPopupMenu;
    pmnNew: TMenuItem;
    pmnModify: TMenuItem;
		pmnDel: TMenuItem;
    pmnRefresh: TMenuItem;
    smnTotal: TMenuItem;
    pmnTotal: TMenuItem;
    Image1: TImage;
    ActionList1: TActionList;
    aPreview: TAction;
    aPrint: TAction;
    aNew: TAction;
    aModify: TAction;
    aDel: TAction;
    aTotal: TAction;
		aRefresh: TAction;
    aSearch: TAction;
    aAll: TAction;
    aPrinterSetup: TAction;
    aExit: TAction;
    aSetColumn: TAction;
    N9: TMenuItem;
		mnuSetColumn: TMenuItem;
		aSetSort: TAction;
    mnuSetSort: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    pmnSetColumn: TMenuItem;
    pmnSetSort: TMenuItem;
    pmnSearch: TMenuItem;
    pmnAll: TMenuItem;
    labSort: TLabel;
    ControlBar1: TControlBar;
    ToolBar2: TToolBar;
		DBNavigator1: TDBNavigator;
    ToolBar1: TToolBar;
    btnPreview: TToolButton;
    btnPrint: TToolButton;
    ToolButton3: TToolButton;
    btnNew: TToolButton;
    btnModify: TToolButton;
		btnDel: TToolButton;
    ToolButton10: TToolButton;
    btnTotal: TToolButton;
    btnSearch: TToolButton;
    btnAll: TToolButton;
		labSearch: TLabel;
    ToolBar3: TToolBar;
    ToolButton15: TToolButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);virtual;
    procedure SetButton;virtual;
    procedure LoadEditForm(strState:string);virtual;
    procedure LoadPrintForm;virtual;
    procedure FormCreate(Sender: TObject);virtual;
    procedure dsOnNewRecord(DataSet: TDataSet);virtual;
    procedure dsAfterScroll(DataSet: TDataSet);virtual;
    procedure sDataChange(Sender: TObject; Field: TField);virtual;
    procedure OpenDataSet;virtual;
    procedure FormShow(Sender: TObject);virtual;
    procedure aPreviewExecute(Sender: TObject);virtual;
		procedure aPrintExecute(Sender: TObject);virtual;
		procedure aPrinterSetupExecute(Sender: TObject);virtual;
    procedure aExitExecute(Sender: TObject);virtual;
    procedure aNewExecute(Sender: TObject);virtual;
    procedure aModifyExecute(Sender: TObject);virtual;
    procedure aDelExecute(Sender: TObject);virtual;
    procedure aTotalExecute(Sender: TObject);virtual;
		procedure aRefreshExecute(Sender: TObject);virtual;
		procedure aSearchExecute(Sender: TObject);virtual;
		procedure aAllExecute(Sender: TObject);virtual;
		procedure FormActivate(Sender: TObject);virtual;
		procedure aSetColumnExecute(Sender: TObject);virtual;
		procedure aSetSortExecute(Sender: TObject);virtual;
		procedure FormResize(Sender: TObject);virtual;
		procedure FormKeyDown(Sender: TObject; var Key: Word;
			Shift: TShiftState);virtual;
	private
		{ Private declarations }
		blnPreview: boolean;
		cdsEve :cdsEventsArray;
		procedure SaveColumnQuery;
		function GetColumnInfo(FileName: string): string;
	public
		{ Public declarations }
		dsJbzl: Tclientdataset;
		rpt1: TQuickRep;
    ReportName: string;
		blnMyRpt: boolean;
		blnStopSetColumn: boolean;
		frmEdit: TfrmComEdit;
		strAutoScale: string;
    strSql: string;
		strTotalFields: string;
		strDetailTables: string;
		strDetailWheres: string;
	end;

var
	frmComJbzl: TfrmComJbzl;

implementation

uses
	Main, Filter, Dm, SetColumn, SetSort, SetPrint;

{$R *.DFM}

//Form.Create
procedure TfrmComJbzl.FormCreate(Sender: TObject);
begin
	screen.Cursor := crHourGlass;
end;

//Form.Show
procedure TfrmComJbzl.FormShow(Sender: TObject);
var
  i, j: integer;
  intWid: integer;
	tb: TToolButton;
  strFileName: string;
  c: TComponent;
begin
  //Log
  with Data.Tmp do
  begin
    Close;
    CommandText := 'insert into AppLog (uName, cName, CZ, RQ, SJ) ' +
      'values (''' + pstrUserName + ''', ' +
      '''' + pstrComputerName + ''', ' +
      '''' + self.Caption + ''', ' +
      '''' + FormatDateTime('yyyy-mm-dd', Date) + ''', ' +
      '''' + FormatDateTime('hh:nn', Time) + ''')';
    Execute;
  end;
  //Add ToolButton
  tb := TToolButton.Create(self);
  tb.Caption := self.Caption;
  tb.Hint := self.Name;
  tb.OnClick := frmMain.ToolButtonClick;
  tb.Parent := frmMain.tlbAForm;
  //Popedom
  if UpperCase(pstrUserCode) <> 'SYS' then
    with Data.Tmpl do
    begin
      Close;
      CommandText := 'select * from AppGroupAction ' +
        'where gName = ''' + pstrUserGroup + ''' and ' +
        'fName = ''' + self.Name + '''';
      Open;
      while not Eof do
      begin
        c := self.FindComponent(FieldByName('aName').AsString);
        if c <> nil then
        begin
          c.Tag := 1;
          if c is TCustomAction then
            TCustomAction(c).Enabled := false;
          if c is TControl then
            TControl(c).Enabled := false;
        end;
        Next;
      end;
    end;
  //DBGrid
  for i := 0 to self.ComponentCount - 1 do
    if (self.Components[i] is TDBGrid) then
    begin
      //Width
      with TDBGrid(self.Components[i]) do
      begin
        intWid := 0;
        for j := 0 to Columns.Count - 1 do
        begin
					Columns[j].Title.Alignment := taCenter;
          if Columns[j].Visible then
						intWid := intWid + Columns[j].Width;
        end;
        if intWid < Screen.Width Div 2 then
          for j := 0 to Columns.Count - 1 do
            Columns[j].Width := Trunc(Columns[j].Width * 1.5);
        //Auto Scale
        if (Pos(UpperCase(Name), UpperCase(strAutoScale)) > 0) then
          for j := 0 to Columns.Count - 1 do
            Columns[j].Width := Round(Columns[j].Width * (790 - GetSystemMetrics(SM_CXVSCROLL)) / intWid) - 1;
      end;
      //Save DBGrid1.Columns
      strFileName := ExtractFilePath(Application.ExeName) + 'Column\' +
        FormatFloat('0000', pintUserID) +
        self.Name + TDBGrid(self.Components[i]).Name;
      TDBGrid(self.Components[i]).Columns.SaveToFile(strFileName + '.int');
      if not blnStopSetColumn and (self.Components[i].Tag = 0) and
        (UpperCase(pstrUserCode) <> 'SYS') then
      begin
        //Set DBGrid1.Columns
        if FileExists(strFileName + '.cur') then
        begin
          strFileName := ExtractFilePath(Application.ExeName) + 'Column\' +
						FormatFloat('0000', pintUserID) +
            self.Name + TDBGrid(self.Components[i]).Name;
					TDBGrid(self.Components[i]).Columns.LoadFromFile(strFileName + '.cur');
        end
        else
          CopyFile(PChar(strFileName + '.int'), PChar(strFileName + '.cur'), True);
      end;
    end;
 //
	Label1.Caption := self.Caption;
	dsJbzl := TClientDataSet(DBGrid1.DataSource.DataSet);
	cdsEve := SaveCDSEvents(dsJbzl);
	dsJbzl.OnNewRecord := dsOnNewRecord;
	dsJbzl.AfterScroll := dsAfterScroll;
	DBGrid1.DataSource.OnDataChange := sDataChange;
	DBNavigator1.DataSource := DBGrid1.DataSource;
//  TDcomConnection(Data.FindComponent(dsJbzl.RemoteServer.Name)).Appserver.SetFilter(VarArrayOf([dsJbzl.Name,'']));
  TDcomConnection(Data.FindComponent(dsJbzl.RemoteServer.Name)).Appserver.SetFilter(VarArrayOf([Copy(dsJbzl.ProviderName, 2, Length(dsJbzl.ProviderName) - 1), '']));
  OpenDataSet;
  //Set Sort
  with CurDs do
  begin
    Close;
    CommandText := 'select * from AppSort ' +
      'where uID = ' + IntToStr(pintUserId) + ' and ' +
      'FormCaption = ''' + self.Name + DBGrid1.Name + '''';
    Open;
    if not IsEmpty then
    begin
      labSort.Caption := '排序方式: ' + FieldByName('iCaption').AsString;
			frmSetSort.AddIndexDef(TClientDataSet(DBGrid1.DataSource.DataSet),
        FieldByName('iFields').AsString,
				FieldByName('iDescFields').AsString);
		end
		else
		begin
			labSort.Caption := '排序方式: .';
//			frmSetSort.AddIndexDef(TClientDataSet(DBGrid1.DataSource.DataSet), '', '')
		end;
	end;
	screen.Cursor := crDefault;
end;

procedure TfrmComJbzl.FormActivate(Sender: TObject);
var
	i: integer;
begin
  ControlBar1.Visible := frmMain.mnuToolBar.Checked;
  for i := 0 to frmMain.tlbAForm.ButtonCount - 1 do
		if frmMain.tlbAForm.Buttons[i].Hint <> self.Name then
      frmMain.tlbAForm.Buttons[i].ImageIndex := 0
    else
      frmMain.tlbAForm.Buttons[i].ImageIndex := 1;
  //dsJbzl.CommandText
  if dsJbzl.CommandText <> strSql then
    OpenDataSet
  else
    dsJbzl.Refresh;
end;

//Form.Close
procedure TfrmComJbzl.FormClose(Sender: TObject; var Action: TCloseAction);
begin
	SaveColumnQuery;
	RestoreCDSEvents(dsJbzl, cdsEve);
  DBGrid1.DataSource.OnDataChange := nil;
  dsJbzl.Close;
//  TDcomConnection(Data.FindComponent(dsJbzl.RemoteServer.Name)).Appserver.SetFilter(VarArrayOf([dsJbzl.Name,'']));
  TDcomConnection(Data.FindComponent(dsJbzl.RemoteServer.Name)).Appserver.SetFilter(VarArrayOf([Copy(dsJbzl.ProviderName, 2, Length(dsJbzl.ProviderName) - 1), '']));
  Action := caFree;
end;

//Form.Resize
procedure TfrmComJbzl.FormResize(Sender: TObject);
begin
  ToolBar2.Left := ControlBar1.Left + ControlBar1.Width - ToolBar2.Width - ToolBar3.Width;
  ToolBar3.Left := ControlBar1.Left + ControlBar1.Width - ToolBar3.Width;
end;

//aPreview.Execute
procedure TfrmComJbzl.aPreviewExecute(Sender: TObject);
var
  bmJbzl: TBookMark;
begin
  screen.Cursor := crHourGlass;
  blnPreview := true;
  aExit.ShortCut := 0;
  ReportName := '';
  with dsJbzl do
  begin
    bmJbzl := GetBookmark;
    DisableControls;
    LoadPrintForm;
    if rpt1 <> nil then
    begin
      rpt1.Preview;
      rpt1.Free;
      rpt1 := nil;
    end;
    try
      GotoBookmark(bmJbzl);
    finally
      FreeBookmark(bmJbzl);
      EnableControls;
    end;
  end;
  aExit.ShortCut := VK_ESCAPE;
  screen.Cursor := crDefault;
end;

//aPrint.Execute
procedure TfrmComJbzl.aPrintExecute(Sender: TObject);
var

⌨️ 快捷键说明

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