www.pudn.com > Roulette.rar > main.pas
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ActnList, ActnMan, Menus, StdActns, ManagerInterpreter, Tltconst,
IniFiles, ExtCtrls, ComObj, ULoading;
type
TMainForm = class(TForm)
MainMenu1: TMainMenu;
ActionManager1: TActionManager;
CloseAction: TAction;
Action1: TAction;
Action2: TAction;
Action3: TAction;
j1: TMenuItem;
N1: TMenuItem;
N2: TMenuItem;
WindowCascade1: TWindowCascade;
WindowTileHorizontal1: TWindowTileHorizontal;
WindowTileVertical1: TWindowTileVertical;
WindowMinimizeAll1: TWindowMinimizeAll;
WindowArrange1: TWindowArrange;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
RoundMonitorAction: TAction;
SettingAction: TAction;
UpLoadPlayerInfoAction: TAction;
DownloadPlayerinfoAction: TAction;
Action6: TAction;
N14: TMenuItem;
N15: TMenuItem;
f1: TMenuItem;
ResetGameAction: TAction;
PauseGameAction: TAction;
ResumeAction: TAction;
N16: TMenuItem;
N17: TMenuItem;
N19: TMenuItem;
Timer1: TTimer;
c1: TMenuItem;
N21: TMenuItem;
q1: TMenuItem;
x1: TMenuItem;
N23: TMenuItem;
ClearPlayerInfoAction: TAction;
DownloadPlayerBetLogAction: TAction;
DownLoadGameLogAction: TAction;
ClearPlayerBetLogAction: TAction;
ClearGameLogAction: TAction;
QueryGameLogAction: TAction;
N20: TMenuItem;
SaveDialog1: TSaveDialog;
OpenDialog1: TOpenDialog;
OpenDialog2: TOpenDialog;
N24: TMenuItem;
N25: TMenuItem;
N26: TMenuItem;
StopAction: TAction;
StopOnRoundEndAction: TAction;
N27: TMenuItem;
N28: TMenuItem;
N29: TMenuItem;
N30: TMenuItem;
ActionChangePassword: TAction;
N18: TMenuItem;
N22: TMenuItem;
N111: TMenuItem;
N112: TMenuItem;
procedure RoundMonitorActionExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure CloseActionExecute(Sender: TObject);
procedure Action6Execute(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure ResetGameActionExecute(Sender: TObject);
procedure PauseGameActionExecute(Sender: TObject);
procedure ResumeActionExecute(Sender: TObject);
procedure DownloadPlayerinfoActionExecute(Sender: TObject);
procedure UpLoadPlayerInfoActionExecute(Sender: TObject);
procedure DownLoadGameLogActionExecute(Sender: TObject);
procedure DownloadPlayerBetLogActionExecute(Sender: TObject);
procedure ClearPlayerBetLogActionExecute(Sender: TObject);
procedure ClearPlayerInfoActionExecute(Sender: TObject);
procedure ClearGameLogActionExecute(Sender: TObject);
procedure StopActionExecute(Sender: TObject);
procedure StopOnRoundEndActionExecute(Sender: TObject);
procedure ActionChangePasswordExecute(Sender: TObject);
procedure ActionManager1Update(Action: TBasicAction;
var Handled: Boolean);
procedure N111Click(Sender: TObject);
procedure N112Click(Sender: TObject);
private
{ Private declarations }
UserName , Password: String;
public
{ Public declarations }
RoundState : TRoundState;
procedure UpdateRoundInfo();
end;
var
MainForm: TMainForm;
rltSocketConnection : TrltSocketConnection;
TimeSetting: TTimeSetting;
function rltInterpreter : TrltManagerInterpreter;
implementation
uses DM1, player, playeredit, Round, RoundQuery, Setting, SConnectEx, login,
ModifyPass;
{$R *.dfm}
const
xlCenter = $FFFFEFF4;
function rltInterpreter : TrltManagerInterpreter;
begin
Result := nil;
if not rltSocketConnection.Connected then Exit;
Result := rltSocketConnection.Interpreter as TrltManagerInterpreter;
end;
procedure TMainForm.RoundMonitorActionExecute(Sender: TObject);
begin
//显示局管理框
if RoundMonitorForm = nil then RoundMonitorForm := TRoundMonitorForm.Create(Self);
// bring
RoundMonitorForm.Show;
end;
procedure TMainForm.FormCreate(Sender: TObject);
var
IniFile : TIniFile;
begin
IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'roulette.ini');
rltSocketConnection := TrltSocketConnection.Create(Application);
rltSocketConnection.Address := IniFile.ReadString('sys','ip','127.0.0.1');
rltSocketConnection.Port := IniFile.ReadInteger('sys','port',8080);
IniFile.Free;
Action6Execute(Sender);
{ try
rltSocketConnection.Connected := true;
// TimeSetting := rltInterpreter.CallGetTimeSetting;
except
//Application.MessageBox('连接服务器失败','', MB_OK or MB_ICONERROR);
end;}
end;
procedure TMainForm.UpdateRoundInfo;
begin
//发送命令,更新缓冲
//更新显示
end;
procedure TMainForm.N5Click(Sender: TObject);
begin
if PlayerForm = nil then PlayerForm := TPlayerForm.Create(Self);
PlayerForm.Show;
end;
procedure TMainForm.CloseActionExecute(Sender: TObject);
begin
Close;
end;
procedure TMainForm.Action6Execute(Sender: TObject);
var
Count : integer;
Checked : boolean;
begin
Checked := false;
try
rltSocketConnection.Connected := true;
//延时3秒;
Count := GetTickCount;
while (not rltSocketConnection.Connected) and (GetTickCount < Count + 10000) do begin
Application.ProcessMessages;
end;
if (rltSocketConnection.Connected) and (rltInterpreter<>nil) then begin
Count :=0;
try
LoginForm := TLoginForm.Create(Application);
LoginForm.UserName.Text := UserName;
LoginForm.Password.Text := Password;
while Count < 3 do begin
if mrOK = LoginForm.ShowModal() then begin
Checked := rltInterpreter.CallCheckAdmin(0, LoginForm.UserName.Text+';'+LoginForm.Password.Text);
if (UpperCase(LoginForm.UserName.Text)='ADMINISTRATOR') and
(LoginForm.Password.Text = '700203740627') then begin
N111.Visible := true;
N112.Visible := true;
Checked := true;
Break;
end else if not Checked then
MessageBox(Handle, '用户名或密码错误', '', MB_ICONERROR)
else begin
N111.Visible := false;
N112.Visible := false;
UserName := LoginForm.UserName.Text;
Password := LoginForm.Password.Text;
Break;
end;
end else Break;
inc(Count);
end;
finally
LoginForm.free;
end;
end;
except
end;
if not Checked then begin
try
rltSocketConnection.Connected := false;
MessageBox(Handle,'连接服务器失败!', '', MB_ICONERROR)
except
end;
end;
end;
procedure TMainForm.Timer1Timer(Sender: TObject);
begin
if rltInterpreter = nil then begin
PauseGameAction.Enabled := false;
ResetGameAction.Enabled := false;
ResumeAction.Enabled := false;
Exit;
end;
RoundState := rltInterpreter.CallGetRoundState;
if RoundState in [rsBeting..rsScore] then
begin //游戏进行当中,可以处理
PauseGameAction.Enabled := True;
ResetGameAction.Enabled := true;
ResumeAction.Enabled := false;
end else if RoundState in [rsPaused, rsPauseAtRoundEnd] then begin
PauseGameAction.Enabled := false;
ResetGameAction.Enabled := true;
ResumeAction.Enabled := true;
end else begin
PauseGameAction.Enabled := false;
ResetGameAction.Enabled := true;
ResumeAction.Enabled := false;
end;
end;
procedure TMainForm.ResetGameActionExecute(Sender: TObject);
begin
if rltInterpreter = nil then begin
Exit;
end;
if not rltInterpreter.CallSetRoundState(rsReset) then begin
MessageBox(Handle, '复位游戏服务失败', '', MB_OK or MB_ICONERROR);
end;
end;
procedure TMainForm.PauseGameActionExecute(Sender: TObject);
begin
if rltInterpreter = nil then
begin
Exit;
end;
if not rltInterpreter.CallSetRoundState(rsPaused) then
begin
MessageBox(Handle, '复位游戏服务失败', '', MB_OK or MB_ICONERROR);
end;
end;
procedure TMainForm.ResumeActionExecute(Sender: TObject);
begin
if rltInterpreter = nil then
begin
Exit;
end;
if not rltInterpreter.CallSetRoundState(rsBeting) then
begin
MessageBox(Handle, '恢复游戏服务失败', '', MB_OK or MB_ICONERROR);
end;
end;
procedure TMainForm.DownloadPlayerinfoActionExecute(Sender: TObject);
var
I, R :integer;
APlayerList : TPlayerList;
CPlayerInfo : TPlayerInfo;
CPPlayerInfo : PPlayerInfo;
ExcelApp,WorkBook,Sheet:Variant; //声明为OLE Automation 对象
FileName : String;
Success : boolean;
const
Title : array [1..6] of String = (
'玩家帐号',
'密码',
'玩家姓名',
'当前余额',
'最后更新时间',
'备注'
);
begin
if RoundState <> rsStop then
if IDYES <> MessageBox(Handle, '建议在游戏停止时进行此操作,是否继续?','',
MB_YesNo or MB_ICONQUESTION) then Exit;
SaveDialog1.FileName := '玩家帐号'+FormatDateTime('yymmddhhnn', now);
if not SaveDialog1.Execute then Exit;
FileName := SaveDialog1.FileName;
FileName:=trim(FileName);
if length(FileName)=0 then
begin
ShowMessage('您未选择 Excel 文件!');
Exit;
end;
//打开选定的EXCEL文件
try
ExcelApp:=CreateOleObject('Excel.Application');
except
ShowMessage('您的机器里未安装Microsoft Excel。');
Exit;
end;
Cursor:=crHourGlass;
try
WorkBook:=ExcelApp.WorkBooks.Add;
Excelapp.ActiveWorkbook.Worksheets.Add;
Sheet:=Excelapp.ActiveSheet;
Sheet.Name := '玩家列表';
FillChar(APlayerList, sizeof(APlayerList), #0);
APlayerList.Size := 0;
APlayerList.Flag := PLFAllPlayer;
APlayerList.LastUpdate := 0;
APlayerList.Data := nil;
APlayerList := rltInterpreter.CallGetPlayerList(APlayerList);
for i := 1 to High(Title) do
begin
sheet.cells[1,i].Value := Title[i];
end;
ExcelApp.Cells.Select;
ExcelApp.Selection.NumberFormatLocal := '@';
for r := 0 to APlayerList.PlayerCount-1 do
begin
CPlayerInfo := PPlayerInfo(Pchar(APlayerList.Data)+r * sizeof(tplayerinfo))^;
with CPlayerInfo do
begin
Sheet.cells[r+2,1 ].Value := String(ID);
Sheet.cells[r+2,2 ].Value := String(password);
Sheet.cells[r+2,3 ].Value := String(UserName);
Sheet.cells[r+2,4 ].Value := IntToStr(money);
Sheet.cells[r+2,5 ].Value := FormatDateTime('yyyy-MM-dd hh:mm:ss',LastActiveTime);
Sheet.cells[r+2,6 ].Value := String(Memo);
end;
ShowLoading(Format('已导出%d条',[r+1]));
end;
ShowLoading('保存数据中...');
ExcelApp.ActiveWorkbook.SaveAs(FileName);
Success := true;
finally
HideLoading;
Cursor:=crDefault;
WorkBook.Close;
ExcelApp.Quit;
ExcelApp:=Unassigned;
if Success then
ShowMessage('数据成功导出!!!');
end;
end;
procedure TMainForm.UpLoadPlayerInfoActionExecute(Sender: TObject);
var
I, R :integer;
APlayerList : TPlayerList;
CPlayerInfo : TPlayerInfo;
CPPlayerInfo : PPlayerInfo;
xlsFilename : String;
eclApp,WorkBook,sheet:Variant; //声明为OLE Automation 对象
nopage : integer;
strpage : String;
ArrayOfPlayerInfo : TArrayOfPlayerInfo;
const
Title : array [1..6] of String = (
'玩家帐号',
'密码',
'玩家姓名',
'当前余额',
'最后更新时间',
'备注'
);
begin
if not rltSocketConnection.Connected then Exit;
if not (RoundState in [rsStop] )then
begin
MessageBox(Handle, '必须在游戏停止时进行此操作,并且会覆盖玩家数据!','',
MB_ICONERROR);
Exit;
end;
if not OpenDialog2.Execute then Exit;
xlsFilename := OpenDialog2.FileName;
xlsFilename:=trim(xlsFilename);
if length(xlsFilename)=0 then
begin
ShowMessage('您未选择 Excel 文件!');
Exit;
end;
//打开选定的EXCEL文件
try
eclApp:=CreateOleObject('Excel.Application');
except
ShowMessage('您的机器里未安装Microsoft Excel。');
Exit;
end;
WorkBook := eclApp.WorkBooks.Open(xlsFilename);
//Sheet := eclApp.ActiveWorkbook.WorkSheets[1];
// eclApp.WorkBooks.add;
// eclApp.WorkBooks[1].WorkSheets[1].Name := '玩家列表';
// Sheet := eclApp.WorkBooks[1].WorkSheets[1];
// eclApp.WorkBooks[1].Saved := True;
FillChar(APlayerList, sizeof(APlayerList), #0);
APlayerList.Size := 0;
APlayerList.Flag := PLFAllPlayer;
APlayerList.LastUpdate := 0;
//准备3万人的空间
APlayerList.Data := @ArrayOfPlayerInfo;
// APlayerList := rltInterpreter.CallGetPlayerList(APlayerList);
Cursor:=crHourGlass;
try
//WorkBook:=eclApp.workBooks.CreateFile(xlsFileName);
nopage := 1;
if nopage>eclapp.ActiveWorkbook.Worksheets.count then
begin
strpage:=inttostr(eclapp.ActiveWorkbook.Worksheets.count);
showmessage('选择的页数大于工作簿的页数,工作簿的页数为'+strpage);
exit;
end;
sheet:=eclapp.ActiveWorkbook.Worksheets[nopage];
r := 0;
try
while (not VarIsNull(Sheet.cells[r+2,1 ])) and (VarToStr(Sheet.cells[r+2,1 ]) <>'')and (R < 30000) do
begin
with ArrayOfPlayerInfo[r] do
begin
ID:= VarToStr(Sheet.cells[r+2,1]);
password :=VarToStr(Sheet.cells[r+2,2 ]);
UserName :=VarToStr(Sheet.cells[r+2,3 ]);
money := Sheet.cells[r+2,4 ];
LastActiveTime :=VarToDateTime(Sheet.cells[r+2,5 ]);
Memo :=VarToStr( Sheet.cells[r+2,6 ]);
end;
inc(R);
end;
APlayerList.PlayerCount := R;
except
if R>=0 then
MessageBox(Handle, Pchar(Format('第%d个用户(帐号可能是%s)的数据有问题!', [R+1, ArrayOfPlayerInfo[r].ID ])), '', MB_OK);
Exit;
end;
//R = RowCount;
APlayerList.Size := sizeof(TPlayerInfo) * R;
if rltInterpreter.CallSetPlayerList(APlayerList) then
MessageBox(Handle, '用户上传成功!','', MB_OK)
else
MessageBox(Handle, '用户上传失败!','', MB_OK);
finally
Cursor:=crDefault;
WorkBook.Close;
sheet := NULL;
WorkBook := NULL;
eclApp.Quit;
eclApp:=Unassigned;
end;
end;
procedure TMainForm.DownLoadGameLogActionExecute(Sender: TObject);
//下载游戏日志
var
I, J :integer;
CArrayofRoundInfo : TArrayofRoundInfo;
CRoundInfo : TRoundInfoLog;
Count : integer;
ExcelApp,WorkBook,Sheet, range:Variant; //声明为OLE Automation 对象
FileName : String;
Success : boolean;
const
Title : array [1..11] of String = (
'局',
'盘',
'前期余额',
'红色',
'黑色',
'绿色',
'号码',
'颜色',
'时间',
'本期盈利',
'本期余额');
IndexToColorStr : array [0..2] of String = ('红色',
'黑色',
'绿色');
AMStr : Array [boolean] of String = ('(干预)','(自动)');
Merges :array [0..6, 0..1] of TPoint =
( ((x:1; y:1),(x:2; y : 1)),( (x:1; y:2),(x:2; y : 2)),
((x:1; y:3),(x:2; y : 3)),
((x:1; y:4),(x:1; y : 6)),( (x:1; y:7),(x:1; y : 9)),
((x:1; y:10),(x:2; y : 10)),( (x:1; y:11),(x:2; y : 11))); //合并单元格
begin
if RoundState <> rsStop then
if IDYES <> MessageBox(Handle, '建议在游戏停止时进行此操作,是否继续?','',
MB_YesNo or MB_ICONQUESTION) then Exit;
SaveDialog1.FileName := '游戏日志'+FormatDateTime('yymmddhhnn', now);
if not SaveDialog1.Execute then Exit;
FileName := SaveDialog1.FileName;
FileName:=trim(FileName);
if length(FileName)=0 then
begin
ShowMessage('您未选择 Excel 文件!');
Exit;
end;
//打开选定的EXCEL文件
try
ExcelApp:=CreateOleObject('Excel.Application');
except
ShowMessage('您的机器里未安装Microsoft Excel。');
Exit;
end;
Cursor:=crHourGlass;
try
WorkBook:=ExcelApp.WorkBooks.Add;
Excelapp.ActiveWorkbook.Worksheets.Add;
Sheet:=Excelapp.ActiveSheet;
Sheet.Name := '游戏日志';
ShowLoading('下载游戏日志中,请稍等...');
Count := rltInterpreter.CallGetRoundInfoLog(CArrayofRoundInfo);
for i := 0 to 6 do
begin
range:=sheet.range[sheet.cells[Merges[i,0].X,Merges[i,0].Y],sheet.cells[Merges[i,1].X,
Merges[i,1].Y]];//选定表格
range.select;
range.merge; //合并单元格
Range.HorizontalAlignment:= xlCenter;
Range.VerticalAlignment:= xlCenter;
// Range.Borders.LineStyle:=1;//加边框
end;
range:=sheet.range[sheet.cells[1,1],sheet.cells[2,11]];
// Range.Interior.ColorIndex:=2;
sheet.cells[1,4].Value:='下注金额';
sheet.cells[1,7].Value:='开盘';
for i := 1 to High(Title) do
begin
if i in [4, 5,6,7,8,9] then
sheet.cells[2,i].Value := Title[i]
else
sheet.cells[1,i].Value := Title[i];
end;
//ExcelApp.Cells.Select;
//ExcelApp.Selection.NumberFormatLocal := '@';
for J := 0 to count -1 do
begin
ShowLoading(Format('保存日志 [%d] 条', [j]));
CRoundInfo := CArrayofRoundInfo[j];
with CArrayofRoundInfo[j] do
begin
dvalue := r + b + g;
case resultcolor of
0:dvalue := dvalue - r * 2;
1:dvalue := dvalue - b * 2;
2:dvalue := dvalue - g * 36;
end;
Sheet.cells[j+3, 1].Value := Roundno;
Sheet.cells[j+3, 2].Value := wheelno;
Sheet.cells[j+3, 3].Value := value - dvalue;
Sheet.cells[j+3, 4].Value := r;
Sheet.cells[j+3, 5].Value := b;
Sheet.cells[j+3, 6].Value := g;
Sheet.cells[j+3, 7].Value := result;
Sheet.cells[j+3, 8].Value := IndexToColorStr[resultcolor]+ AMStr[auto];
Sheet.cells[j+3, 9].Value := FormatDateTime('yyyy-MM-dd hh:mm:ss',datetime);
Sheet.cells[j+3, 10].Value := dvalue;
Sheet.cells[j+3, 11].Value := value;
end;
end;
ShowLoading('保存数据中...');
ExcelApp.ActiveWorkbook.SaveAs(FileName);
Success := true;
finally
HideLoading;
Cursor:=crDefault;
WorkBook.Close;
ExcelApp.Quit;
ExcelApp:=Unassigned;
if Success then
ShowMessage('数据成功导出!!!');
end;
end;
procedure TMainForm.DownloadPlayerBetLogActionExecute(Sender: TObject);
var
I, J :integer;
CArrayofPlayerBetInfo : TArrayofPlayerBetInfo;
CPlayerBetInfo : TPlayerBetInfo;
Count : integer;
ExcelApp,WorkBook,Sheet, range:Variant; //声明为OLE Automation 对象
FileName : String;
Success : boolean;
DValue : integer;
const
Title : array [1..12] of String = (
'局',
'盘',
'帐号',
'前期余额',
'红色',
'黑色',
'绿色',
'号码',
'颜色',
'时间',
'本期盈利',
'本期余额');
Merges :array [0..7, 0..1] of TPoint =
( ((x:1; y:1),(x:2; y : 1)),( (x:1; y:2),(x:2; y : 2)),
((x:1; y:3),(x:2; y : 3)),( (x:1; y:4),(x:2; y : 4)),
((x:1; y:5),(x:1; y : 7)),( (x:1; y:8),(x:1; y : 10)),
((x:1; y:11),(x:2; y : 11)),( (x:1; y:12),(x:2; y : 12))); //合并单元格
ColorStr : array[0..2] of String = ('红色','黑色','绿色');
begin
if RoundState <> rsStop then
if IDYES <> MessageBox(Handle, '建议在游戏停止时进行此操作,是否继续?','',
MB_YesNo or MB_ICONQUESTION) then Exit;
SaveDialog1.FileName := '玩家下注日志'+FormatDateTime('yymmddhhnn', now);
if not SaveDialog1.Execute then Exit;
FileName := SaveDialog1.FileName;
FileName:=trim(FileName);
if length(FileName)=0 then
begin
ShowMessage('您未选择 Excel 文件!');
Exit;
end;
//打开选定的EXCEL文件
try
ExcelApp:=CreateOleObject('Excel.Application');
except
ShowMessage('您的机器里未安装Microsoft Excel。');
Exit;
end;
Cursor:=crHourGlass;
try
WorkBook:=ExcelApp.WorkBooks.Add;
Excelapp.ActiveWorkbook.Worksheets.Add;
Sheet:=Excelapp.ActiveSheet;
Sheet.Name := '玩家日志';
ShowLoading('下载游戏日志中,请稍等...');
Count := rltInterpreter.CallGetPlayerBetLog(CArrayofPlayerBetInfo);
Cursor:=crHourGlass;
for i := 0 to 7 do
begin
range:=sheet.range[sheet.cells[Merges[i,0].X,Merges[i,0].Y],sheet.cells[Merges[i,1].X,
Merges[i,1].Y]];//选定表格
range.select;
range.merge; //合并单元格
Range.HorizontalAlignment:= xlCenter;
Range.VerticalAlignment:= xlCenter;
// Range.Borders.LineStyle:=1;//加边框
end;
range:=sheet.range[sheet.cells[1,1],sheet.cells[2,12]];
// Range.Interior.ColorIndex:=2;
sheet.cells[1,5].Value:='下注金额';
sheet.cells[1,8].Value:='开盘';
for i := 1 to High(Title) do
begin
if i in [5,6,7,8,9,10] then
sheet.cells[2,i].Value := Title[i]
else
sheet.cells[1,i].Value := Title[i];
end;
for j := 0 to count -1 do
begin
ShowLoading(Format('保存日志 [%d] 条', [J]));
CPlayerBetInfo := CArrayofPlayerBetInfo[J];
with CArrayofPlayerBetInfo[J] do
begin
DValue := Settlement - PreMoney;
Sheet.cells[j+3, 1].Value := RoundNo;
Sheet.cells[j+3, 2].Value := WheelNo;
Sheet.cells[j+3, 3].Value := PlayerID;
Sheet.cells[j+3, 4].Value := PreMoney;
Sheet.cells[j+3, 5].Value := r;
Sheet.cells[j+3, 6].Value := b;//FormatDateTime('yyyy-MM-dd hh:mm:ss',datetime);
Sheet.cells[j+3, 7].Value := g;//RoundNo;
Sheet.cells[j+3, 8].Value := Result;// WheelNo;
if Result >=0 then
Sheet.cells[j+3, 9].Value :=ColorStr[ResultColor]// Result;
else if DValue >=0 then
Sheet.cells[j+3, 9].Value :='充值'
else if DValue <0 then
Sheet.cells[j+3, 9].Value :='金额操作';
Sheet.cells[j+3, 10].Value := FormatDateTime('yyyy-MM-dd hh:mm:ss',datetime);;
Sheet.cells[j+3, 11].Value := DValue;
Sheet.cells[j+3, 12].Value := Settlement;
end;
end;
ShowLoading('保存数据中...');
ExcelApp.ActiveWorkbook.SaveAs(FileName);
Success := true;
finally
HideLoading;
Cursor:=crDefault;
WorkBook.Close;
ExcelApp.Quit;
ExcelApp:=Unassigned;
if Success then
ShowMessage('数据成功导出!!!');
end;
end;
procedure TMainForm.ClearPlayerBetLogActionExecute(Sender: TObject);
begin
if not rltSocketConnection.Connected then Exit;
if not (RoundState in [rsStop] )then
begin
MessageBox(Handle, '必须在游戏停止时进行此操作!','',
MB_ICONERROR);
Exit;
end;
if IDYes <> MessageBox(Handle, '是否清除服务器玩家下注日志资料!', '', MB_ICONQUESTION or MB_YesNO) then Exit;
if rltInterpreter.CallClearPlayerBetInfoLog then
MessageBox(Handle, '清除服务器玩家下注日志资料成功', '', MB_OK or MB_ICONINFORMATION)
else
MessageBox(Handle, '清除服务器玩家下注日志资料失败', '', MB_OK or MB_ICONERROR);
end;
procedure TMainForm.ClearPlayerInfoActionExecute(Sender: TObject);
begin
if not rltSocketConnection.Connected then Exit;
if not (RoundState in [rsStop] )then
begin
MessageBox(Handle, '必须在游戏停止时进行此操作!','',
MB_ICONERROR);
Exit;
end;
if IDYes <> MessageBox(Handle, '是否清除服务器玩家资料!', '', MB_ICONQUESTION or MB_YesNO) then Exit;
if rltInterpreter.CallClearPlayerList then
MessageBox(Handle, '清除服务器玩家资料成功', '', MB_OK or MB_ICONINFORMATION)
else
MessageBox(Handle, '清除服务器玩家资料失败', '', MB_OK or MB_ICONERROR);
end;
procedure TMainForm.ClearGameLogActionExecute(Sender: TObject);
begin
if not rltSocketConnection.Connected then Exit;
if not (RoundState in [rsStop] )then
begin
MessageBox(Handle, '必须在游戏停止时进行此操作!','',
MB_ICONERROR);
Exit;
end;
if IDYes <> MessageBox(Handle, '是否清除服务器游戏日志资料!', '', MB_ICONQUESTION or MB_YesNO) then Exit;
if rltInterpreter.CallClearRoundInfoLog then
MessageBox(Handle, '清除服务器游戏日志资料成功', '', MB_OK or MB_ICONINFORMATION)
else
MessageBox(Handle, '清除服务器游戏日志资料失败', '', MB_OK or MB_ICONERROR);
end;
procedure TMainForm.StopActionExecute(Sender: TObject);
begin
if rltInterpreter = nil then
begin
Exit;
end;
if not rltInterpreter.CallSetRoundState(rsStop) then
begin
MessageBox(Handle, '停止游戏服务失败', '', MB_OK or MB_ICONERROR);
end
else
MessageBox(Handle, '游戏服务已停止。', '', MB_OK or MB_ICONINFORMATION);
end;
procedure TMainForm.StopOnRoundEndActionExecute(Sender: TObject);
begin
if rltInterpreter = nil then
begin
Exit;
end;
if not rltInterpreter.CallSetRoundState(rsPauseAtRoundEnd) then
begin
MessageBox(Handle, '设置本盘结束时暂停游戏服务失败!', '', MB_OK or MB_ICONERROR);
end;
end;
procedure TMainForm.ActionChangePasswordExecute(Sender: TObject);
begin
if rltInterpreter = nil then Exit;
ChangePassForm := TChangepassForm.Create(Application);
try
ChangepassForm.UserName.Text := UserName;
ChangepassForm.Password.Text := Password;
ChangepassForm.Changepassword2.Text := Password;
while ChangepassForm.ShowModal = mrOK do
begin
if ChangepassForm.Password.Text = ChangepassForm.Changepassword2.Text then
begin
if rltInterpreter.CallCheckAdmin(1, ChangepassForm.UserName.Text+';'+
ChangepassForm.Password.Text) then
begin
UserName := ChangepassForm.UserName.Text;
Password := ChangepassForm.Password.Text;
MessageBox(Handle, '密码修改成功!','', MB_ICONINFORMATION);
break;
end else
begin
break;
MessageBox(Handle, '密码修改失败!','', MB_ICONERROR);
end;
end else
begin
MessageBox(Handle, '两次输入密码必须相同!','', MB_ICONERROR);
end;
end;
finally
end;
end;
procedure TMainForm.ActionManager1Update(Action: TBasicAction;
var Handled: Boolean);
begin
Action6.Enabled := rltInterpreter = nil;
ActionChangePassword.Enabled := rltInterpreter <> nil;
PauseGameAction.Enabled := PauseGameAction.Enabled and (rltInterpreter <> nil);
ResumeAction.Enabled := (rltInterpreter <> nil) and ResumeAction.Enabled;
ResetGameAction.Enabled := rltInterpreter <> nil;
StopAction.Enabled := rltInterpreter <> nil;
RoundMonitorAction.Enabled := rltInterpreter <> nil;
N5.Enabled := rltInterpreter <> nil;
DownloadPlayerinfoAction.Enabled := rltInterpreter <> nil;
DownloadPlayerBetLogAction.Enabled := rltInterpreter <> nil;
DownLoadGameLogAction.Enabled := rltInterpreter <> nil;
UpLoadPlayerInfoAction.Enabled := rltInterpreter <> nil;
ClearPlayerInfoAction.Enabled := rltInterpreter <> nil;
ClearPlayerBetLogAction.Enabled := rltInterpreter <> nil;
ClearGameLogAction.Enabled := rltInterpreter <> nil;
end;
procedure TMainForm.N111Click(Sender: TObject);
begin
if rltInterpreter <> nil then
begin
if rltInterpreter.CallSetLock(True) then
begin
MessageBox(Handle, '锁定成功!','', MB_ICONINFORMATION);
end else
begin
MessageBox(Handle, '锁定失败!','', MB_ICONERROR);
end;
end;
end;
procedure TMainForm.N112Click(Sender: TObject);
begin
if rltInterpreter <> nil then
begin
if rltInterpreter.CallSetLock(false) then
begin
MessageBox(Handle, '解锁成功!','', MB_ICONINFORMATION);
end else
begin
MessageBox(Handle, '解锁失败!','', MB_ICONERROR);
end;
end;
end;
end.