Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit MainUnit;
- interface
- uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Menus, LinkedListUnit, FileIOUnit, AddElementsUnit, DeleteElementsUnit;
- type
- TMain = class(TForm)
- ListMemo: TMemo;
- AddElementButton: TButton;
- DeleteElementsButton: TButton;
- CreateButton: TButton;
- MainMenu: TMainMenu;
- FileMenu: TMenuItem;
- OpenFromFileMenu: TMenuItem;
- SaveToFileMenu: TMenuItem;
- InstructionMenu: TMenuItem;
- DeveloperMenu: TMenuItem;
- ShowBtn: TButton;
- SaveDialog: TSaveDialog;
- OpenDialog: TOpenDialog;
- procedure CreateButtonClick(Sender: TObject);
- procedure AddElementButtonClick(Sender: TObject);
- procedure DeleteElementsButtonClick(Sender: TObject);
- procedure InstructionMenuClick(Sender: TObject);
- procedure DeveloperMenuClick(Sender: TObject);
- procedure ShowBtnClick(Sender: TObject);
- procedure FormShow(Sender: TObject);
- procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
- procedure SaveToFileMenuClick(Sender: TObject);
- procedure OpenFromFileMenuClick(Sender: TObject);
- procedure FileMenuClick(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- Main: TMain;
- Header: TNodePointer;
- implementation
- {$R *.dfm}
- function CheckFile(PathToFile : String): Boolean;
- stdcall; external 'lib51.dll';
- procedure ReceiveFromFile(PathToFile: String; Var Header: TNodePointer);
- stdcall; external 'lib51.dll';
- procedure WriteInFile(PathToFile: String; ListString: string);
- stdcall; external 'lib51.dll';
- var
- IsCreated: boolean;
- procedure TMain.AddElementButtonClick(Sender: TObject);
- begin
- if IsCreated then
- begin
- AddElementsForm.Show;
- end
- else
- MessageDlg('Список не создан.', mtError, [mbOk], 0)
- end;
- procedure TMain.SaveToFileMenuClick(Sender: TObject);
- begin
- if (not IsCreated) then
- MessageDlg('Список пуст или не содержит элементов.', mtError, [mbOk], 0)
- else
- begin
- if SaveDialog.Execute then
- begin
- WriteInFile(SaveDialog.FileName, TListOperations.toString(Header));
- MessageDlg('Данные записаны успешно.', mtInformation, [mbOk], 0);
- end
- end;
- end;
- procedure TMain.ShowBtnClick(Sender: TObject);
- begin
- ListMemo.Text := '';
- SaveToFileMenu.Enabled := true;
- if IsCreated then
- if (not TListOperations.isEmpty(Header)) then
- ListMemo.Text := TListOperations.toString(Header)
- else
- MessageDlg('Список пуст.', mtError, [mbOk], 0)
- else
- MessageDlg('Список не создан.', mtError, [mbOk], 0);
- end;
- procedure TMain.CreateButtonClick(Sender: TObject);
- begin
- ListMemo.Text := '';
- IsCreated := true;
- Application.MessageBox('Список создан.', 'Создание');
- TListOperations.create(Header);
- end;
- procedure TMain.DeleteElementsButtonClick(Sender: TObject);
- begin
- if IsCreated then
- begin
- DeleteElementsForm.Show;
- end
- else
- MessageDlg('Список не создан.', mtError, [mbOk], 0)
- end;
- procedure TMain.DeveloperMenuClick(Sender: TObject);
- begin
- Application.MessageBox('Студент группы 151002 Раводин Александр.', 'О разработчике');
- end;
- procedure TMain.FileMenuClick(Sender: TObject);
- begin
- if (ListMemo.Text = '') then
- SaveToFileMenu.Enabled := false;
- end;
- procedure TMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
- var
- lpCaption, lpText: PChar;
- Tip: Integer;
- WND: HWND;
- begin
- WND := Main.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 TMain.FormShow(Sender: TObject);
- begin
- ListMemo.Text := '';
- SaveToFileMenu.Enabled := false;
- end;
- procedure TMain.InstructionMenuClick(Sender: TObject);
- Var
- InstructionMenu: TForm;
- Instruction: string;
- begin
- Instruction := 'Данная программа реализует функции работы с закольцованным списком:' + #10#13 + #10#13 +
- '1. Создание пустого кольца.' + #10#13 + '2. Поэлементное добавление в конец списка.'
- + #10#13 + '3. Создание списка по данным из файла.' + #10#13 +
- '4. Удаление n элементов на k-ой позиции.' + #10#13 + '5. Сохранение итогового списка в файл.';
- InstructionMenu := CreateMessageDialog(Instruction, mtInformation, [mbOk], mbOK);
- InstructionMenu.ShowModal;
- InstructionMenu.Free;
- end;
- procedure TMain.OpenFromFileMenuClick(Sender: TObject);
- begin
- if OpenDialog.Execute() then
- Begin
- If (checkFile(OpenDialog.FileName)) then
- Begin
- CreateButtonClick(Sender);
- ReceiveFromFile(OpenDialog.FileName, Header);
- showBtnClick(Sender);
- End
- Else
- MessageDlg('Некорректные данные в файле.', mtError, [mbOk], 0)
- End;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement