Advertisement
gguuppyy

MenuUnit

May 4th, 2024
18
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.19 KB | None | 0 0
  1. Unit MenuUnit; //dobavl,udal,corectir,prosm
  2.  
  3. Interface
  4.  
  5. Uses
  6. Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  7. System.Classes, Vcl.Graphics,
  8. Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Imaging.Pngimage,
  9. Vcl.ExtCtrls,
  10. ViewCandidateListUnit, PartyUnit, SearchUnit, CandidateListUnit;
  11.  
  12. Type
  13. TStateForm = (Bulletin, Party, Add, Edit);
  14.  
  15. TMenuForm = Class(TForm)
  16. DeveloperImage: TImage;
  17. CandidateListButton: TButton;
  18. BulletinButton: TButton;
  19. SearchPartyButton: TButton;
  20. InfoImage: TImage;
  21.  
  22. Function FormHelp(Command: Word; Data: NativeInt; Var CallHelp: Boolean): Boolean;
  23. Procedure FormKeyDown(Sender: TObject; Var Key: Word; Shift: TShiftState);
  24. Procedure FormDestroy(Sender: TObject);
  25.  
  26. Procedure DeveloperImageClick(Sender: TObject);
  27. Procedure InfoImageClick(Sender: TObject);
  28.  
  29. Procedure CandidateListButtonClick(Sender: TObject);
  30. Procedure BulletinButtonClick(Sender: TObject);
  31. Procedure SearchPartyButtonClick(Sender: TObject);
  32.  
  33. Procedure FormCloseQuery(Sender: TObject; Var CanClose: Boolean);
  34.  
  35. Private
  36. { Private declarations }
  37. Public
  38. { Public declarations }
  39. End;
  40.  
  41. Var
  42. MenuForm: TMenuForm;
  43. CandidateList: PCandidate = Nil;
  44. IsSaved: Boolean = True;
  45. StateForm: TStateForm;
  46.  
  47. Implementation
  48.  
  49. {$R *.dfm}
  50.  
  51. Function TMenuForm.FormHelp(Command: Word; Data: NativeInt; Var CallHelp: Boolean): Boolean;
  52. Begin
  53. CallHelp := False;
  54. FormHelp := False;
  55. End;
  56.  
  57. Procedure TMenuForm.FormKeyDown(Sender: TObject; Var Key: Word; Shift: TShiftState);
  58. Begin
  59. If Key = VK_F1 Then
  60. InfoImageClick(InfoImage);
  61. End;
  62.  
  63. Procedure TMenuForm.FormDestroy(Sender: TObject);
  64. Begin
  65. ClearCandidates(CandidateList);
  66. End;
  67.  
  68. Procedure CreateModalForm(CaptionText, LabelText: String; ModalWidth, ModalHeight: Integer);
  69. Var
  70. ModalForm: TForm;
  71. ModalLabel: TLabel;
  72. Begin
  73. ModalForm := TForm.Create(Nil);
  74. Try
  75. ModalForm.BorderIcons := [BiSystemMenu];
  76. ModalForm.BorderStyle := BsSingle;
  77. ModalForm.Caption := CaptionText;
  78. ModalForm.Height := ModalHeight;
  79. ModalForm.Icon := MenuForm.Icon;
  80. ModalForm.Position := PoScreenCenter;
  81. ModalForm.Width := ModalWidth;
  82. ModalForm.OnHelp := MenuForm.FormHelp;
  83.  
  84. ModalLabel := TLabel.Create(ModalForm);
  85. ModalLabel.Caption := LabelText;
  86. ModalLabel.Font.Size := 12;
  87. ModalLabel.Left := (ModalForm.ClientWidth - ModalLabel.Width) Div 2;
  88. ModalLabel.Parent := ModalForm;
  89. ModalLabel.Top := (ModalForm.ClientHeight - ModalLabel.Height) Div 2;
  90.  
  91. ModalForm.ShowModal;
  92. Finally
  93. ModalForm.Free;
  94. End;
  95. End;
  96.  
  97. Procedure TMenuForm.DeveloperImageClick(Sender: TObject);
  98. Begin
  99. CreateModalForm('О разработчике', 'Группа: 351003'#13#10 + 'Разработчик: Пулиш Виктория Александровна'#13#10 + 'Телеграмм: @guuppyy',
  100. 500, 150);
  101. End;
  102.  
  103. Procedure TMenuForm.InfoImageClick(Sender: TObject);
  104. Begin
  105. CreateModalForm('Инструкция', 'Список кандидатов:'#13#10 +
  106. '1. Для добавления кандидата нажмите кнопку "Добавить" или нажмите клавишу Ins.'#13#10 +
  107. '2. Для изменения кандидата нажмите кнопку "Изменить" или нажмите дважды на интересующий ряд.'#13#10 +
  108. '3. Для удаления кандидата нажмите кнопку "Удалить" или нажмите клавишу Del.'#13#10 +
  109. '4. Для получения диапазона для ввода поля наведитесь на него.'#13#10#13#10 + 'Файлы:'#13#10 +
  110. '1. Файл имеет расширение .ea'#13#10#13#10 + 'Поиск:'#13#10 +
  111. 'Для использования поиска введите название партии и нажмите кнопку "Найти".'#13#10#13#10 + 'Работает на русской системе Windows.',
  112. 1000, 450);
  113. End;
  114.  
  115. Procedure CreateForm(FormClass: TFormClass);
  116. Var
  117. Form: TForm;
  118. Begin
  119. MenuForm.Visible := False;
  120. Form := FormClass.Create(MenuForm);
  121. Form.Icon := MenuForm.Icon;
  122. Form.ShowModal;
  123. MenuForm.Visible := True;
  124. End;
  125.  
  126. Procedure TMenuForm.CandidateListButtonClick(Sender: TObject);
  127. Begin
  128. CreateForm(TViewCandidateListForm);
  129. End;
  130.  
  131. Procedure TMenuForm.BulletinButtonClick(Sender: TObject);
  132. Begin
  133. If CandidateList = Nil Then
  134. Application.MessageBox('Вы ещё не добавили кандидатов!', 'Предупреждение', MB_OK + MB_ICONWARNING)
  135. Else
  136. Begin
  137. StateForm := Bulletin;
  138. CreateForm(TPartyForm);
  139. End;
  140. End;
  141.  
  142. Procedure TMenuForm.SearchPartyButtonClick(Sender: TObject);
  143. Begin
  144. If CandidateList = Nil Then
  145. Application.MessageBox('Вы ещё не добавили кандидатов!', 'Предупреждение', MB_OK + MB_ICONWARNING)
  146. Else
  147. Begin
  148. StateForm := Party;
  149. CreateForm(TSearchForm);
  150. End;
  151. End;
  152.  
  153. Procedure TMenuForm.FormCloseQuery(Sender: TObject; Var CanClose: Boolean);
  154. Var
  155. Confirmation: Integer;
  156. Begin
  157. If IsSaved Then
  158. Begin
  159. Confirmation := Application.MessageBox('Вы действительно хотите выйти?', 'Выход', MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2);
  160. CanClose := Confirmation = IDYES;
  161. End
  162. Else
  163. Begin
  164. Confirmation := Application.MessageBox('Вы не сохранили файл, хотите ли сохранить файл?', 'Выход',
  165. MB_YESNOCANCEl + MB_ICONQUESTION + MB_DEFBUTTON2);
  166. Case Confirmation Of
  167. MrYes:
  168. Begin
  169. ViewCandidateListForm.SaveMenuItemClick(Sender);
  170. CanClose := IsSaved;
  171. End;
  172. MrNo:
  173. CanClose := True;
  174. MrCancel:
  175. CanClose := False;
  176. End;
  177. End;
  178. End;
  179.  
  180. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement