📄 routemanage.pas
字号:
unit RouteManage;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TfrmRouteManage = class(TForm)
GroupBox1: TGroupBox;
ListViewRoute: TListView;
ButtonEdit: TButton;
ButtonDelete: TButton;
ButtonOK: TButton;
ButtonAddRoute: TButton;
procedure ButtonDeleteClick(Sender: TObject);
private
procedure RefShowRoute();
procedure ProcessListViewDelete();
procedure ProcessListViewSelect();
procedure ProcessAddRoute();
procedure ProcessEditRoute();
procedure SaveRoute();
{ Private declarations }
public
procedure Open;
{ Public declarations }
end;
var
frmRouteManage : TfrmRouteManage;
implementation
uses DBShare, RouteEdit;
{$R *.dfm}
{ TfrmRouteManage }
procedure TfrmRouteManage.Open;
begin
RefShowRoute();
ShowModal;
end;
procedure TfrmRouteManage.RefShowRoute;
var
i, ii : Integer;
ListItem : TListItem;
RouteInfo : pTRouteInfo;
sGameGate : string;
begin
ListViewRoute.Clear;
ButtonEdit.Enabled := False;
ButtonDelete.Enabled := False;
for i := Low(g_RouteInfo) to High(g_RouteInfo) do
begin
RouteInfo := @g_RouteInfo[i];
if RouteInfo.nGateCount = 0 then
break;
sGameGate := '';
ListItem := ListViewRoute.Items.Add;
ListItem.Data := RouteInfo;
ListItem.Caption := IntToStr(i);
ListItem.SubItems.Add(RouteInfo.sSelGateIP);
ListItem.SubItems.Add(IntToStr(RouteInfo.nGateCount));
for ii := 0 to RouteInfo.nGateCount - 1 do
begin
sGameGate := format('%s %s:%d ', [sGameGate, RouteInfo.sGameGateIP[ii],
RouteInfo.nGameGatePort[ii]]);
end;
ListItem.SubItems.Add(sGameGate);
end;
end;
procedure TfrmRouteManage.ButtonDeleteClick(Sender: TObject);
begin
if Sender = ButtonDelete then
begin
ProcessListViewDelete();
end
else if Sender = ListViewRoute then
begin
ProcessListViewSelect();
end
else if Sender = ButtonAddRoute then
begin
ProcessAddRoute();
end
else if Sender = ButtonEdit then
begin
ProcessEditRoute();
end
else if Sender = ButtonOK then
begin
SaveRoute();
end;
end;
procedure TfrmRouteManage.ProcessListViewSelect;
var
ListItem : TListItem;
begin
ListItem := ListViewRoute.Selected;
if ListItem = nil then
exit;
ButtonEdit.Enabled := True;
ButtonDelete.Enabled := True;
end;
procedure TfrmRouteManage.ProcessListViewDelete;
var
ii : Integer;
ListItem : TListItem;
RouteInfo : pTRouteInfo;
begin
ListItem := ListViewRoute.Selected;
if ListItem = nil then
exit;
RouteInfo := ListItem.Data;
RouteInfo.nGateCount := 0;
RouteInfo.sSelGateIP := '';
for ii := Low(RouteInfo.sGameGateIP) to High(RouteInfo.sGameGateIP) do
begin
RouteInfo.sGameGateIP[ii] := '';
RouteInfo.nGameGatePort[ii] := 0;
end;
RefShowRoute();
end;
procedure TfrmRouteManage.ProcessAddRoute;
var
ListItem : TListItem;
RouteInfo : pTRouteInfo;
nNulIdx : Integer;
AddRoute : TRouteInfo;
begin
nNulIdx := ListViewRoute.Items.Count;
if nNulIdx >= 20 then
begin
MessageBox(Handle, '路由条数已经达到指定数量,不能再增加路由!!!',
'提示信息', MB_OK + MB_ICONINFORMATION);
exit;
end;
RouteInfo := @g_RouteInfo[nNulIdx];
frmRouteEdit.m_RouteInfo := RouteInfo^;
frmRouteEdit.Caption := '增加网关路由';
AddRoute := frmRouteEdit.Open;
if AddRoute.nGateCount >= 1 then
begin
RouteInfo^ := AddRoute;
end;
RefShowRoute();
end;
procedure TfrmRouteManage.ProcessEditRoute;
var
ListItem : TListItem;
RouteInfo : pTRouteInfo;
EditRoute : TRouteInfo;
begin
ListItem := ListViewRoute.Selected;
if ListItem = nil then
exit;
RouteInfo := ListItem.Data;
frmRouteEdit.m_RouteInfo := RouteInfo^;
frmRouteEdit.Caption := '增加网关路由';
EditRoute := frmRouteEdit.Open;
if EditRoute.nGateCount >= 1 then
begin
RouteInfo^ := EditRoute;
end;
RefShowRoute();
end;
procedure TfrmRouteManage.SaveRoute;
var
i, ii : Integer;
LoadList : TStringList;
nRouteIdx, nGateIdx, nServerIndex : Integer;
sGameGateIPaddr, sGameGate, sGameGatePort: string;
RouteInfo : pTRouteInfo;
str : string;
begin
try
LoadList := TStringList.Create;
for i := Low(g_RouteInfo) to High(g_RouteInfo) do
begin
RouteInfo := @g_RouteInfo[i];
if RouteInfo.nGateCount = 0 then
break;
str := RouteInfo.sSelGateIP;
for ii := 0 to RouteInfo.nGateCount - 1 do
begin
str := str + ' ' + RouteInfo.sGameGateIP[ii] + ' ' +
IntToStr(RouteInfo.nGameGatePort[ii]);
end;
LoadList.Add(str);
end;
LoadList.SaveToFile(sGateConfFileName);
finally
LoadList.Free;
Close;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -