Egor_Vakar

(Delphi) lab4.1 mainUnit

Feb 22nd, 2022 (edited)
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 9.57 KB | None | 0 0
  1. unit lab4_1;
  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.Menus, Vcl.Grids, Vcl.StdCtrls;
  8.  
  9. type
  10.   TMainForm = class(TForm)
  11.     MainMenu: TMainMenu;
  12.     N1: TMenuItem;
  13.     OpenFileMenu: TMenuItem;
  14.     SaveToFileMenu: TMenuItem;
  15.     N4: TMenuItem;
  16.     N5: TMenuItem;
  17.     MainLAbel: TLabel;
  18.     AddButton: TButton;
  19.     ChangeButton: TButton;
  20.     DeleteButton: TButton;
  21.     SortButton: TButton;
  22.     TeamSGrid: TStringGrid;
  23.     OpenFromFile: TOpenDialog;
  24.     SaveToFile: TSaveDialog;
  25.     procedure AddButtonClick(Sender: TObject);
  26.     procedure InstractionClick(Sender: TObject);
  27.     procedure DeveloperInfoClick(Sender: TObject);
  28.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  29.     procedure ChangeClick(Sender: TObject);
  30.     procedure OnCreate(Sender: TObject);
  31.     procedure DeleteClick(Sender: TObject);
  32.     procedure SortButtonClick(Sender: TObject);
  33.     procedure SaveToFileClick(Sender: TObject);
  34.     procedure OpenFromFileClick(Sender: TObject);
  35.   private
  36.     { Private declarations }
  37.   public
  38.     { Public declarations }
  39.   end;
  40.  
  41. var
  42.   MainForm: TMainForm;
  43.  
  44. implementation
  45.     {$R *.dfm}
  46.  
  47. uses InfoUnit, ChangeUnit;
  48.  
  49. type
  50.     TTeam = Record
  51.         TeamName: String[25];
  52.         TeamPoints: Integer;
  53.         TeamCountry: String[25];
  54.         CoachName: String[25];
  55.     End;
  56.     TTeamList = array of TTeam;
  57.  
  58. procedure TMainForm.AddButtonClick(Sender: TObject);
  59. var
  60.     pos : integer;
  61. begin
  62.     TeamInfo.NameEdit.text := '';
  63.     TeamInfo.PointsEdit.text := '';
  64.     TeamInfo.CountryEdit.text := '';
  65.     TeamInfo.CoachEdit.text := '';
  66.     TeamInfo.show;
  67.     MainForm.Enabled := False;
  68. end;
  69.  
  70. procedure TMainForm.ChangeClick(Sender: TObject);
  71. Var
  72.     WND: HWND;
  73.     lpCaption, lpText: PChar;
  74.     Tip: Integer;
  75.     Temp: String;
  76. begin
  77.     if TeamSGrid.RowCount > 1 then
  78.     begin
  79.         Temp := ChangeInfo.MainLabel.Caption;
  80.         ChangeInfo.MainLabel.Caption := Copy(Temp, 1, 40);
  81.         ChangeInfo.MainLabel.Caption := ChangeInfo.MainLabel.Caption + 'изменить';
  82.         ChangeInfo.Show;
  83.         MainForm.Enabled := False;
  84.     end
  85.     else
  86.     begin
  87.         WND := MainForm.Handle;
  88.         lpCaption := 'Ошибка';
  89.         lpText := 'Не добвленно ни 1-й команды'#10#13'Хотите добавить?';
  90.         Tip := MB_YESNO + MB_ICONINFORMATION + MB_DEFBUTTON2;
  91.         Case MessageBox(WND, lpText, lpCaption, Tip) Of
  92.             IDYES : AddButton.Click;
  93.             IDNO:
  94.             begin
  95.                 MainForm.Enabled := True;
  96.                 ChangeInfo.Close;
  97.             end;
  98.         End;
  99.     end;
  100. end;
  101.  
  102. procedure TMainForm.DeleteClick(Sender: TObject);
  103. Var
  104.     WND: HWND;
  105.     lpCaption, lpText: PChar;
  106.     Tip: Integer;
  107.     Temp: String;
  108. begin
  109.     if TeamSGrid.RowCount > 1 then
  110.     begin
  111.         Temp := ChangeInfo.MainLabel.Caption;
  112.         ChangeInfo.MainLabel.Caption := Copy(Temp, 1, 40);
  113.         ChangeInfo.MainLabel.Caption := ChangeInfo.MainLabel.Caption + 'удалить';
  114.         ChangeInfo.Show;
  115.         MainForm.Enabled := False;
  116.     end
  117.     else
  118.     begin
  119.         WND := MainForm.Handle;
  120.         lpCaption := 'Ошибка';
  121.         lpText := 'Не добвленно ни 1-й команды'#10#13'Хотите добавить?';
  122.         Tip := MB_YESNO + MB_ICONINFORMATION + MB_DEFBUTTON2;
  123.         Case MessageBox(WND, lpText, lpCaption, Tip) Of
  124.             IDYES : AddButton.Click;
  125.             IDNO:
  126.             begin
  127.                 MainForm.Enabled := True;
  128.                 ChangeInfo.Close;
  129.             end;
  130.         End;
  131.     end;
  132. end;
  133.  
  134. procedure TMainForm.DeveloperInfoClick(Sender: TObject);
  135. begin
  136.     Application.MessageBox('Студент группы 151002 Вакарь Егор', 'О разработчике');
  137. end;
  138.  
  139.  
  140. procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  141. Var
  142.     WND: HWND;
  143.     lpCaption, lpText: PChar;
  144.     Tip: Integer;
  145. Begin
  146.     WND := MainForm.Handle;
  147.     lpCaption := 'Выход';
  148.     lpText := 'Вы уверены, что хотите выйти?';
  149.     Tip := MB_YESNO + MB_ICONINFORMATION + MB_DEFBUTTON2;
  150.     Case MessageBox(WND, lpText, lpCaption, Tip) Of
  151.         IDYES : CanClose := True;
  152.         IDNO : CanClose := False;
  153.     End
  154. End;
  155.  
  156. procedure TMainForm.InstractionClick(Sender: TObject);
  157. begin
  158.     Application.MessageBox('Программа позволяет работать со списком команд'#10#13'Название, кол-во очков, страна, имя тренера команды', 'Инструкция');
  159. end;
  160.  
  161. procedure TMainForm.OnCreate(Sender: TObject);
  162. begin
  163.     TeamSGrid.Enabled := True;
  164.     TeamSGrid.RowCount := 1;
  165.     TeamSGrid.Cells[0,0]:='Название';
  166.     TeamSGrid.Cells[1,0]:= 'Очки';
  167.     TeamSGrid.Cells[2,0]:= 'Страна';
  168.     TeamSGrid.Cells[3,0]:= 'Тренер';
  169.     TeamSGrid.Enabled := False;
  170. end;
  171.  
  172. procedure TMainForm.OpenFromFileClick(Sender: TObject);
  173. Var
  174.     i, k, WasRows, WasHeight: Integer;
  175.     TempString, TempWord : String;
  176.     IsCorrect: Boolean;
  177.     InputFile: TextFile;
  178. Begin
  179.     If OpenFromFile.Execute() Then
  180.     Begin
  181.         AssignFile(InputFile, OpenFromFile.FileName);
  182.         Reset(InputFile);
  183.         TeamSGrid.Enabled := True;
  184.         i := TeamSGrid.RowCount;
  185.         WasHeight := MainForm.Height;
  186.         WasRows := i;
  187.         IsCorrect := True;
  188.         while IsCorrect and  not Eof(InputFile) do
  189.         Begin
  190.             k := 0;
  191.             TeamSGrid.RowCount := TeamSGrid.RowCount + 1;
  192.             TeamSGrid.Height := TeamSGrid.Height + 24;
  193.             MainForm.Height := MainForm.Height + 24;
  194.             Read(InputFile, TempString);
  195.             While k < 4 do
  196.             begin
  197.                 if k < 3 then
  198.                 begin
  199.                     TempWord := Copy(TempString, 1, Pos(' ', TempString) - 1);
  200.                     Delete(TempString, 1, Pos(' ', TempString));
  201.                 end
  202.                 else
  203.                     TempWord := TempString;
  204.                 try
  205.                     if (k = 1) and ((StrToInt(TempWord) < 0) or (StrToInt(TempWord) > 99)) then
  206.                         IsCorrect := False
  207.                     else
  208.                         if (Length(TempWord) < 1) or (Length(TempWord) > 15) then
  209.                             IsCorrect := False
  210.                         else
  211.                             TeamSGrid.Cells[k,i] := TempWord;
  212.                 except
  213.                     IsCorrect := False;
  214.                 end;
  215.                 Inc(k);
  216.             end;
  217.             Readln(InputFile);
  218.             Inc(i);
  219.         End;
  220.         if (k <> 4) or not(IsCorrect) then
  221.         begin
  222.             Application.MessageBox('Данные в файле некорректны, попробуйте ещё раз.', 'Ошибка!', MB_ICONERROR);
  223.             TeamSGrid.RowCount := WasRows;
  224.             TeamSGrid.Height := 24 * WasRows;
  225.             MainForm.Height := WasHeight;
  226.         end;
  227.     End
  228.     Else
  229.         Application.MessageBox('Данные в файле некорректны, попробуйте ещё раз.', 'Ошибка!', MB_ICONERROR);
  230. End;
  231.  
  232. procedure TMainForm.SaveToFileClick(Sender: TObject);
  233. Var
  234.     OutputFile: TextFile;
  235.     I, k: Integer;
  236. Begin
  237.     If SaveToFile.Execute() And FileExists(SaveToFile.FileName) Then
  238.     Begin
  239.         AssignFile(OutputFile, SaveToFile.FileName);
  240.         Try
  241.             Rewrite(OutputFile);
  242.         Except
  243.             Application.MessageBox('Отказано в доступе! Измените параметры файла! ', 'Ошибка!', MB_ICONERROR);
  244.         End;
  245.         Writeln(OutputFile, 'Список команд:');
  246.         For I := 1 To TeamSGrid.RowCount - 1 Do
  247.         begin
  248.             for k := 0 to 3 do
  249.                 Write(OutputFile, TeamSGrid.Cells[k, i], ' ');
  250.             Writeln(OutputFile);
  251.         end;
  252.  
  253.         CloseFile(OutputFile);
  254.         Application.MessageBox('Данные успешно записаны в файл!', 'Сохранение', MB_ICONINFORMATION);
  255.     End
  256.     Else
  257.         Application.MessageBox('Введено некорректное имя файла', 'Ошибка!', MB_ICONERROR);
  258.  
  259. End;
  260.  
  261. procedure TMainForm.SortButtonClick(Sender: TObject);
  262. Var
  263.     WND: HWND;
  264.     lpCaption, lpText: PChar;
  265.     i, j, k, Tip: Integer;
  266.     Temp: String;
  267. begin
  268.     if TeamSGrid.RowCount > 1 then
  269.     begin
  270.         TeamSGrid.Enabled := True;
  271.         for i := 1 to TeamSGrid.RowCount - 2 do
  272.             for j := TeamSGrid.RowCount - 2 - i  to TeamSGrid.RowCount - 2 do
  273.                 if TeamSGrid.Cells[1,j] < TeamSGrid.Cells[1,j + 1] then
  274.                 begin
  275.                     for k := 0 to 3 do
  276.                     begin
  277.                         Temp := TeamSGrid.Cells[k,j];
  278.                         TeamSGrid.Cells[k,j] := TeamSGrid.Cells[k,j + 1];
  279.                         TeamSGrid.Cells[k,j + 1] := Temp;
  280.                     end;
  281.                 end;
  282.         TeamSGrid.Enabled := False;
  283.     end
  284.     else
  285.     begin
  286.         WND := MainForm.Handle;
  287.         lpCaption := 'Ошибка';
  288.         lpText := 'Не добвленно ни 1-й команды'#10#13'Хотите добавить?';
  289.         Tip := MB_YESNO + MB_ICONINFORMATION + MB_DEFBUTTON2;
  290.         Case MessageBox(WND, lpText, lpCaption, Tip) Of
  291.             IDYES : AddButton.Click;
  292.             IDNO:
  293.             begin
  294.                 MainForm.Enabled := True;
  295.                 ChangeInfo.Close;
  296.             end;
  297.         End;
  298.     end;
  299. end;
  300.  
  301. end.
Add Comment
Please, Sign In to add comment