Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit lab4_1;
- interface
- uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, Vcl.Grids, Vcl.StdCtrls;
- type
- TMainForm = class(TForm)
- MainMenu: TMainMenu;
- N1: TMenuItem;
- OpenFileMenu: TMenuItem;
- SaveToFileMenu: TMenuItem;
- N4: TMenuItem;
- N5: TMenuItem;
- MainLAbel: TLabel;
- AddButton: TButton;
- ChangeButton: TButton;
- DeleteButton: TButton;
- SortButton: TButton;
- TeamSGrid: TStringGrid;
- OpenFromFile: TOpenDialog;
- SaveToFile: TSaveDialog;
- procedure AddButtonClick(Sender: TObject);
- procedure InstractionClick(Sender: TObject);
- procedure DeveloperInfoClick(Sender: TObject);
- procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
- procedure ChangeClick(Sender: TObject);
- procedure OnCreate(Sender: TObject);
- procedure DeleteClick(Sender: TObject);
- procedure SortButtonClick(Sender: TObject);
- procedure SaveToFileClick(Sender: TObject);
- procedure OpenFromFileClick(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- MainForm: TMainForm;
- implementation
- {$R *.dfm}
- uses InfoUnit, ChangeUnit;
- type
- TTeam = Record
- TeamName: String[25];
- TeamPoints: Integer;
- TeamCountry: String[25];
- CoachName: String[25];
- End;
- TTeamList = array of TTeam;
- procedure TMainForm.AddButtonClick(Sender: TObject);
- var
- pos : integer;
- begin
- TeamInfo.NameEdit.text := '';
- TeamInfo.PointsEdit.text := '';
- TeamInfo.CountryEdit.text := '';
- TeamInfo.CoachEdit.text := '';
- TeamInfo.show;
- MainForm.Enabled := False;
- end;
- procedure TMainForm.ChangeClick(Sender: TObject);
- Var
- WND: HWND;
- lpCaption, lpText: PChar;
- Tip: Integer;
- Temp: String;
- begin
- if TeamSGrid.RowCount > 1 then
- begin
- Temp := ChangeInfo.MainLabel.Caption;
- ChangeInfo.MainLabel.Caption := Copy(Temp, 1, 40);
- ChangeInfo.MainLabel.Caption := ChangeInfo.MainLabel.Caption + 'изменить';
- ChangeInfo.Show;
- MainForm.Enabled := False;
- end
- else
- begin
- WND := MainForm.Handle;
- lpCaption := 'Ошибка';
- lpText := 'Не добвленно ни 1-й команды'#10#13'Хотите добавить?';
- Tip := MB_YESNO + MB_ICONINFORMATION + MB_DEFBUTTON2;
- Case MessageBox(WND, lpText, lpCaption, Tip) Of
- IDYES : AddButton.Click;
- IDNO:
- begin
- MainForm.Enabled := True;
- ChangeInfo.Close;
- end;
- End;
- end;
- end;
- procedure TMainForm.DeleteClick(Sender: TObject);
- Var
- WND: HWND;
- lpCaption, lpText: PChar;
- Tip: Integer;
- Temp: String;
- begin
- if TeamSGrid.RowCount > 1 then
- begin
- Temp := ChangeInfo.MainLabel.Caption;
- ChangeInfo.MainLabel.Caption := Copy(Temp, 1, 40);
- ChangeInfo.MainLabel.Caption := ChangeInfo.MainLabel.Caption + 'удалить';
- ChangeInfo.Show;
- MainForm.Enabled := False;
- end
- else
- begin
- WND := MainForm.Handle;
- lpCaption := 'Ошибка';
- lpText := 'Не добвленно ни 1-й команды'#10#13'Хотите добавить?';
- Tip := MB_YESNO + MB_ICONINFORMATION + MB_DEFBUTTON2;
- Case MessageBox(WND, lpText, lpCaption, Tip) Of
- IDYES : AddButton.Click;
- IDNO:
- begin
- MainForm.Enabled := True;
- ChangeInfo.Close;
- end;
- End;
- end;
- end;
- procedure TMainForm.DeveloperInfoClick(Sender: TObject);
- begin
- Application.MessageBox('Студент группы 151002 Вакарь Егор', 'О разработчике');
- end;
- procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
- Var
- WND: HWND;
- lpCaption, lpText: PChar;
- Tip: Integer;
- Begin
- WND := MainForm.Handle;
- lpCaption := 'Выход';
- lpText := 'Вы уверены, что хотите выйти?';
- Tip := MB_YESNO + MB_ICONINFORMATION + MB_DEFBUTTON2;
- Case MessageBox(WND, lpText, lpCaption, Tip) Of
- IDYES : CanClose := True;
- IDNO : CanClose := False;
- End
- End;
- procedure TMainForm.InstractionClick(Sender: TObject);
- begin
- Application.MessageBox('Программа позволяет работать со списком команд'#10#13'Название, кол-во очков, страна, имя тренера команды', 'Инструкция');
- end;
- procedure TMainForm.OnCreate(Sender: TObject);
- begin
- TeamSGrid.Enabled := True;
- TeamSGrid.RowCount := 1;
- TeamSGrid.Cells[0,0]:='Название';
- TeamSGrid.Cells[1,0]:= 'Очки';
- TeamSGrid.Cells[2,0]:= 'Страна';
- TeamSGrid.Cells[3,0]:= 'Тренер';
- TeamSGrid.Enabled := False;
- end;
- procedure TMainForm.OpenFromFileClick(Sender: TObject);
- Var
- i, k, WasRows, WasHeight: Integer;
- TempString, TempWord : String;
- IsCorrect: Boolean;
- InputFile: TextFile;
- Begin
- If OpenFromFile.Execute() Then
- Begin
- AssignFile(InputFile, OpenFromFile.FileName);
- Reset(InputFile);
- TeamSGrid.Enabled := True;
- i := TeamSGrid.RowCount;
- WasHeight := MainForm.Height;
- WasRows := i;
- IsCorrect := True;
- while IsCorrect and not Eof(InputFile) do
- Begin
- k := 0;
- TeamSGrid.RowCount := TeamSGrid.RowCount + 1;
- TeamSGrid.Height := TeamSGrid.Height + 24;
- MainForm.Height := MainForm.Height + 24;
- Read(InputFile, TempString);
- While k < 4 do
- begin
- if k < 3 then
- begin
- TempWord := Copy(TempString, 1, Pos(' ', TempString) - 1);
- Delete(TempString, 1, Pos(' ', TempString));
- end
- else
- TempWord := TempString;
- try
- if (k = 1) and ((StrToInt(TempWord) < 0) or (StrToInt(TempWord) > 99)) then
- IsCorrect := False
- else
- if (Length(TempWord) < 1) or (Length(TempWord) > 15) then
- IsCorrect := False
- else
- TeamSGrid.Cells[k,i] := TempWord;
- except
- IsCorrect := False;
- end;
- Inc(k);
- end;
- Readln(InputFile);
- Inc(i);
- End;
- if (k <> 4) or not(IsCorrect) then
- begin
- Application.MessageBox('Данные в файле некорректны, попробуйте ещё раз.', 'Ошибка!', MB_ICONERROR);
- TeamSGrid.RowCount := WasRows;
- TeamSGrid.Height := 24 * WasRows;
- MainForm.Height := WasHeight;
- end;
- End
- Else
- Application.MessageBox('Данные в файле некорректны, попробуйте ещё раз.', 'Ошибка!', MB_ICONERROR);
- End;
- procedure TMainForm.SaveToFileClick(Sender: TObject);
- Var
- OutputFile: TextFile;
- I, k: Integer;
- Begin
- If SaveToFile.Execute() And FileExists(SaveToFile.FileName) Then
- Begin
- AssignFile(OutputFile, SaveToFile.FileName);
- Try
- Rewrite(OutputFile);
- Except
- Application.MessageBox('Отказано в доступе! Измените параметры файла! ', 'Ошибка!', MB_ICONERROR);
- End;
- Writeln(OutputFile, 'Список команд:');
- For I := 1 To TeamSGrid.RowCount - 1 Do
- begin
- for k := 0 to 3 do
- Write(OutputFile, TeamSGrid.Cells[k, i], ' ');
- Writeln(OutputFile);
- end;
- CloseFile(OutputFile);
- Application.MessageBox('Данные успешно записаны в файл!', 'Сохранение', MB_ICONINFORMATION);
- End
- Else
- Application.MessageBox('Введено некорректное имя файла', 'Ошибка!', MB_ICONERROR);
- End;
- procedure TMainForm.SortButtonClick(Sender: TObject);
- Var
- WND: HWND;
- lpCaption, lpText: PChar;
- i, j, k, Tip: Integer;
- Temp: String;
- begin
- if TeamSGrid.RowCount > 1 then
- begin
- TeamSGrid.Enabled := True;
- for i := 1 to TeamSGrid.RowCount - 2 do
- for j := TeamSGrid.RowCount - 2 - i to TeamSGrid.RowCount - 2 do
- if TeamSGrid.Cells[1,j] < TeamSGrid.Cells[1,j + 1] then
- begin
- for k := 0 to 3 do
- begin
- Temp := TeamSGrid.Cells[k,j];
- TeamSGrid.Cells[k,j] := TeamSGrid.Cells[k,j + 1];
- TeamSGrid.Cells[k,j + 1] := Temp;
- end;
- end;
- TeamSGrid.Enabled := False;
- end
- else
- begin
- WND := MainForm.Handle;
- lpCaption := 'Ошибка';
- lpText := 'Не добвленно ни 1-й команды'#10#13'Хотите добавить?';
- Tip := MB_YESNO + MB_ICONINFORMATION + MB_DEFBUTTON2;
- Case MessageBox(WND, lpText, lpCaption, Tip) Of
- IDYES : AddButton.Click;
- IDNO:
- begin
- MainForm.Enabled := True;
- ChangeInfo.Close;
- end;
- End;
- end;
- end;
- end.
Add Comment
Please, Sign In to add comment