Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 7.07 KB | None | 0 0
  1. unit UnitChangeProfile;
  2.  
  3. interface
  4.  
  5. uses
  6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7.   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, UnitListOfPlayers,
  8.   Vcl.Menus;
  9.  
  10. type
  11.   TFormChangeProfile = class(TForm)
  12.     Label1: TLabel;
  13.     edtPlayerName: TEdit;
  14.     btSaveName: TButton;
  15.     btBackToMenu: TButton;
  16.     btAddPlayer: TButton;
  17.     cbChoosePlayer: TComboBox;
  18.     Label2: TLabel;
  19.     lCurrentBalance: TLabel;
  20.     lRecordBalance: TLabel;
  21.     btChoosePlayer: TButton;
  22.     btDeletePayer: TButton;
  23.     PopupMenu: TPopupMenu;
  24.     procedure FormShow(Sender: TObject);
  25.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  26.     procedure btBackToMenuClick(Sender: TObject);
  27.     procedure btSaveNameClick(Sender: TObject);
  28.     procedure btChoosePlayerClick(Sender: TObject);
  29.     procedure cbChoosePlayerSelect(Sender: TObject);
  30.     procedure btAddPlayerClick(Sender: TObject);
  31.     procedure UpdateComboBox;
  32.     procedure btDeletePayerClick(Sender: TObject);
  33.   private
  34.     { Private declarations }
  35.   public
  36.     { Public declarations }
  37.   end;
  38.  
  39. var
  40.   FormChangeProfile: TFormChangeProfile;
  41.  
  42. implementation
  43.  
  44. {$R *.dfm}
  45.  
  46. uses UnitMainMenu;
  47.  
  48. procedure TFormChangeProfile.btAddPlayerClick(Sender: TObject);
  49. const
  50.    MessageSamePlayers = 'Игрок с таким именем уже существует!';
  51.    UncorrectData = 'Имя игрока должно содержать более 3 символов';
  52.    MinName = 3;
  53. var
  54.    CurPlayer: PPlayer;
  55.    StartData: TData;
  56. begin
  57.    StartData.Balance := '1000';
  58.    StartData.MaxBalance := '1000';
  59.    StartData.Name := edtPlayerName.Text;
  60.    if (StartData.Name <> '') and (Length(StartData.Name) >= MinName) then
  61.    begin
  62.       if not FindPlayer(FirstPl, edtPlayerName.Text, CurPlayer) then
  63.       begin
  64.          AddToEnd(LastPl, StartData);
  65.          edtPlayerName.Clear;
  66.       end
  67.       else
  68.          MessageBox(Handle, MessageSamePlayers, 'Внимание!', MB_OK);
  69.    end
  70.    else
  71.       MessageBox(Handle, UncorrectData, 'Внимание!', MB_OK);
  72.    UpdateComboBox;
  73. end;
  74.  
  75. procedure TFormChangeProfile.btBackToMenuClick(Sender: TObject);
  76. const
  77.    MessageSaveChanges = 'Вы желаете сохранить изменения?';
  78. begin
  79.    edtPlayerName.Clear;
  80.    cbChoosePlayer.Clear;
  81.    FormChangeProfile.Hide;
  82.    FormMainMenu.Show;
  83. end;
  84.  
  85. procedure TFormChangeProfile.btSaveNameClick(Sender: TObject);
  86. const
  87.    EmptyName = 'Пустое поле!' + #13#10
  88.       + 'Имя игрока должно содеражать более 3-х символов!';
  89.    UncorrectName = 'Имя игрока должно содеражать более 3-х символов!' + #13#10
  90.       + 'Пожалуйста введите корректное имя игрока';
  91.    NoChange = 'Не было внесено ниикаких изменений!';
  92.    CannotChange = 'Данные этого игрока не подлежат изменению!';
  93.    PlayerExist = 'Игрок с таким именем уже существует!';
  94.    MinName = 3;
  95. var
  96.    CurName, NewName: String;
  97.    CurPlayer: PPlayer;
  98. begin
  99.    CurName := cbChoosePlayer.Items[cbChoosePlayer.ItemIndex];
  100.    if CurName = 'Player1' then
  101.    begin
  102.       MessageBox(Handle, CannotChange, 'Внимание!', MB_ICONSTOP + MB_OK);
  103.       Exit;
  104.    end;
  105.    NewName := edtPlayerName.Text;
  106.    if NewName <> '' then
  107.    begin
  108.       if NewName <> CurName then
  109.          if Length(NewName) >= MinName then
  110.          begin
  111.             if not FindPlayer(FirstPl, NewName, CurPlayer) then
  112.             begin
  113.                if FindPlayer(FirstPl, CurName, CurPlayer) then
  114.                   CurPlayer^.DataPl.Name := NewName;
  115.                btSaveName.Enabled := False;
  116.                UpdateComboBox;
  117.             end
  118.             else
  119.                MessageBox(Handle, PlayerExist, 'Внимание!', MB_ICONINFORMATION + MB_OK);
  120.             edtPlayerName.Clear;
  121.          end
  122.          else
  123.             MessageBox(Handle, UncorrectName, 'Внимание!', MB_ICONSTOP + MB_OK)
  124.       else
  125.          MessageBox(Handle, NoChange, 'Внимание!', MB_ICONSTOP + MB_OK);
  126.    end
  127.    else
  128.       MessageBox(Handle, EmptyName, 'Внимание!', MB_ICONSTOP + MB_OK);
  129. end;
  130.  
  131. procedure TFormChangeProfile.btDeletePayerClick(Sender: TObject);
  132. const
  133.    MessageUncorrectName = 'Некорректное имя игрока!';
  134.    MinName = 3;
  135. var
  136.    PlayerForDelete: ShortString;
  137. begin
  138.    PlayerForDelete := edtPlayerName.Text;
  139.    if Length(PlayerForDelete) >= 3 then
  140.    begin
  141.       DeletePlayer(FirstPl, LastPl, PlayerForDelete);
  142.       UpdateComboBox;
  143.       edtPlayerName.Clear;
  144.       lCurrentBalance.Caption := '';
  145.       lRecordBalance.Caption := '';
  146.    end
  147.    else
  148.       MessageBox(Handle, MessageUncorrectName, 'Внимание!', MB_ICONINFORMATION + MB_OK);
  149. end;
  150.  
  151. procedure TFormChangeProfile.btChoosePlayerClick(Sender: TObject);
  152. const
  153.    MessageNotChoice = 'Игрок не выбран! Пожалуйста выберите игрока или вернитесь '
  154.       + 'в главное меню через "Вернуться"';
  155. var
  156.    CurName: String;
  157.    CurPlayer: PPlayer;
  158. begin
  159.    CurName :=cbChoosePlayer.Items[cbChoosePlayer.ItemIndex];
  160.    if CurName <> '' then
  161.    begin
  162.       if FindPlayer(FirstPl, CurName, CurPlayer) then
  163.       begin
  164.          Balance := CurPlayer^.DataPl.Balance;
  165.          PlayerName := CurPlayer^.DataPl.Name;
  166.          btBackToMenuClick(Sender);
  167.       end;
  168.    end
  169.    else
  170.       MessageBox(Handle, MessageNotChoice, '', MB_ICONSTOP + MB_OK);
  171. end;
  172.  
  173. procedure TFormChangeProfile.cbChoosePlayerSelect(Sender: TObject);
  174. var
  175.    Name: String;
  176.    CurPlayer: PPlayer;
  177. begin
  178.    Name := cbChoosePlayer.Items[cbChoosePlayer.ItemIndex];
  179.    if FindPlayer(FirstPl, Name, CurPlayer) then
  180.    begin
  181.       lCurrentBalance.Caption := 'Баланс - ' + CurPlayer^.DataPl.Balance;
  182.       lRecordBalance.Caption := 'Рекорд - ' + CurPlayer^.DataPl.MaxBalance;
  183.       edtPlayerName.Text := CurPlayer^.DataPl.Name;
  184.    end;
  185.    btSaveName.Enabled := True;
  186. end;
  187.  
  188. procedure TFormChangeProfile.FormClose(Sender: TObject; var Action: TCloseAction);
  189. begin
  190.    btBackToMenu.Click;
  191. end;
  192.  
  193. procedure TFormChangeProfile.FormShow(Sender: TObject);
  194. var
  195.    CurPlayer: PPlayer;
  196. begin
  197.    edtPlayerName.Text := PlayerName;
  198.    CurPlayer := FirstPl;
  199.    while CurPlayer <> nil do
  200.    begin
  201.       cbChoosePlayer.Items.Add(CurPlayer^.DataPl.Name);
  202.       CurPlayer := CurPlayer^.NextPl;
  203.    end;
  204.    if FindPlayer(FirstPl, PlayerName, CurPlayer) then
  205.    begin
  206.       lCurrentBalance.Caption := 'Баланс - ' + CurPlayer^.DataPl.Balance;
  207.       lRecordBalance.Caption := 'Рекорд - ' + CurPlayer^.DataPl.MaxBalance;
  208.       edtPlayerName.Text := CurPlayer^.DataPl.Name;
  209.    end;
  210. end;
  211.  
  212. procedure TFormChangeProfile.UpdateComboBox;
  213. var
  214.    CurPlayer: PPlayer;
  215. begin
  216.    cbChoosePlayer.Clear;
  217.    CurPlayer := FirstPl;
  218.    while CurPlayer <> nil do
  219.    begin
  220.       cbChoosePlayer.Items.Add(CurPlayer^.DataPl.Name);
  221.       CurPlayer := CurPlayer^.NextPl;
  222.    end;
  223. end;
  224.  
  225. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement