Advertisement
Matixs

Untitled

May 31st, 2023
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 14.42 KB | None | 0 0
  1. unit Main;
  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.ExtCtrls, Vcl.ComCtrls, CandidateView,
  8.   Vcl.StdCtrls, Vcl.Imaging.pngimage, BidirectionalCandidate, BidirectionalCountyNumber, BidirectionalParty,
  9.   PartyView, CountyNumberVIew, CandidateAdd;
  10.  
  11. type
  12.     TMainForm = class(TForm)
  13.     PanelMenu: TPanel;
  14.     PGMenu: TPageControl;
  15.     TabSheet1: TTabSheet;
  16.     TabSheet2: TTabSheet;
  17.     TabSheet3: TTabSheet;
  18.     TabSheet4: TTabSheet;
  19.     TabSheet5: TTabSheet;
  20.     TabSheet6: TTabSheet;
  21.     TabSheet7: TTabSheet;
  22.     TabSheet8: TTabSheet;
  23.     Panel8: TPanel;
  24.     Panel9: TPanel;
  25.     Panel10: TPanel;
  26.     Panel17: TPanel;
  27.     Panel18: TPanel;
  28.     ImageExitWithSave: TImage;
  29.     Label1: TLabel;
  30.     ImageExit: TImage;
  31.     Label2: TLabel;
  32.     Panel1: TPanel;
  33.     ImageImportData: TImage;
  34.     Label3: TLabel;
  35.     Label4: TLabel;
  36.     ImageViewParty: TImage;
  37.     Label5: TLabel;
  38.     ImageViewCountyNumber: TImage;
  39.     Label6: TLabel;
  40.     ImageViewCandidate: TImage;
  41.     PanelFrame: TPanel;
  42.     Panel2: TPanel;
  43.     ImageSearchByParty: TImage;
  44.     Label7: TLabel;
  45.     Panel3: TPanel;
  46.     Label8: TLabel;
  47.     ImageCandidateDelete: TImage;
  48.     Panel4: TPanel;
  49.     ImagePartyDelete: TImage;
  50.     Label9: TLabel;
  51.     Panel5: TPanel;
  52.     ImageCountyNumberDelete: TImage;
  53.     Label10: TLabel;
  54.     Panel6: TPanel;
  55.     Label11: TLabel;
  56.     ImageCandidateAdd: TImage;
  57.     Panel7: TPanel;
  58.     ImageAddParty: TImage;
  59.     Label12: TLabel;
  60.     Panel11: TPanel;
  61.     ImageCountyNumberAdd: TImage;
  62.     Label13: TLabel;
  63.     Panel12: TPanel;
  64.     Label14: TLabel;
  65.     ImageEditCandidate: TImage;
  66.     Panel13: TPanel;
  67.     ImageEditParty: TImage;
  68.     Label15: TLabel;
  69.     Panel14: TPanel;
  70.     ImageCountyNumberEdit: TImage;
  71.     Label16: TLabel;
  72.     Panel15: TPanel;
  73.     Label17: TLabel;
  74.     ImageNewsLetter: TImage;
  75.     TabSheet9: TTabSheet;
  76.     TabSheet10: TTabSheet;
  77.     Label18: TLabel;
  78.     Panel16: TPanel;
  79.     Label19: TLabel;
  80.     ImageHelp: TImage;
  81.     procedure FormCreate(Sender: TObject);
  82.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  83.     procedure ImageExitClick(Sender: TObject);
  84.     procedure ImageExitWithSaveClick(Sender: TObject);
  85.     procedure ImageImportDataClick(Sender: TObject);
  86.     procedure Image1Click(Sender: TObject);
  87.     procedure ImageViewPartyClick(Sender: TObject);
  88.     procedure ImageViewCountyNumberClick(Sender: TObject);
  89.     procedure ImageCandidateAddClick(Sender: TObject);
  90.     procedure ImageAddPartyClick(Sender: TObject);
  91.     procedure ImageCountyNumberAddClick(Sender: TObject);
  92.     procedure ImageViewCandidateClick(Sender: TObject);
  93.     procedure ImageCandidateDeleteClick(Sender: TObject);
  94.     procedure ImagePartyDeleteClick(Sender: TObject);
  95.     procedure ImageCountyNumberDeleteClick(Sender: TObject);
  96.     procedure ImageEditCandidateClick(Sender: TObject);
  97.     procedure ImageEditPartyClick(Sender: TObject);
  98.     procedure ImageCountyNumberEditClick(Sender: TObject);
  99.     procedure ImageSearchByPartyClick(Sender: TObject);
  100.     procedure ImageNewsLetterClick(Sender: TObject);
  101.     procedure ImageHelpClick(Sender: TObject);
  102.   private
  103.     { Private declarations }
  104.   public
  105.     { Public declarations }
  106.   end;
  107.  
  108. var
  109.     MainForm: TMainForm;
  110.     CurrentFrame : TFrame;
  111.     FrameList : array of TFrame;
  112.     CandidateList : TCandidateList;
  113.     PartyList : TPartyList;
  114.     CountyNumberList : TCountyNumberList;
  115.  
  116. implementation
  117.  
  118. {$R *.dfm}
  119.  
  120. uses ConstFile, MainView, PartyAdd, CountyNumberAdd, CandidateDelete,
  121.   CountyNumberDelete, PartyDelete, CandidateEdit, CountyNumberEdit, PartyEdit,
  122.   SearchByParty, Newsletter, HelpView;
  123.  
  124. procedure TMainForm.FormCreate(Sender: TObject);
  125. begin
  126.     PGMenu.ActivePageIndex := 0;
  127.     CurrentFrame := NIL;
  128.  
  129.     // Инициализация списков
  130.     CandidateList := TCandidateList.Create;
  131.     PartyList := TPartyList.Create;
  132.     CountyNumberList := TCountyNumberList.Create;
  133.  
  134.     if CurrentFrame <> NIL then
  135.     begin
  136.         CurrentFrame.Free;
  137.         CurrentFrame := NIL;
  138.     end;
  139.  
  140.     CurrentFrame := TMainFrame.Create(Self);
  141.     CurrentFrame.Parent := PanelFrame;
  142. end;
  143.  
  144. procedure TMainForm.ImageImportDataClick(Sender: TObject);
  145. begin
  146.     try
  147.         CandidateList := TCandidateList.GetCandidateListFromFile(ConstFile.FILENAME_CANDIDATE);
  148.         PartyList := TPartyList.GetPartyListFromFile(ConstFile.FILENAME_PARTY);
  149.         CountyNumberList := TCountyNumberList.GetCountyNumberListFromFile(FILENAME_COUNTYNUMBER);
  150.         Application.MessageBox('Успешный импорт!','Импорт данных',MB_OK+MB_ICONINFORMATION);
  151.  
  152.     except
  153.         On E : Exception do
  154.             Application.MessageBox('В доступе к файлу отказано. Вы можете пользоваться программой, при этом сохранить/загрузить данные не получится.','Ошибка чтения из файла',MB_OK + MB_ICONWARNING);
  155.     end;
  156. end;
  157.  
  158. procedure TMainForm.ImageNewsLetterClick(Sender: TObject);
  159. begin
  160.     if Main.PartyList.Count <> 0 then
  161.     begin
  162.         if CurrentFrame <> NIL then
  163.         begin
  164.             CurrentFrame.Free;
  165.             CurrentFrame := NIL;
  166.         end;
  167.  
  168.         CurrentFrame := TNewsLetterFrame.Create(Self);
  169.         CurrentFrame.Parent := PanelFrame;
  170.         CurrentFrame.OnEnter(NIL);
  171.     end
  172.     else
  173.     begin
  174.         Application.MessageBox('Список партий пуст.','Информационная бюллетень',MB_OK + MB_ICONSTOP);
  175.     end;
  176. end;
  177.  
  178. procedure TMainForm.ImagePartyDeleteClick(Sender: TObject);
  179. begin
  180.     if PartyList.Count <> 0 then
  181.     begin
  182.         // TODO: Фрейм удаления партии
  183.         if CurrentFrame <> NIL then
  184.         begin
  185.             CurrentFrame.Free;
  186.             CurrentFrame := NIL;
  187.         end;
  188.  
  189.         CurrentFrame := TPartyDeleteFrame.Create(Self);
  190.         CurrentFrame.Parent := PanelFrame;
  191.         CurrentFrame.OnEnter(NIL);
  192.     end
  193.     else
  194.     begin
  195.         Application.MessageBox('Список партий пуст.','Удаление партии',MB_OK + MB_ICONSTOP);
  196.     end;
  197. end;
  198.  
  199. procedure TMainForm.ImageSearchByPartyClick(Sender: TObject);
  200. begin
  201.     if CandidateList.Count <> 0 then
  202.     begin
  203.         if CurrentFrame <> NIL then
  204.         begin
  205.             CurrentFrame.Free;
  206.             CurrentFrame := NIL;
  207.         end;
  208.  
  209.         CurrentFrame := TSearchByPartyFrame.Create(Self);
  210.         CurrentFrame.Parent := PanelFrame;
  211.         CurrentFrame.OnEnter(NIL);
  212.     end
  213.     else
  214.     begin
  215.         Application.MessageBox('Вам отказано в поиске! Список кандидатов пуст.','Поиск полной инфоррмации по каждой партии',MB_OK+MB_ICONSTOP);
  216.     end;
  217. end;
  218.  
  219. procedure TMainForm.ImageCountyNumberAddClick(Sender: TObject);
  220. begin
  221.     if CurrentFrame <> NIL then
  222.     begin
  223.         CurrentFrame.Free;
  224.         CurrentFrame := NIL;
  225.     end;
  226.  
  227.     CurrentFrame := TCountyNumberAddFrame.Create(Self);
  228.     CurrentFrame.Parent := PanelFrame;
  229.     CurrentFrame.OnEnter(NIL);
  230. end;
  231.  
  232. procedure TMainForm.ImageCountyNumberDeleteClick(Sender: TObject);
  233. begin
  234.     if CountyNumberList.Count <> 0 then
  235.     begin
  236.         // TODO : Фрейм удаления округа
  237.         if CurrentFrame <> NIL then
  238.         begin
  239.             CurrentFrame.Free;
  240.             CurrentFrame := NIL;
  241.         end;
  242.  
  243.         CurrentFrame := TCountyNumberDeleteFrame.Create(Self);
  244.         CurrentFrame.Parent := PanelFrame;
  245.         CurrentFrame.OnEnter(NIL);
  246.     end
  247.     else
  248.     begin
  249.         Application.MessageBox('Список округов пуст.','Удаление округа',MB_OK + MB_ICONSTOP);
  250.     end;
  251. end;
  252.  
  253. procedure TMainForm.ImageCountyNumberEditClick(Sender: TObject);
  254. begin
  255.     if CountyNumberList.Count <> 0 then
  256.     begin
  257.         if CurrentFrame <> NIL then
  258.         begin
  259.             CurrentFrame.Free;
  260.             CurrentFrame := NIL;
  261.         end;
  262.  
  263.         CurrentFrame := TCountyNumberEditFrame.Create(Self);
  264.         CurrentFrame.Parent := PanelFrame;
  265.         CurrentFrame.OnEnter(NIL);
  266.     end
  267.     else
  268.     begin
  269.         Application.MessageBox('Список округов пуст.','Редактирование округа', MB_OK + MB_ICONSTOP);
  270.     end;
  271. end;
  272.  
  273. procedure TMainForm.Image1Click(Sender: TObject);
  274. begin
  275.     if CurrentFrame <> NIL then
  276.     begin
  277.         CurrentFrame.Free;
  278.         CurrentFrame := NIL;
  279.     end;
  280.  
  281.     CurrentFrame := TCandidateViewFrame.Create(Self);
  282.     CurrentFrame.Parent := PanelFrame;
  283.     CurrentFrame.OnEnter(NIL);
  284. end;
  285.  
  286. procedure TMainForm.ImageViewPartyClick(Sender: TObject);
  287. begin
  288.     if CurrentFrame <> NIL then
  289.     begin
  290.         CurrentFrame.Free;
  291.         CurrentFrame := NIL;
  292.     end;
  293.  
  294.     CurrentFrame := TPartyViewFrame.Create(Self);
  295.     CurrentFrame.Parent := PanelFrame;
  296.     CurrentFrame.OnEnter(NIL);
  297. end;
  298.  
  299. procedure TMainForm.ImageViewCandidateClick(Sender: TObject);
  300. begin
  301.     if CurrentFrame <> NIL then
  302.     begin
  303.         CurrentFrame.Free;
  304.         CurrentFrame := NIL;
  305.     end;
  306.  
  307.     CurrentFrame := TCandidateViewFrame.Create(Self);
  308.     CurrentFrame.Parent := PanelFrame;
  309.     CurrentFrame.OnEnter(NIL);
  310. end;
  311.  
  312. procedure TMainForm.ImageViewCountyNumberClick(Sender: TObject);
  313. begin
  314.     if CurrentFrame <> NIL then
  315.     begin
  316.         CurrentFrame.Free;
  317.         CurrentFrame := NIL;
  318.     end;
  319.  
  320.     CurrentFrame := TCountyNumberViewFrame.Create(Self);
  321.     CurrentFrame.Parent := PanelFrame;
  322.     CurrentFrame.OnEnter(NIL);
  323. end;
  324.  
  325. procedure TMainForm.ImageAddPartyClick(Sender: TObject);
  326. begin
  327.     if CurrentFrame <> NIL then
  328.     begin
  329.         CurrentFrame.Free;
  330.         CurrentFrame := NIL;
  331.     end;
  332.  
  333.     CurrentFrame := TPartyAddFrame.Create(Self);
  334.     CurrentFrame.Parent := PanelFrame;
  335.     CurrentFrame.OnEnter(NIL);
  336. end;
  337.  
  338. procedure TMainForm.ImageCandidateAddClick(Sender: TObject);
  339. begin
  340.  
  341.     if (CountyNumberList.Count = 0) OR (PartyList.Count = 0) then
  342.     begin
  343.         Application.MessageBox('Список округов или/и список партий  пуст.','Добавление кандидата',MB_OK+MB_ICONSTOP);
  344.     end
  345.     else
  346.     begin
  347.         if CurrentFrame <> NIL then
  348.         begin
  349.             CurrentFrame.Free;
  350.             CurrentFrame := NIL;
  351.         end;
  352.  
  353.         CurrentFrame := TCandidateAddFrame.Create(Self);
  354.         CurrentFrame.Parent := PanelFrame;
  355.         CurrentFrame.OnEnter(NIL);
  356.     end;
  357. end;
  358.  
  359. procedure TMainForm.ImageCandidateDeleteClick(Sender: TObject);
  360. begin
  361.     if CandidateList.Count <> 0 then
  362.     begin
  363.         // TODO : Фрейм удаления кандидата
  364.         if CurrentFrame <> NIL then
  365.         begin
  366.             CurrentFrame.Free;
  367.             CurrentFrame := NIL;
  368.         end;
  369.  
  370.         CurrentFrame := TCandidateDeleteFrame.Create(Self);
  371.         CurrentFrame.Parent := PanelFrame;
  372.         CurrentFrame.OnEnter(NIL);
  373.     end
  374.     else
  375.     begin
  376.         Application.MessageBox('Список кандидатов пуст.','Удаление кандидата', MB_OK + MB_ICONSTOP);
  377.     end;
  378. end;
  379.  
  380. procedure TMainForm.ImageEditCandidateClick(Sender: TObject);
  381. begin
  382.     if CandidateList.Count <> 0 then
  383.     begin
  384.         if CurrentFrame <> NIL then
  385.         begin
  386.             CurrentFrame.Free;
  387.             CurrentFrame := NIL;
  388.         end;
  389.  
  390.         CurrentFrame := TCandidateEditFrame.Create(Self);
  391.         CurrentFrame.Parent := PanelFrame;
  392.         CurrentFrame.OnEnter(NIL);
  393.     end
  394.     else
  395.     begin
  396.         Application.MessageBox('Список кандидатов пуст.','Редактирование кандидата', MB_OK + MB_ICONSTOP);
  397.     end;
  398. end;
  399.  
  400. procedure TMainForm.ImageEditPartyClick(Sender: TObject);
  401. begin
  402.     if PartyList.Count <> 0 then
  403.     begin
  404.         if CurrentFrame <> NIL then
  405.         begin
  406.             CurrentFrame.Free;
  407.             CurrentFrame := NIL;
  408.         end;
  409.  
  410.         CurrentFrame := TPartyEditFrame.Create(Self);
  411.         CurrentFrame.Parent := PanelFrame;
  412.         CurrentFrame.OnEnter(NIL);
  413.     end
  414.     else
  415.     begin
  416.         Application.MessageBox('Список партий пуст.','Редактирование партии', MB_OK + MB_ICONSTOP);
  417.     end;
  418. end;
  419.  
  420. procedure TMainForm.ImageExitClick(Sender: TObject);
  421. begin
  422.     ImageExit.Tag := 1;
  423.     Close;
  424. end;
  425.  
  426. procedure TMainForm.ImageExitWithSaveClick(Sender: TObject);
  427. begin
  428.     try
  429.         ImageExitWithSave.Tag := 1;
  430.         try
  431.             // Сохранение данных
  432.             CandidateList.SaveCandidateList(ConstFile.FILENAME_CANDIDATE);
  433.             PartyList.SavePartyList(ConstFile.FILENAME_PARTY);
  434.             CountyNumberList.SaveCountyNumberList(ConstFile.FILENAME_COUNTYNUMBER);
  435.         except
  436.             Application.MessageBox('В доступе к файлу отказано. Программа закроется, без сохранения данных.','Ошибка сохранения',MB_OK + MB_ICONINFORMATION);
  437.             ImageExitWithSave.Tag := 0;
  438.             ImageExit.Tag := 1;
  439.         end;
  440.     finally
  441.         // Выход из программы
  442.         Close;
  443.     end;
  444. end;
  445.  
  446. procedure TMainForm.ImageHelpClick(Sender: TObject);
  447. begin
  448.         if CurrentFrame <> NIL then
  449.         begin
  450.             CurrentFrame.Free;
  451.             CurrentFrame := NIL;
  452.         end;
  453.  
  454.         CurrentFrame := THelpFrame.Create(Self);
  455.         CurrentFrame.Parent := PanelFrame;
  456. end;
  457.  
  458. procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  459. begin
  460.     CanClose := False;
  461.     PGMenu.ActivePageIndex := 7;
  462.  
  463.     if ImageExitWithSave.Tag = 1 then
  464.     begin
  465.         CanClose := Application.MessageBox('Вы уверены, что хотите закрыть программу, сохранив данные?','Закрытие программы', MB_YESNO + MB_ICONQUESTION) = IDYES;
  466.         if not CanClose then
  467.             ImageExitWithSave.Tag := 0;
  468.         // TODO : Добавить сохранение
  469.     end
  470.     else
  471.         if ImageExit.Tag = 1 then
  472.         begin
  473.             CanClose := Application.MessageBox('Вы уверены, что хотите закрыть программу без сохранения?','Закрытие программы', MB_YESNO + MB_ICONQUESTION) = IDYES;
  474.             if not CanClose then
  475.                 ImageExit.Tag := 0;
  476.         end;
  477. end;
  478.  
  479. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement