?? ufrmworkshop.pas
字號:
unit ufrmWorkshop;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, StdCtrls, Buttons, ExtCtrls, ComCtrls, Db, ADODB, XPMenu;
type
{車間結(jié)構(gòu)}
PWorkShop = ^TWorkShop;
TWorkShop = Record
ID: LongInt; //車間ID
Name: String; //車間名稱
Description: String; //車間描述
Level: Integer; //車間級別
ResideLevel: Integer; //上級車間級別
End;
TfrmWorkshop = class(TForm)
TVWorkShop: TTreeView;
Panel3: TPanel;
Label2: TLabel;
Label3: TLabel;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
edtWorkShopName: TEdit;
edtWorkShopMemo: TEdit;
PopupMenu1: TPopupMenu;
N2: TMenuItem;
N1: TMenuItem;
N3: TMenuItem;
N5: TMenuItem;
N4: TMenuItem;
DataSource1: TDataSource;
adoWorkshop: TADOQuery;
XPMenu1: TXPMenu;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
FSubQuery: TADOQuery;
Procedure ReadAllWorkShop(SubTreeNode: TTreeNode; iLevelCount: Integer); //讀出所有的車間
Procedure ReadBure; //讀站(段)
Procedure AddSubWorkShop; //增加車間班組
Procedure DeleteSubWorkShop; //刪除車間
Procedure EditWorkShop; //修改車間班組信息
public
{ Public declarations }
end;
var
frmWorkshop: TfrmWorkshop;
implementation
uses UCommon, uConst;
var
WorkShop,
SubWorkShop: PWorkShop;
EditWorkShopP: PWorkShop; //修改
IsEdit: Boolean;
{$R *.DFM}
procedure TfrmWorkshop.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TfrmWorkshop.FormDestroy(Sender: TObject);
begin
frmWorkshop := nil;
end;
procedure TfrmWorkshop.BitBtn3Click(Sender: TObject);
begin
Panel3.Visible := False;
Exit;
end;
procedure TfrmWorkshop.FormCreate(Sender: TObject);
begin
Sdgl.SetConnectString(adoWorkshop);
Panel3.Visible := False;
FSubQuery := TADOQuery.Create(nil);
Sdgl.SetConnectString(FSubQuery);
end;
procedure TfrmWorkshop.ReadAllWorkShop(SubTreeNode: TTreeNode;
iLevelCount: Integer);
var
WorkShopNode,
SubWorkShopNode: TTreeNode;
begin
with adoWorkshop do begin
if not Active then Open;
Filter := 'WorkShopLevel = ' + IntToStr(iLevelCount);
Filtered := True;
First;
While Not Eof Do
Begin
New(WorkShop);
WorkShop^.ID := FieldByName('WrokShopID').AsInteger;
WorkShop^.Name := FieldByName('WrokShopName').AsString;
WorkShop^.Level := FieldByName('WorkShopLevel').AsInteger;
WorkShop^.Description := FieldByName('WrokShopMemo').AsString;
WorkShop^.ResideLevel := FieldByName('ResideWorkShopID').AsInteger;
WorkShopNode := TVWorkShop.Items.AddChildObject(SubTreeNode, WorkShop.Name, WorkShop);
//讀取所屬的班組
With FSubQuery Do
Begin
Close;
SQL.Clear;
SQL.Add('Select * from Workshop');
Open;
Filter := 'WorkShopLevel = ' + IntToStr(iLevelCount + 1) +
' and ResideWorkShopID ='+ IntToStr(WorkShop.ID);
Filtered := True;
First;
While Not Eof Do
Begin
New(SubWorkShop);
SubWorkShop^.ID := FieldByName('WrokShopID').AsInteger;
SubWorkShop^.Name := FieldByName('WrokShopName').AsString;
SubWorkShop^.Level := FieldByName('WorkShopLevel').AsInteger;
SubWorkShop^.Description := FieldByName('WrokShopMemo').AsString;
SubWorkShop^.ResideLevel := FieldByName('ResideWorkShopID').AsInteger;
SubWorkShopNode := TVWorkShop.Items.AddChildObject(WorkShopNode, SubWorkShop.Name, SubWorkShop);
Next;
End;
End;
Next;
End; //end while
End; //end frmdm.adoworkshop
end;
procedure TfrmWorkshop.ReadBure;
var
WorkShopNode,
MyFirstNode: TTreeNode;
begin
New(SubWorkShop);
if Sdgl.CurUnitName <> '' then
begin
SubWorkShop^.ID := 1;
SubWorkShop^.Name := Sdgl.CurUnitName;
SubWorkShop^.Description := Sdgl.CurUnitName;
SubWorkShop^.Level := 0;
SubWorkShop^.ResideLevel := 0;
MyFirstNode := TVWorkShop.Items.AddObject(nil, Sdgl.CurUnitName, SubWorkShop);
//DisPose(SubWorkShop);
end
else
begin
Sdgl.ShowErrMsg('請首先設(shè)置使用單位!');
Close;
Exit;
end;
With ADOWorkShop Do
Begin
Filter := 'WorkShopLevel = ' + '1';
Filtered := True;
open;
First;
while not Eof do begin
New(WorkShop);
WorkShop^.ID := FieldByName('WrokShopID').AsInteger;
WorkShop^.Name := FieldByName('WrokShopName').AsString;
WorkShop^.Level := FieldByName('WorkShopLevel').AsInteger;
WorkShop^.Description := FieldByName('WrokShopMemo').AsString;
WorkShop^.ResideLevel := FieldByName('ResideWorkShopID').AsInteger;
if WorkShop^.Name <> '' then
WorkShopNode := TVWorkShop.Items.AddChildObject(MyFirstNode, WorkShop.Name, WorkShop);
Next;
end;
End;
ReadAllWorkShop(WorkShopNode, 2);
end;
procedure TfrmWorkshop.FormShow(Sender: TObject);
begin
ReadBure;
end;
procedure TfrmWorkshop.AddSubWorkShop;
var
SubWorkShopNode: TTreeNode;
strAppendWorkShop: String;
begin
New(SubWorkShop);
If TVWorkShop.Items.Count = 0 Then //增加站(段)
Begin
SubWorkShop^.Level := 0;
SubWorkShop^.Name := edtWorkShopName.Text;
SubWorkShop^.Description :=edtWorkShopMemo.Text;
SubWorkShop^.ResideLevel := 0;
SubWorkShopNode := TVWorkShop.Items.AddChildObject(nil, edtWorkShopName.Text, SubWorkShop);
End
Else If TVWorkShop.Selected <> nil Then
Begin
SubWorkShop^.Level := TVWorkShop.Selected.Level + 1; //PWorkShop(TVWorkShop.Selected.Data)^.Level + 1;
SubWorkShop^.Name := Trim(edtWorkShopName.Text);
SubWorkShop^.Description := Trim(edtWorkShopMemo.Text);
SubWorkShop^.ResideLevel := PWorkShop(TVWorkShop.Selected.Data)^.ID;
SubWorkShopNode := TVWorkShop.Items.AddChildObject(TVWorkShop.Selected, edtWorkShopName.Text, SubWorkShop);
End
Else
Exit;
//write to database
With ADOWorkShop Do
Begin
Try
Append;
FieldByName('WrokShopName').AsString := SubWorkShop^.Name;
FieldByName('WorkShopLevel').AsInteger := SubWorkShop^.Level;
FieldByName('WrokShopMemo').AsString := SubWorkShop^.Description;
FieldByName('ResideWorkShopID').AsInteger := SubWorkShop^.ResideLevel;
//Try
Post;
Except
Sdgl.ShowErrMsg('車間(班組)增加失敗!');
End;
End;
Dispose(SubWorkShop);
end;
procedure TfrmWorkshop.N2Click(Sender: TObject);
//var
//Temp: PWorkShop;
begin
//New(Temp);
if TVWorkShop.Selected = nil then Exit;
//Temp := PWorkShop(TVWorkShop.Selected.Data);
//If Temp^.Level >= 3 Then
if TVWorkShop.Selected.Level >= 3 then
Begin
ShowMessage('不能增加班組以下的單位!');
Exit;
End;
Panel3.Visible := True;
edtWorkShopName.SetFocus;
//Dispose(Temp);
end;
procedure TfrmWorkshop.N3Click(Sender: TObject);
begin
IsEdit := True;
If TVWorkShop.Selected = nil Then Exit;
Panel3.Visible := True;
edtWorkShopName.SetFocus;
New(EditWorkShopP);
EditWorkShopP := TVWorkShop.Selected.Data;
edtWorkShopName.Text := EditWorkShopP^.Name;
edtWorkShopMemo.Text := EditWorkShopP^.Description;
end;
procedure TfrmWorkshop.N4Click(Sender: TObject);
begin
If MessageBox(Handle, Pchar(DeleteWorkShop), Pchar(DeleteHits), MB_YESNO Or
MB_ICONQUESTION) = IDYES Then
DeleteSubWorkShop;
end;
procedure TfrmWorkshop.DeleteSubWorkShop;
var
subWorkShopP: PWorkShop;
StrDeleteSQL: String; //delete string
begin
With TVWorkShop.Items Do
Begin
If Count = 0 Then
Exit
Else If TVWorkShop.Selected <> nil Then
Begin
subWorkShopP := TVWorkShop.Selected.Data;
if subWorkShopP^.Level <> 0 then
Delete(TVWorkShop.Selected)
else begin
Sdgl.ShowErrMsg('不能刪除當(dāng)前使用單位!');
Exit;
end;
End
Else
Exit;
StrDeleteSQL := 'Delete from WorkShop where WrokShopID = ' + IntToStr(subWorkShopP^.ID) +
' or ResideWorkShopID = ' + IntToStr(subWorkShopP^.ID);
With FSubQuery Do
Begin
Close;
SQL.Clear;
SQL.Text := StrDeleteSQL;
Try
ExecSQL;
Except
Sdgl.ShowErrMsg('刪除車間班組出錯!');
Exit;
End;
End;
End;
end;
procedure TfrmWorkshop.EditWorkShop;
var
strUpdateWorkShop: String;
Begin
strUpdateWorkShop := 'Update WorkShop set WrokShopName=''' + edtWorkShopName.Text +
''', WrokShopMemo=''' + edtWorkShopMemo.Text +
''' where WrokShopID = ' + IntToStr(EditWorkShopP^.ID);
With FSubQuery Do
Begin
Close;
SQL.Clear;
SQL.Text := strUpdateWorkShop;
Try
ExecSQL;
Except
ShowMessage('車間班組信息更新失敗!');
IsEdit := False;
Exit;
End;
End;
With ADOWorkShop Do
Begin
Close;
SQL.Clear;
SQL.Text := 'Select * from Workshop order by WrokShopID';
Open;
//If Not Active Then Open;
Filter := 'WrokShopID = ' + IntToStr(EditWorkShopP^.ID);
Filtered := True;
First;
EditWorkShopP^.ID := FieldByName('WrokShopID').AsInteger;
EditWorkShopP^.Name := FieldByName('WrokShopName').AsString;
EditWorkShopP^.Description := FieldByName('WrokShopMemo').AsString;
EditWorkShopP^.Level := FieldByName('WorkShopLevel').AsInteger;
EditWorkShopP^.ResideLevel := FieldByName('ResideWorkShopID').AsInteger;
TVWorkShop.Selected.Text := EditWorkShopP^.Name;
End;
IsEdit := False;
end;
procedure TfrmWorkshop.BitBtn2Click(Sender: TObject);
begin
If (edtWorkShopName.Text = '') Or (edtWorkShopMemo.Text = '') Then
Begin
ShowMessage('請輸入車間班組名稱或描述!');
Exit;
End;
If Not IsEdit Then AddSubWorkShop
Else EditWorkShop;
Panel3.Visible := False;
end;
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -