📄 untcomputermanager.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 + -