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

📄 player.pas

📁 一般的数据库管理系统 uses Classes, SConnectEx, TltConst, ExtCtrls, MMSystem, Types, windows, TltLogic , Sy
💻 PAS
字号:
unit player;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ActnList, ActnMan, ComCtrls, ToolWin, ActnCtrls, ActnMenus,
  Grids, DB, StdCtrls, ExtCtrls;

type
  TPlayerForm = class(TForm)
    ActionManager1: TActionManager;
    Action1: TAction;
    Action2: TAction;
    Action3: TAction;
    ActionMainMenuBar1: TActionMainMenuBar;
    StatusBar1: TStatusBar;
    Action4: TAction;
    Action5: TAction;
    ListView1: TListView;
    Action6: TAction;
    Timer1: TTimer;
    AddAction: TAction;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Action1Execute(Sender: TObject);
    procedure Action2Execute(Sender: TObject);
    procedure Action3Execute(Sender: TObject);
    procedure Action4Execute(Sender: TObject);
    procedure Action5Execute(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Action6Execute(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure AddActionExecute(Sender: TObject);
  private
    { Private declarations }
    FLastPlayerUpdatetime : TDateTime;
    procedure ClearListView;
  public
    { Public declarations }
    procedure UpDatePlayerList();
  end;

var
  PlayerForm: TPlayerForm;

implementation

uses DM1, main, TltConst, playeredit;

{$R *.dfm}

procedure TPlayerForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  PlayerForm := nil;
  Action := caFree;
end;

procedure TPlayerForm.Action1Execute(Sender: TObject);
var
  CPlayerEditInfo : TPlayerEditInfo;
  CListItem : TListItem;
  R : TRect;
begin
  //增加玩家,提示编辑框
  if rltInterpreter = nil then Exit;
  FillChar(CPlayerEditInfo, sizeof(CPlayerEditInfo), #0);
  CPlayerEditInfo.EditFlag := efNewID;
  CPlayerEditInfo := rltInterpreter.CallPlayerEdit(CPlayerEditInfo);
  CPlayerEditInfo.EditFlag := efCreatePlayer;
  if EditPlayer(CPlayerEditInfo) then begin
    CPlayerEditInfo := rltInterpreter.CallPlayerEdit(CPlayerEditInfo);
    if CPlayerEditInfo.EditFlag = efError then begin
      Application.MessageBox('创建用户失败', '用户', 0);
    end else begin
      UpDatePlayerList;
      CListItem := ListView1.FindCaption(0, CPlayerEditInfo.PlayerInfo.ID, false, true, true);
      if Assigned(CListItem) then begin
        CListItem.ListView.SetFocus;
        CListItem.Focused := true;
        CListItem.Selected := true;
       // CListItem.ListView.Scroll(100,100);

        CListItem.ListView.Scroll(CListItem.Left,CListItem.Top-CListItem.ListView.Height div 2);
      end;
    end;
  end;
  //提交结果


  //返回结果

end;

procedure TPlayerForm.Action2Execute(Sender: TObject);
var
  CPlayerEditInfo : TPlayerEditInfo;
  CListItem : TListItem;
begin
  //增加玩家,提示编辑框
  if rltInterpreter = nil then Exit;

  if ListView1.Selected = nil then Exit;
  CPlayerEditInfo.PlayerInfo := TPlayerInfo((ListView1.Selected.Data)^);

  if IDYes <> MessageBox(Handle, '是否删除用户?','', MB_YESNO) then Exit;

  CPlayerEditInfo.EditFlag := efDeletePlayer;
  CPlayerEditInfo:= rltInterpreter.CallPlayerEdit(CPlayerEditInfo);
  if CPlayerEditInfo.EditFlag = efError then begin
    Application.MessageBox('删除用户失败', '用户', 0);
  end else begin
    ListView1.DeleteSelected;
  end;
end;

procedure TPlayerForm.Action3Execute(Sender: TObject);
var
  CPlayerEditInfo : TPlayerEditInfo;
begin
  //增加玩家,提示编辑框
  if rltInterpreter = nil then Exit;
  if ListView1.Selected = nil then Exit;
  CPlayerEditInfo.PlayerInfo := TPlayerInfo((ListView1.Selected.Data)^);

  CPlayerEditInfo.EditFlag := efEditPlayer;
  if EditPlayer(CPlayerEditInfo) then begin
    CPlayerEditInfo := rltInterpreter.CallPlayerEdit(CPlayerEditInfo);
    if CPlayerEditInfo.EditFlag = efError then begin
      Application.MessageBox('修改用户失败', '用户', 0);
    end else begin
      UpDatePlayerList;
    end;
  end;
end;

procedure TPlayerForm.Action4Execute(Sender: TObject);
begin
//下载用户列表
  if rltInterpreter = nil then Exit;


end;

procedure TPlayerForm.Action5Execute(Sender: TObject);
begin
//上传用户列表;
  if rltInterpreter = nil then Exit;

end;

procedure TPlayerForm.FormCreate(Sender: TObject);
begin
  if rltInterpreter = nil then Exit;
//  rltInterpreter.CallPlayerEdit()

end;

procedure TPlayerForm.UpDatePlayerList;
var
  I :integer;
  APlayerList : TPlayerList;
  CListItem : TListItem;
  CPlayerInfo : TPlayerInfo;
  CPPlayerInfo : PPlayerInfo;
begin
  FillChar(APlayerList, sizeof(APlayerList), #0);
  APlayerList.Size := 0;
  APlayerList.Flag := PLFLastChangePlayer;
  APlayerList.LastUpdate := FLastPlayerUpdatetime;
  APlayerList.Data := nil;
  APlayerList := rltInterpreter.CallGetPlayerList(APlayerList);
  for I := 0 to APlayerList.PlayerCount-1 do begin
    CPlayerInfo := PPlayerInfo(Pchar(APlayerList.Data)+I * sizeof(tplayerinfo))^;
    CListItem := ListView1.FindCaption(0, CPlayerInfo.ID, false, true, true);
    if CListItem = nil then begin
      CListItem := ListView1.Items.Add;
      with CListItem, CPlayerInfo do begin
        Caption := ID;
        SubItems.Add(UserName);
        SubItems.Add(password);
        SubItems.Add(IntToStr(money));
        SubItems.Add(DateTimeToStr(LastActiveTime));
        new(CPPlayerInfo);
        Data := CPPlayerInfo;
        CPPlayerInfo^ := CPlayerInfo;
      end;
    end else begin with CListItem, CPlayerInfo do begin
        Caption := ID;
        SubItems[0] := (UserName);
        SubItems[1] := (password);
        SubItems[2] := (IntToStr(money));
        SubItems[3] :=(DateTimeToStr(LastActiveTime));
        PPlayerInfo(Data)^ := CPlayerInfo;
      end;
    end;
  end;
  StatusBar1.Panels[0].Text := '玩家数:'+ IntToStr(ListView1.Items.Count);
  if APlayerList.Data<>nil then
  FreeMem(APlayerList.data);
  FLastPlayerUpdatetime := APlayerList.LastUpdate;
end;

procedure TPlayerForm.Action6Execute(Sender: TObject);
begin
  if rltInterpreter = nil then Exit;
  ClearListView;
  if PlayerForm = nil then Exit;
  if rltInterpreter = nil then Exit;
  FLastPlayerUpdatetime := 0;
  UpDatePlayerList;
end;

procedure TPlayerForm.Timer1Timer(Sender: TObject);
begin
  if PlayerForm = nil then Exit;
  if rltInterpreter = nil then Exit;
  UpDatePlayerList;
end;

procedure TPlayerForm.FormDestroy(Sender: TObject);
var
  I : integer;
begin
  while ListView1.Items.Count>0 do
  begin
    if ListView1.Items[0].Data <> nil then
      Dispose(PPlayerInfo(ListView1.Items[0].Data));
    ListView1.Items.Delete(0);
  end;
end;

procedure TPlayerForm.ClearListView;
begin
  while ListView1.Items.Count>0 do
  begin
    if ListView1.Items[0].Data <> nil then
      Dispose(PPlayerInfo(ListView1.Items[0].Data));
    ListView1.Items.Delete(0);
  end;
end;

procedure TPlayerForm.AddActionExecute(Sender: TObject);
var
  CPlayerEditInfo : TPlayerEditInfo;
  Value : String;
begin
  //增加玩家,提示编辑框
  if rltInterpreter = nil then Exit;
  if ListView1.Selected = nil then Exit;
  CPlayerEditInfo.PlayerInfo := TPlayerInfo((ListView1.Selected.Data)^);
  Value := '0';
  if Inputquery('充值','【'+CPlayerEditInfo.PlayerInfo.ID+'】充值金额',Value) then begin
    CPlayerEditInfo.EditFlag := efAddMoney;
    try    
      CPlayerEditInfo.PlayerInfo.money := StrToInt(Value);
    except
      MessageBox(Handle, '输入错误','', MB_ICONERROR);
      Exit;
    end;
    CPlayerEditInfo := rltInterpreter.CallPlayerEdit(CPlayerEditInfo);
    if CPlayerEditInfo.EditFlag = efError then begin
      Application.MessageBox('修改用户失败', '用户', 0);
    end else begin
      UpDatePlayerList;
    end;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -