⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 servmain.pas

📁 《Delphi开发人员指南》配书原码
💻 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 + -