Advertisement
believe_me

Untitled

Mar 27th, 2022
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.59 KB | None | 0 0
  1. unit MainUnit;
  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, Vcl.Menus, LinkedListUnit, FileIOUnit, AddElementsUnit, DeleteElementsUnit;
  8.  
  9. type
  10.   TMain = class(TForm)
  11.     ListMemo: TMemo;
  12.     AddElementButton: TButton;
  13.     DeleteElementsButton: TButton;
  14.     CreateButton: TButton;
  15.     MainMenu: TMainMenu;
  16.     FileMenu: TMenuItem;
  17.     OpenFromFileMenu: TMenuItem;
  18.     SaveToFileMenu: TMenuItem;
  19.     InstructionMenu: TMenuItem;
  20.     DeveloperMenu: TMenuItem;
  21.     ShowBtn: TButton;
  22.     SaveDialog: TSaveDialog;
  23.     OpenDialog: TOpenDialog;
  24.     procedure CreateButtonClick(Sender: TObject);
  25.     procedure AddElementButtonClick(Sender: TObject);
  26.     procedure DeleteElementsButtonClick(Sender: TObject);
  27.     procedure InstructionMenuClick(Sender: TObject);
  28.     procedure DeveloperMenuClick(Sender: TObject);
  29.     procedure ShowBtnClick(Sender: TObject);
  30.     procedure FormShow(Sender: TObject);
  31.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  32.     procedure SaveToFileMenuClick(Sender: TObject);
  33.     procedure OpenFromFileMenuClick(Sender: TObject);
  34.     procedure FileMenuClick(Sender: TObject);
  35.   private
  36.     { Private declarations }
  37.   public
  38.     { Public declarations }
  39.   end;
  40.  
  41. var
  42.   Main: TMain;
  43.   Header: TNodePointer;
  44.  
  45. implementation
  46.  
  47. {$R *.dfm}
  48.  
  49.  
  50. function CheckFile(PathToFile : String): Boolean;
  51. stdcall; external 'lib51.dll';
  52.  
  53. procedure ReceiveFromFile(PathToFile: String; Var Header: TNodePointer);
  54. stdcall; external 'lib51.dll';
  55.  
  56. procedure WriteInFile(PathToFile: String; ListString: string);
  57. stdcall; external 'lib51.dll';
  58.  
  59.  
  60. var
  61.     IsCreated: boolean;
  62.  
  63.  
  64. procedure TMain.AddElementButtonClick(Sender: TObject);
  65.  
  66. begin
  67.     if IsCreated then
  68.     begin
  69.         AddElementsForm.Show;
  70.     end
  71.     else
  72.         MessageDlg('Список не создан.', mtError, [mbOk], 0)
  73. end;
  74.  
  75.  
  76. procedure TMain.SaveToFileMenuClick(Sender: TObject);
  77.  
  78. begin
  79.     if (not IsCreated) then
  80.         MessageDlg('Список пуст или не содержит элементов.', mtError, [mbOk], 0)
  81.     else
  82.     begin
  83.         if SaveDialog.Execute then
  84.         begin
  85.             WriteInFile(SaveDialog.FileName, TListOperations.toString(Header));
  86.             MessageDlg('Данные записаны успешно.', mtInformation, [mbOk], 0);
  87.         end
  88.     end;
  89. end;
  90.  
  91.  
  92. procedure TMain.ShowBtnClick(Sender: TObject);
  93.  
  94. begin
  95.     ListMemo.Text := '';
  96.     SaveToFileMenu.Enabled := true;
  97.     if IsCreated then
  98.         if (not TListOperations.isEmpty(Header)) then
  99.             ListMemo.Text := TListOperations.toString(Header)
  100.         else
  101.             MessageDlg('Список пуст.', mtError, [mbOk], 0)
  102.     else
  103.         MessageDlg('Список не создан.', mtError, [mbOk], 0);
  104. end;
  105.  
  106.  
  107. procedure TMain.CreateButtonClick(Sender: TObject);
  108.  
  109. begin
  110.     ListMemo.Text := '';
  111.     IsCreated := true;
  112.     Application.MessageBox('Список создан.', 'Создание');
  113.     TListOperations.create(Header);
  114. end;
  115.  
  116.  
  117. procedure TMain.DeleteElementsButtonClick(Sender: TObject);
  118.  
  119. begin
  120.     if IsCreated then
  121.     begin
  122.         DeleteElementsForm.Show;
  123.     end
  124.     else
  125.         MessageDlg('Список не создан.', mtError, [mbOk], 0)
  126. end;
  127.  
  128.  
  129. procedure TMain.DeveloperMenuClick(Sender: TObject);
  130. begin
  131.     Application.MessageBox('Студент группы 151002 Раводин Александр.', 'О разработчике');
  132. end;
  133.  
  134.  
  135. procedure TMain.FileMenuClick(Sender: TObject);
  136. begin
  137.     if (ListMemo.Text = '') then
  138.         SaveToFileMenu.Enabled := false;
  139. end;
  140.  
  141. procedure TMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  142.  
  143. var
  144.     lpCaption, lpText: PChar;
  145.     Tip: Integer;
  146.     WND: HWND;
  147.  
  148. begin
  149.     WND := Main.Handle;
  150.     lpCaption := 'Выход';
  151.     lpText := 'Вы уверены, что хотите выйти?';
  152.     Tip := MB_YESNO + MB_ICONINFORMATION + MB_DEFBUTTON2;
  153.     case MessageBox(WND, lpText, lpCaption, Tip) of
  154.         IDYES : CanClose := True;
  155.         IDNO : CanClose := False;
  156.     end;
  157. end;
  158.  
  159.  
  160. procedure TMain.FormShow(Sender: TObject);
  161.  
  162. begin
  163.     ListMemo.Text := '';
  164.     SaveToFileMenu.Enabled := false;
  165. end;
  166.  
  167.  
  168. procedure TMain.InstructionMenuClick(Sender: TObject);
  169.  
  170. Var
  171.     InstructionMenu: TForm;
  172.     Instruction: string;
  173.  
  174. begin
  175.     Instruction := 'Данная программа реализует функции работы с закольцованным списком:' + #10#13 + #10#13 +
  176.                    '1. Создание пустого кольца.' + #10#13 + '2. Поэлементное добавление в конец списка.'
  177.                    + #10#13 + '3. Создание списка по данным из файла.' + #10#13 +
  178.                    '4. Удаление n элементов на k-ой позиции.' + #10#13 + '5. Сохранение итогового списка в файл.';
  179.     InstructionMenu := CreateMessageDialog(Instruction, mtInformation, [mbOk], mbOK);
  180.     InstructionMenu.ShowModal;
  181.     InstructionMenu.Free;
  182. end;
  183.  
  184.  
  185. procedure TMain.OpenFromFileMenuClick(Sender: TObject);
  186.  
  187. begin
  188.     if OpenDialog.Execute() then
  189.     Begin
  190.         If (checkFile(OpenDialog.FileName)) then
  191.         Begin
  192.             CreateButtonClick(Sender);
  193.             ReceiveFromFile(OpenDialog.FileName, Header);
  194.             showBtnClick(Sender);
  195.         End
  196.         Else
  197.            MessageDlg('Некорректные данные в файле.', mtError, [mbOk], 0)
  198.     End;
  199. end;
  200.  
  201. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement