📄 group.pas
字号:
unit Group;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Buttons;
type
TfrmGroup = class(TForm)
Label1: TLabel;
lbGroup: TListBox;
ADOConnection1: TADOConnection;
btnMoveDown: TBitBtn;
BtnMoveUp: TBitBtn;
GroupBox1: TGroupBox;
editGroupName: TEdit;
btGroupAdd: TBitBtn;
btGroupUpdate: TBitBtn;
btGroupDelete: TBitBtn;
btnClose: TBitBtn;
procedure FormShow(Sender: TObject);
procedure btGroupAddClick(Sender: TObject);
procedure btGroupUpdateClick(Sender: TObject);
procedure btGroupDeleteClick(Sender: TObject);
procedure lbGroupClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BtnMoveUpClick(Sender: TObject);
procedure SetItemSort(var strItem:String; nIndex: Integer);
procedure btnCloseClick(Sender: TObject);
procedure btnMoveDownClick(Sender: TObject);
private
{ Private declarations }
GroupIDs: Array of Integer;
strSQL: string;
m_MaxID: Integer;
public
{ Public declarations }
end;
var
frmGroup: TfrmGroup;
implementation
{$R *.dfm}
procedure TfrmGroup.FormShow(Sender: TObject);
var
i, n : Integer;
Query1 : TADOQuery;
begin
if lbGroup.Items.Count > 0 then exit;
Query1 := TADOQuery.Create(nil);
Query1.Connection := ADOConnection1;
strSQL := 'select * from GroupList Order by GroupName';
with Query1 do
begin
SQL.Clear;
SQL.Add(strSQL);
Open;
end;
lbGroup.Clear;
GroupIDs := nil;
//clbGroup.Clear;
SetLength(GroupIDs, Query1.RecordCount);
i := 0;
m_MaxID := 0;
Query1.First;
while not(Query1.Eof) do
begin
lbGroup.Items.Add(Query1.FieldByName('GroupName').AsString);
GroupIDs[i] := Query1.FieldByName('GroupID').AsInteger;
//clbGroup.Items.Add(Query1.FieldByName('GroupName').AsString);
if m_MaxID < GroupIDs[i] then
m_MaxID := GroupIDs[i];
Query1.Next;
i := i+1;
end;
//最大的组别ID号不仅要在组别数据中找,还要在AddressList表中找
With Query1 do
begin
SQL.Clear;
SQL.Add('SELECT Max(GroupID) as maxID FROM GroupFall');
Open;
n := FieldByName('maxID').AsInteger;
if m_MaxID < n then
m_MaxID := n;
Close;
end;
Query1.Close;
Query1.Free;
end;
procedure TfrmGroup.btGroupAddClick(Sender: TObject);
var
i, len: Integer;
ADOQuery: TADOQuery;
strItem: String;
begin
if editGroupName.Text = '' then
Exit;
ADOQuery := TADOQuery.Create(nil);
ADOQuery.Connection := ADOConnection1;
m_MaxID := m_MaxID + 1;
strItem := editGroupName.Text;
strItem := '00' + strItem;
SetItemSort(strItem, lbGroup.Items.Count+1);
strSQL := 'INSERT INTO GroupList VALUES('
+ IntToStr(m_MaxID) + ', ''' + strItem + ''')';
try
ADOQuery.SQL.Clear;
ADOQuery.SQL.Append(strSQL);
ADOQuery.ExecSQL;
SetLength(GroupIDs, len+1);
GroupIDs[len] := m_MaxID;
//editGroupID.Text := IntToStr(max + 1);
lbGroup.Items.Add(strItem);
lbGroup.ItemIndex := lbGroup.Items.Count - 1;
//clbGroup.Items.Add(editGroupName.Text);
except
end;
ADOQuery.Free;
end;
procedure TfrmGroup.btGroupUpdateClick(Sender: TObject);
var
ADOQuery: TADOQuery;
strItem: String;
begin
strItem := editGroupName.Text;
strItem := '00' + strItem;
SetItemSort(strItem, lbGroup.ItemIndex);
ADOQuery := TADOQuery.Create(nil);
ADOQuery.Connection := ADOConnection1;
strSQL := 'Update GroupList Set GroupName=''' + strItem
+ ''' where GroupID=' + IntToStr(GroupIDs[lbGroup.ItemIndex]);
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add(strSQL);
ADOQuery.ExecSQL;
lbGroup.Items[lbGroup.ItemIndex] := strItem;
//clbGroup.Items[lbGroup.ItemIndex] := editGroupName.Text;
ADOQuery.Free;
end;
procedure TfrmGroup.btGroupDeleteClick(Sender: TObject);
var
i, len, index: Integer;
ADOQuery: TADOQuery;
begin
ADOQuery := TADOQuery.Create(nil);
ADOQuery.Connection := ADOConnection1;
len := lbGroup.Items.Count;
index := lbGroup.ItemIndex;
strSQL := 'DELETE FROM GroupList where GroupID=' + IntToStr(GroupIDs[index]);
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add(strSQL);
ADOQuery.ExecSQL;
for i := index to len-2 do
begin
GroupIDs[i] := GroupIDs[i+1];
end;
SetLength(GroupIDs, len-1);
lbGroup.Items.Delete(index);
//clbGroup.Items.Delete(index);
if (index > lbGroup.Items.Count-1) then
index := lbGroup.Items.Count - 1;
lbGroup.ItemIndex := index;
lbGroupClick(Sender);
ADOQuery.Free;
end;
procedure TfrmGroup.lbGroupClick(Sender: TObject);
var
strItem: String;
begin
if lbGroup.Items.Count > 0 then
begin
strItem := lbGroup.Items[lbGroup.ItemIndex];
Delete(strItem, 1, 2);
editGroupName.Text := strItem;
end;
end;
procedure TfrmGroup.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TfrmGroup.BtnMoveUpClick(Sender: TObject);
var
nIndex, nTempID: Integer;
strItem, strNextItem: String;
ADOQuery: TADOQuery;
begin
nIndex := lbGroup.ItemIndex;
//从第二个开始才能上移
if (nIndex > 0) then
begin
ADOQuery := TADOQuery.Create(nil);
ADOQuery.Connection := ADOConnection1;
//交换并更改组别名称
strItem := lbGroup.Items[nIndex];
SetItemSort(strItem, nIndex-1);
strNextItem := lbGroup.Items[nIndex - 1];
SetItemSort(strNextItem, nIndex);
lbGroup.Items[nIndex - 1] := strItem;
lbGroup.Items[nIndex] := strNextItem;
//交换组别ID
nTempID := GroupIDs[nIndex - 1];
GroupIDs[nIndex - 1] := GroupIDs[nIndex];
GroupIDs[nIndex] := nTempID;
//更改数据库中的数据
strSQL := 'Update GroupList Set GroupName=''' + lbGroup.Items[nIndex-1]
+ ''' where GroupID=' + IntToStr(GroupIDs[nIndex-1]);
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add(strSQL);
ADOQuery.ExecSQL;
strSQL := 'Update GroupList Set GroupName=''' + lbGroup.Items[nIndex]
+ ''' where GroupID=' + IntToStr(GroupIDs[nIndex]);
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add(strSQL);
ADOQuery.ExecSQL;
lbGroup.ItemIndex := nIndex-1;
ADOQuery.Free;
end;
end;
procedure TfrmGroup.btnMoveDownClick(Sender: TObject);
var
nIndex, nTempID: Integer;
strItem, strNextItem: String;
ADOQuery: TADOQuery;
begin
nIndex := lbGroup.ItemIndex;
//从第二个开始才能上移
if (nIndex < lbGroup.Items.Count-1) then
begin
ADOQuery := TADOQuery.Create(nil);
ADOQuery.Connection := ADOConnection1;
//交换并更改组别名称
strItem := lbGroup.Items[nIndex];
SetItemSort(strItem, nIndex+1);
strNextItem := lbGroup.Items[nIndex+1];
SetItemSort(strNextItem, nIndex);
lbGroup.Items[nIndex + 1] := strItem;
lbGroup.Items[nIndex] := strNextItem;
//交换组别ID
nTempID := GroupIDs[nIndex + 1];
GroupIDs[nIndex + 1] := GroupIDs[nIndex];
GroupIDs[nIndex] := nTempID;
//更改数据库中的数据
strSQL := 'Update GroupList Set GroupName=''' + lbGroup.Items[nIndex+1]
+ ''' where GroupID=' + IntToStr(GroupIDs[nIndex+1]);
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add(strSQL);
ADOQuery.ExecSQL;
strSQL := 'Update GroupList Set GroupName=''' + lbGroup.Items[nIndex]
+ ''' where GroupID=' + IntToStr(GroupIDs[nIndex]);
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add(strSQL);
ADOQuery.ExecSQL;
lbGroup.ItemIndex := nIndex+1;
ADOQuery.Free;
end;
end;
procedure TfrmGroup.SetItemSort(var strItem:String; nIndex: Integer);
var
strSeq: String;
begin
if (nIndex < 10) then
strSeq := '0' + IntToStr(nIndex)
else
strSeq := IntToStr(nIndex);
Delete(strItem, 1, 2);
strItem := strSeq + strItem;
end;
procedure TfrmGroup.btnCloseClick(Sender: TObject);
begin
Close();
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -