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

📄 untcomputermanager.pas

📁 销售软件
💻 PAS
字号:
(*===========================================================*)
(*                                                           *)
(*              Jerk Computer Assembly Manager               *)
(*                                                           *)
(*                    程序作者:杨芹勍                       *)
(*          武汉科技大学 理学院 信息与计算科学031班          *)
(*                  武汉科技大学 莘特工作室                  *)
(*                                                           *)
(*              IDE:Borland Delphi 2006 Update 2            *)
(*                 第三方控件:Raize 4.03                    *)
(*             数据库:Microsoft SQL Server 2000             *)
(*            数据库访问引擎:原生ADO(ADODB_TLB)           *)
(*           数据库管理引擎:JERK DBMANAGER ALPHA            *)
(*                                                           *)
(*           此软件及源代码归 JERK SYSTEM 版权所有           *)
(*            (C)Copyright 2002-2006 Jerk System.            *)
(*                                                           *)
(*===========================================================*)

unit untComputerManager;

interface

uses
  Windows,
  Messages,
  SysUtils,
  Variants,
  Classes,
  Graphics,
  Controls,
  Forms,
  Dialogs,
  ComCtrls,
  ExtCtrls,
  Menus,
  StdCtrls,
  StrUtils,
  Mask,
  ADODB_TLB,
  RzButton,
  RzBtnEdt,
  RzCmboBx,
  RzCommon,
  RzEdit,
  RzListVw,
  RzRadChk,
  RzSplit,
  RzPanel,
  RzTabs,
  ExcelXP,
  JSDBListView,
  JCAMConsts,
  JCAMUtils,
  JCAMDialogForm,
  JCAMManagerForm,
  JCAMTableViewEditor,
  JCAMTableExportToExcel;

type
  TfrmComputerManager = class( TfrmJCAMManagerForm )
    tabComputerAccessory: TRzTabControl;
    pnlOutAccessoryEditor: TRzPanel;
    RzSizePanel2: TRzSizePanel;
    dvwOutAccessory: TJSDBListView;
    Label1: TLabel;
    edtComputerName: TRzEdit;
    Label2: TLabel;
    edtClientName: TRzEdit;
    Label3: TLabel;
    edtMakeDate: TRzDateTimeEdit;
    procedure tabComputerAccessoryChange( Sender: TObject );
    procedure FormDestroy( Sender: TObject );
    procedure dvwInfoListSelectItem( Sender: TObject; Item: TListItem;
      Selected: Boolean );
    procedure pCButtonAddClick( Sender: TObject );
    procedure pCButtonEditClick( Sender: TObject );
    procedure pCButtonSaveClick( Sender: TObject );
    procedure pCButtonCancelClick( Sender: TObject );
    procedure pOAButtonAddClick( Sender: TObject );
    procedure pOAButtonEditClick( Sender: TObject );
    procedure pOAButtonSaveClick( Sender: TObject );
    procedure pOAButtonCancelClick( Sender: TObject );
    procedure miEDAllItemsClick( Sender: TObject );
    procedure miEDSelectedItemsClick( Sender: TObject );
    procedure btnStatInfoClick( Sender: TObject );
  private
    m_frmOutAccessoryEditor: TfrmTableViewEditorForm;
    procedure pCellsAdding( Sender: TObject; ews: TExcelWorksheet;
      varKeyFieldValue: Variant );
    procedure pBlankOutAccessory;
    procedure pLockInterface;
    procedure pUnLockInterface;
    procedure pLoadComputerOutAccessory( sComputerName: string ); overload;
    procedure pLoadComputerOutAccessory( nItemIdx: Integer ); overload;
  public
    procedure StartSurf; override;
    property TableViewEditorForm;
  end;

var
  frmComputerManager: TfrmComputerManager;

implementation

{$R *.dfm}

uses
  untStatInfo,
  untTOutAccessory,
  untTField,
  untTComputer,
  untInfoSearch;

procedure TfrmComputerManager.btnStatInfoClick( Sender: TObject );
var
  tf: TTableField;
  tc: TTableComputer;
begin
  { 整机管理的统计信息 }

  if frmStatInfo <> nil then
    FreeAndNil( frmStatInfo );
  tf := TTableField.Create;
  tf.Connection := Self.Connection;
  tc := TTableComputer.Create;
  tc.Connection := Self.Connection;
  frmStatInfo := TfrmStatInfo.Create( Self );
  with frmStatInfo do
  begin
    with StatListView.Items.Add do
    begin
      tf.FieldName := FN_TOTALINPRICES;
      Caption := tf.FieldChs;
      ImageIndex := dvwInfoList.DefaultImageIndex;
      SubItems.Add( IntToStr( tc.TotalInPricesByCondition( InfoSearchCondition )
        ) );
    end;
    with StatListView.Items.Add do
    begin
      tf.FieldName := FN_TOTALOUTPRICES;
      Caption := tf.FieldChs;
      ImageIndex := dvwInfoList.DefaultImageIndex;
      SubItems.Add( IntToStr( tc.TotalOutPricesByCondition( InfoSearchCondition )
        ) );
    end;
    with StatListView.Items.Add do
    begin
      tf.FieldName := FN_TOTALPROFIT;
      Caption := tf.FieldChs;
      ImageIndex := dvwInfoList.DefaultImageIndex;
      SubItems.Add( IntToStr( tc.TotalProfitByCondition( InfoSearchCondition )
        ) );
    end;
    ShowModal;
  end;
  FreeAndNil( tc );
  FreeAndNil( tf );
  FreeAndNil( frmStatInfo );
end;

procedure TfrmComputerManager.dvwInfoListSelectItem( Sender: TObject;
  Item: TListItem; Selected: Boolean );
begin
  inherited;

  case dvwInfoList.SelCount of
    1: pLoadComputerOutAccessory( Item.Index );
  else
    pBlankOutAccessory;
  end;
end;

procedure TfrmComputerManager.FormDestroy( Sender: TObject );
begin
  { 窗体卸载 }

  inherited;

  if m_frmOutAccessoryEditor <> nil then
    FreeAndNil( m_frmOutAccessoryEditor );
end;

procedure TfrmComputerManager.miEDAllItemsClick( Sender: TObject );
var
  tete: TJCAMTableExportToExcel;
begin
  { 导出所有数据 }

  tete := TJCAMTableExportToExcel.Create;
  with tete do
  begin
    Connection := Self.Connection;
    DBListView := dvwInfoList;
    TableViewName := Self.TableViewName;
    KeyFieldName := Self.KeyFieldName;
    Condition := InfoSearchCondition;
    OnCellsAdding := pCellsAdding;
    ConnectExcel;
    ExportTableData( ExcelWorkSheet );
  end;
  FreeAndNil( tete );
end;

procedure TfrmComputerManager.miEDSelectedItemsClick( Sender: TObject );
var
  tete: TJCAMTableExportToExcel;
begin
  { 导出选中的数据 }

  tete := TJCAMTableExportToExcel.Create;
  with tete do
  begin
    Connection := Self.Connection;
    DBListView := dvwInfoList;
    TableViewName := Self.TableViewName;
    KeyFieldName := Self.KeyFieldName;
    Condition := InfoSearchCondition;
    OnCellsAdding := pCellsAdding;
    ConnectExcel;
    ExportSelected := esExportSelected;
    ExportTableData( ExcelWorkSheet );
  end;
  FreeAndNil( tete );
end;

procedure TfrmComputerManager.pBlankOutAccessory;
begin
  { 清空列表等 }

  with m_frmOutAccessoryEditor do
  begin
    // TODO: 设置按钮状态
    ActionAdd.Enabled := False;
    ActionDelete.Enabled := False;
    ActionEdit.Enabled := False;
    ActionSave.Enabled := False;
    ActionCancel.Enabled := False;
    BlankAllInfoList;
  end;
end;

procedure TfrmComputerManager.pCButtonAddClick( Sender: TObject );
begin
  pLockInterface;
end;

procedure TfrmComputerManager.pCButtonCancelClick( Sender: TObject );
begin
  pUnLockInterface;
end;

procedure TfrmComputerManager.pCButtonEditClick( Sender: TObject );
begin
  pLockInterface;
end;

procedure TfrmComputerManager.pCButtonSaveClick( Sender: TObject );
begin
  pUnLockInterface;
end;

procedure TfrmComputerManager.pCellsAdding( Sender: TObject; ews:
  TExcelWorksheet; varKeyFieldValue: Variant );
var
  tete: TJCAMTableExportToExcel;
  tc: TTableComputer;
begin
  tete := TJCAMTableExportToExcel.Create;
  with tete do
  begin
    Connection := Self.Connection;
    DBListView := dvwOutAccessory;
    TableViewName := VN_OUTACCESSORY;
    KeyFieldName := KFN_OUTACCESSORY;

    // TODO: 根据ComputerID获取ComputerName
    tc := TTableComputer.Create;
    with tc do
    begin
      Connection := Self.Connection;

      // TODO: 设置整机代号条件
      if varKeyFieldValue <> Null then
      begin
        ComputerID := varKeyFieldValue;
        Condition := '[' + FN_COMPUTERNAME + ']=''' + ComputerName + '''';
      end;
    end;
    FreeAndNil( tc );

    ExportTableData( ews );
  end;
  FreeAndNil( tete );
end;

procedure TfrmComputerManager.pLoadComputerOutAccessory( nItemIdx: Integer );
var
  tc: TTableComputer;
begin
  // TODO: 获取当前Item对应的ID,然后获取整机代号
  tc := TTableComputer.Create;
  with tc do
  begin
    Connection := Self.Connection;
    ComputerID := dvwInfoList.ItemKeyFieldValue( nItemIdx );
    pLoadComputerOutAccessory( ComputerName );
  end;
  FreeAndNil( tc );
end;

procedure TfrmComputerManager.pLockInterface;
begin
  { 在添加/编辑信息时锁定用户界面 }

  dvwInfoList.Enabled := False;
  dvwOutAccessory.Enabled := False;
  tabComputerAccessory.Enabled := False;
end;

procedure TfrmComputerManager.pOAButtonAddClick( Sender: TObject );
var
  cmp: TComponent;
  pfp: PFieldProp;
  tc: TTableComputer;
  n: Integer;
begin
  { 销售配件添加按钮 }

  if dvwInfoList.Selected <> nil then
    with m_frmOutAccessoryEditor.ScrollBox do
      for n := 0 to ComponentCount - 1 do
      begin
        cmp := Components[ n ];
        if ( TControl( cmp ).Enabled ) and ( cmp is TRzComboBox ) then
        begin
          pfp := PFieldProp( Pointer( TControl( cmp ).Tag ) );

          // TODO: 寻找对应整机代号字段的输入框
          if pfp^.FieldName = FN_COMPUTERNAME then
          begin
            tc := TTableComputer.Create;
            with tc do
            begin
              Connection := Self.Connection;
              ComputerID := dvwInfoList.ItemKeyFieldValue(
                dvwInfoList.Selected.Index );
              TRzComboBox( cmp ).Text := ComputerName;
            end;
            FreeAndNil( tc );
            Break;
          end;
        end;
      end;

  pLockInterface;
end;

procedure TfrmComputerManager.pOAButtonCancelClick( Sender: TObject );
begin
  pUnLockInterface;
end;

procedure TfrmComputerManager.pOAButtonEditClick( Sender: TObject );
begin
  pLockInterface;
end;

procedure TfrmComputerManager.pOAButtonSaveClick( Sender: TObject );
begin
  pUnLockInterface;
end;

procedure TfrmComputerManager.pUnLockInterface;
begin
  { 解除锁定用户界面 }

  dvwInfoList.Enabled := True;
  dvwOutAccessory.Enabled := True;
  tabComputerAccessory.Enabled := True;
end;

procedure TfrmComputerManager.StartSurf;
begin
  inherited;

  // TODO: 设置内部编辑按钮的外部事件
  if TableViewEditorForm <> nil then
    with TableViewEditorForm do
    begin
      OnButtonAddClick := pCButtonAddClick;
      OnButtonSaveClick := pCButtonSaveClick;
      OnButtonEditCLick := pCButtonEditClick;
      OnButtonCancelClick := pCButtonCancelClick;
    end;

  // TODO: 设置快速填充的编辑框信息
  SetCustomEditTag( edtComputerName, FN_COMPUTERNAME );
  SetCustomEditTag( edtClientName, FN_CLIENTNAME );
  SetCustomEditTag( edtMakeDate, FN_MAKEDATE );
end;

procedure TfrmComputerManager.pLoadComputerOutAccessory( sComputerName: string
  );
var
  tc: TTableComputer;
begin
  { 载入指定整机的配件 }

  if sComputerName <> EmptyStr then
  begin
    // TODO: 获取相关信息载入窗体
    tc := TTableComputer.Create;
    tc.Connection := Connection;

    if m_frmOutAccessoryEditor = nil then
    begin
      m_frmOutAccessoryEditor := TfrmTableViewEditorForm.Create( Self );
      with m_frmOutAccessoryEditor do
      begin
        Connection := Self.Connection;
        Parent := pnlOutAccessoryEditor;
        DBListView := dvwOutAccessory;
        TableViewName := VN_OUTACCESSORY;
        KeyFieldName := KFN_OUTACCESSORY;
        SaveInfoProcName := PN_SAVEOUTACCESSORYINFO;
        DeleteInfoProcName := PN_DELETEOUTACCESSORYINFO;

        OnButtonAddClick := pOAButtonAddClick;
        OnButtonSaveClick := pOAButtonSaveClick;
        OnButtonEditCLick := pOAButtonEditClick;
        OnButtonCancelClick := pOAButtonCancelClick;

        Show;
      end;
    end;

    with m_frmOutAccessoryEditor do
    begin
      // TODO: 设置按钮状态
      ActionAdd.Enabled := True and UserCanModify;
      ActionDelete.Enabled := True and UserCanModify;
      ActionEdit.Enabled := False;
      ActionSave.Enabled := False;
      ActionCancel.Enabled := False;
      LoadCondition := ' WHERE [' + FN_COMPUTERNAME + ']=''' + sComputerName +
        '''';
      StartSurf( dvwOutAccessory.Columns.Count = 0 );
    end;
    FreeAndNil( tc );
  end;
end;

procedure TfrmComputerManager.tabComputerAccessoryChange( Sender: TObject );
begin
  inherited;

  case tabComputerAccessory.TabIndex of
    0:
      begin
        pnlInfoEditor.Visible := True;
        pnlOutAccessoryEditor.Visible := False;
      end;

    1:
      begin
        pnlInfoEditor.Visible := False;
        pnlOutAccessoryEditor.Visible := True;
      end;
  end;
end;

end.

⌨️ 快捷键说明

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