📄 servmain.pas
字号:
unit ServMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, DBGrids, Db, DBTables, ComCtrls, ExtCtrls;
type
TServMainForm = class(TForm)
Database1: TDatabase;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
lvClients: TListView;
lvEvents: TListView;
Panel1: TPanel;
Panel2: TPanel;
btnShutDown: TButton;
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnShutDownClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
FClientIDList : TList; { Used to maintain a list of IDs }
FHighID : Integer; { Highest ID used }
public
function GetNextID: Integer;
procedure RemoveID(aID: Integer);
procedure AddClientToList(aClientStr: String; aClientID: Integer);
procedure RemoveClientFromList(aClientID: Integer);
procedure AddEventToList(aEventStr: String; aClientID: Integer);
end;
var
ServMainForm: TServMainForm;
implementation
uses servrdmu;
{$R *.DFM}
procedure AddListViewItem(const aCaption, aValue: String; aData: Pointer;
aLV: TListView);
{ This method is used to add a TListItem to the TListView, aLV }
var
NewItem: TListItem;
begin
NewItem := aLV.Items.Add;
NewItem.Caption := aCaption;
NewItem.Data := aData;
NewItem.SubItems.Add(aValue);
end;
procedure TServMainForm.FormCreate(Sender: TObject);
begin
FClientIDList := TList.Create; { Create ID storage list }
FHighID := 1; { Initialize the FHighID to 1 }
end;
procedure TServMainForm.FormDestroy(Sender: TObject);
begin
FClientIDList.Free; { Free ID storage list }
end;
function TServMainForm.GetNextID: Integer;
begin
FClientIDList.Add(Pointer(FHighID)); { Add the high id to the id storage list }
Result := FHighID; { Pass back the id used }
inc(FHighID); { Set the next ID to be used }
end;
procedure TServMainForm.RemoveID(aID: Integer);
var
vIDX: Integer;
begin
{ Obtain the index of the id specified and remove it from the id storage
list }
vIDX := FClientIDList.IndexOf(Pointer(aID));
if vIDX <> -1 then
FClientIDList.Delete(vIDX);
end;
procedure TServMainForm.AddClientToList(aClientStr: String; aClientID: Integer);
begin
{ Update lvClients with the new client information }
AddListViewItem(aClientStr, IntToStr(aClientID), Pointer(aClientID),
lvClients);
end;
procedure TServMainForm.RemoveClientFromList(aClientID: Integer);
var
LVItem: TListItem;
begin
{ Remove the client from the lvClients list view }
LVItem := lvClients.FindData(0, Pointer(aClientID), True, True);
if LVITem <> nil then
LVItem.Delete;
end;
procedure TServMainForm.AddEventToList(aEventStr: String; aClientID: Integer);
begin
{ Add the event to the lvEvents list view }
AddListViewItem(aEventStr, IntToStr(aClientID), Pointer(aClientID),
lvEvents);
end;
procedure TServMainForm.btnShutDownClick(Sender: TObject);
begin
Close;
end;
procedure TServMainForm.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
{ Prevent shutdown if clients are connected }
if FClientIDList.Count > 0 then begin
MessageDlg('Cannot shutdown while clients are connected.',
mtError, [mbOk], 0);
CanClose := False;
end
else CanClose := True;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -