📄 group.pas
字号:
unit Group;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, ImgList, ActnList, StdCtrls, Buttons, ComCtrls, ExtCtrls,
wsTypes,wsCores,MainDB;
type
TfrmGroup = class(TForm)
PanelSecond: TPanel;
Splitter1: TSplitter;
Panel2: TPanel;
TreeViewSelect: TTreeView;
Panel3: TPanel;
Panel4: TPanel;
PanelBottom: TPanel;
ActionList1: TActionList;
ActionReturn: TAction;
ImageListTreeView: TImageList;
PanelFirst: TPanel;
Label7: TLabel;
Label8: TLabel;
LabelProject: TLabel;
LabelHourse: TLabel;
BitBtn1: TBitBtn;
ListBoxProject: TListBox;
ListBoxHourse: TListBox;
ActionOK: TAction;
Label9: TLabel;
Label10: TLabel;
LabelCurrentHourse: TLabel;
LabelCurrentProject: TLabel;
Panel1: TPanel;
Panel5: TPanel;
ListBoxExtension: TListBox;
BitBtnReturn: TBitBtn;
Splitter2: TSplitter;
Panel6: TPanel;
Panel7: TPanel;
Panel8: TPanel;
Panel9: TPanel;
ListBoxCandiate: TListBox;
BitBtnRight: TBitBtn;
BitBtnLeft: TBitBtn;
ActionLeft: TAction;
ActionRight: TAction;
procedure FormCreate(Sender: TObject);
procedure ActionList1Update(Action: TBasicAction;
var Handled: Boolean);
procedure ListBoxProjectClick(Sender: TObject);
procedure ListBoxHourseClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TreeViewSelectChanging(Sender: TObject; Node: TTreeNode;
var AllowChange: Boolean);
procedure TreeViewSelectChange(Sender: TObject; Node: TTreeNode);
procedure ActionLeftExecute(Sender: TObject);
procedure ActionRightExecute(Sender: TObject);
procedure ActionReturnExecute(Sender: TObject);
procedure ActionOKExecute(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
ProjectInfo :TProject;
Procedure ShowLeft();
Function HasGrouped():Boolean;
public
strGroupID:String;
{ Public declarations }
end;
var
frmGroup: TfrmGroup;
implementation
{$R *.DFM}
Procedure TfrmGroup.ShowLeft();
begin
ListBoxExtension.Items.Clear;
with dmMainDB.qryPublic do
begin
Close;
SQL.Clear;
Sql.Add('Select ExtensionID,CodeMeaning from GE,CodeDetail Where (ProjectID=:ProjectID) and (HourseID=:HourseID) and (GroupID=:GroupID) and (ExtensionID=ACode) and (Class=:strClass)');
ParamByName('ProjectID').AsString:=ProjectInfo.ProjectID;
ParamByName('HourseID').AsString:=ProjectInfo.HourseID;
ParamByName('GroupID').AsString:=strGroupID;
ParamByName('StrClass').AsString:='E';
Prepare;
try
Open;
except
ExecSql;
end;
While Not Eof do
begin
ListBoxExtension.Items.Append(FieldByName('CodeMeaning').AsString+' ['+FieldByName('ExtensionID').AsString+']');
Next;
end;
Close;
end;
end;
Function TfrmGroup.HasGrouped():Boolean;
begin
with dmMainDB.qryPublic do
begin
Close;
SQL.Clear;
Sql.Add('Select ExtensionID from GE Where (ProjectID=:ProjectID) and (HourseID=:HourseID) and (ExtensionID=:ExtensionID)');
ParamByName('ProjectID').AsString:=ProjectInfo.ProjectID;
ParamByName('HourseID').AsString:=ProjectInfo.HourseID;
ParamByName('ExtensionID').AsString:=GetID(ListBoxCandiate.Items.Strings[ListBoxCandiate.ItemIndex]);
Prepare;
try
Open;
except
ExecSql;
end;
if Not IsEmpty then
Result:=True
else
Result:=False;
end;
end;
procedure TfrmGroup.FormCreate(Sender: TObject);
begin
with dmMainDB do
begin
if ViewProjectID.State=dsInactive then
ViewProjectID.Open
else
ViewProjectID.First;
if ViewGroupID.State=dsInactive then
ViewGroupID.open
else
ViewGroupID.First;
if ViewPHG.State=dsInactive then
ViewPHG.Open
else
ViewPHG.First;
if ViewExtensionID.State=dsInactive then
ViewExtensionID.Open
else
ViewExtensionID.First;
if ViewPH.State=dsInactive then
ViewPH.Open
else
ViewPH.First;
if ViewExtensionID.State=dsInactive then
ViewExtensionID.open
else
ViewExtensionID.First;
if tbGE.State=dsInactive then
tbGE.open
else
tbGE.First;
end;
PanelFirst.Align:=alClient;
PanelSecond.Align:=alClient;
PanelFirst.Visible:=True;
PanelSecond.Visible:=False;
LabelHourse.Caption:='';
LabelProject.Caption:='';
strGroupID:='';
with dmMainDB.ViewProjectID do
begin
try
ListBoxProject.Items.BeginUpdate;
ListBoxProject.Items.Clear;
While Not Eof do
begin
ListBoxProject.Items.Append(FieldByName('CodeMeaning').AsString+' ['+FieldByName('ACode').AsString+']');
Next;
end;
if ListBoxProject.Items.Count<>0 then
begin
ListBoxProject.ItemIndex:=0;
LabelProject.Caption:=ListBoxProject.Items.Strings[ListBoxProject.ItemIndex];
end;
finally
ListBoxProject.Items.EndUpdate;
end;
end;
dmMainDB.ViewProjectID.First;
ListBoxHourse.Items.Clear;
with dmMainDB.ViewPH do
begin
First;
While Not Eof do
begin
ListBoxHourse.Items.Append(FieldByName('HourseIDLookup').AsString+' ['+FieldByName('HourseID').AsString+']');
Next;
end;
end;
end;
procedure TfrmGroup.ActionList1Update(Action: TBasicAction;
var Handled: Boolean);
begin
ActionOK.Enabled:=(LabelProject.Caption<>'') and (LabelHourse.Caption<>'');
ActionLeft.Enabled:=((ListBoxCandiate.ItemIndex>=0) and (strGroupID<>''));
ActionRight.Enabled:=((ListBoxExtension.ItemIndex>=0) and (strGroupID<>''));
end;
procedure TfrmGroup.ListBoxProjectClick(Sender: TObject);
begin
LabelProject.Caption:=ListBoxProject.Items.Strings[ListBoxProject.ItemIndex];
dmMainDB.ViewProjectID.Locate('ACode',GetID(ListBoxProject.Items.Strings[ListBoxProject.ItemIndex]),[loCaseInsensitive]);
ListBoxHourse.Items.Clear;
with dmMainDB.ViewPH do
begin
First;
While Not Eof do
begin
ListBoxHourse.Items.Append(FieldByName('HourseIDLookup').AsString+' ['+FieldByName('HourseID').AsString+']');
Next;
end;
end;
LabelHourse.Caption:='';
end;
procedure TfrmGroup.ListBoxHourseClick(Sender: TObject);
begin
LabelHourse.Caption:=ListBoxHourse.Items.Strings[ListBoxHourse.ItemIndex];
end;
procedure TfrmGroup.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TfrmGroup.TreeViewSelectChanging(Sender: TObject;
Node: TTreeNode; var AllowChange: Boolean);
begin
if Node.Level=1 then
begin
AllowChange:=True;
end
else
begin
AllowChange:=False;
end;
end;
procedure TfrmGroup.TreeViewSelectChange(Sender: TObject; Node: TTreeNode);
begin
strGroupID:=GetID(Node.Text);
ShowLeft();
end;
procedure TfrmGroup.ActionLeftExecute(Sender: TObject);
begin
if not HasGrouped() then
begin
With dmMainDB.tbGE do
begin
Append;
FieldByName('ProjectID').asString:=ProjectInfo.ProjectID;
FieldByName('HourseID').AsString:=ProjectInfo.HourseID;
FieldByName('GroupID').AsString:=strGroupID;
FieldByName('ExtensionID').AsString:=GetID(ListBoxCandiate.Items.Strings[ListBoxCandiate.ItemIndex]);
Post;
end;
ShowLeft();
end
else
begin
ListBoxExtension.Hint:=ListBoxCandiate.Items.Strings[ListBoxCandiate.ItemIndex]+'已经分组了';
ShowMessage(ListBoxCandiate.Items.Strings[ListBoxCandiate.ItemIndex]+'已经分组了');
end;
end;
procedure TfrmGroup.ActionRightExecute(Sender: TObject);
begin
With dmMainDB.tbGE do
begin
First;
Locate('ProjectID;HourseID;GroupID;ExtensionID',VarArrayof([ProjectInfo.ProjectID,ProjectInfo.HourseID,strGroupID,GetID(ListBoxExtension.Items.Strings[ListBoxExtension.ItemIndex])]),[loCaseInsensitive]);
Delete;
end;
ShowLeft();
end;
procedure TfrmGroup.ActionReturnExecute(Sender: TObject);
begin
Close;
end;
procedure TfrmGroup.ActionOKExecute(Sender: TObject);
var
CurrentNode,RootNode:TTreeNode;
begin
PanelFirst.Visible:=False;
PanelSecond.Visible:=True;
LabelCurrentProject.Caption:=LabelProject.Caption;
LabelCurrentHourse.Caption:=LabelHourse.Caption;
With frmGroup do
begin
ProjectInfo.ProjectName:=GetName(LabelProject.Caption);
ProjectInfo.ProjectID:=GetID(LabelProject.Caption);
ProjectInfo.HourseName:=GetName(LabelHourse.Caption);
ProjectInfo.HourseID:=GetID(LabelHourse.Caption);
end;
//
With dmMainDB do
begin
ViewPHG.Filter:='ProjectID='+''''+ProjectInfo.ProjectID+''''+ ' and HourseID='+''''+ProjectInfo.HourseID+'''';
ViewPHG.Filtered:=True;
try
TreeViewSelect.Items.BeginUpdate;
RootNode:=TreeViewSelect.Items.Add(nil,ProjectInfo.HourseName +' ['+ProjectInfo.HourseID+']');
RootNode.ImageIndex:=0;
RootNode.StateIndex:=1;
RootNode.SelectedIndex:=3;
ViewPHG.First;
while not ViewPHG.Eof do
begin
CurrentNode:=TreeViewSelect.Items.AddChild(RootNode,ViewPHG['GroupIDLookup']+' ['+ViewPHG['GroupID']+']');
CurrentNode.ImageIndex:=0;
CurrentNode.SelectedIndex:=3;
ViewPHG.Next;
end;
finally
TreeViewSelect.FullExpand;
TreeViewSelect.Items.EndUpdate;
end;
end;
if (TreeViewSelect.TopItem<>nil) and (TreeViewSelect.TopItem.getFirstChild<>nil) then
begin
strGroupID:=GetID(TreeViewSelect.TopItem.getFirstChild.Text);
TreeViewSelect.TopItem.getFirstChild.Selected:=True;
end;
ShowLeft();
ListBoxCandiate.Items.Clear;
with dmMainDB.ViewExtensionID do
begin
First;
While Not Eof do
begin
ListBoxCandiate.Items.Append(FieldByName('CodeMeaning').AsString+' ['+FieldByName('ACode').AsString+']');
Next;
end;
end;
end;
procedure TfrmGroup.FormDestroy(Sender: TObject);
begin
with dmMainDB do
begin
if ViewProjectID.State<>dsInactive then
ViewProjectID.Close;
if ViewGroupID.State<>dsInactive then
ViewGroupID.Close;
if ViewPHG.State<>dsInactive then
ViewPHG.Close;
if ViewPH.State<>dsInactive then
ViewPH.Close;
if ViewExtensionID.State<>dsInactive then
ViewExtensionID.Close;
if tbGE.State<>dsInactive then
tbGE.Close;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -