Advertisement
Matixs

Untitled

May 5th, 2023
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 8.28 KB | None | 0 0
  1. unit PavilionPageMain;
  2.  
  3. interface
  4.  
  5. uses
  6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
  7.   Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.StdCtrls, EntityShopCenter;
  8.  
  9. type
  10.   TPavilionFrameMain = class(TFrame)
  11.     SGPavilion: TStringGrid;
  12.     Label1: TLabel;
  13.     LBCurrentShopCenter: TLabel;
  14.     BtnEdit: TButton;
  15.     BtnDelete: TButton;
  16.     BtnAdd: TButton;
  17.     Label2: TLabel;
  18.     LBPKShopCenter: TLabel;
  19.     ButtonCalcRent: TButton;
  20.     ButtonBack: TButton;
  21.     procedure BtnAddClick(Sender: TObject);
  22.     procedure BtnDeleteClick(Sender: TObject);
  23.     procedure BtnEditClick(Sender: TObject);
  24.     procedure FrameEnter(Sender: TObject);
  25.     procedure ButtonBackClick(Sender: TObject);
  26.     procedure ButtonCalcRentClick(Sender: TObject);
  27.   private
  28.     { Private declarations }
  29.   public
  30.     { Public declarations }
  31.   end;
  32.  
  33. const
  34.     HEADER_ID_PAVILION = '№';
  35.     HEADER_NAME = '№ павильона';
  36.     HEADER_FLOOR = 'Этаж';
  37.     HEADER_STATUS = 'Статус';
  38.     HEADER_AREA = 'Площадь';
  39.     HEADER_LEVEL_COFF = 'Доб. стоимость павильона';
  40.     HEADER_COST_PER_METER =  'Стоимость кв. м.';
  41.  
  42. var
  43.     CurrentShopCenter : TShopCenter;
  44.  
  45. implementation
  46.  
  47. {$R *.dfm}
  48.  
  49. uses BidirectionalPavilionList, ConstantsFile, Main, ConstantsTitleMainFrame,
  50.   BidirectionalShopCenterList, EntityPavilion, UnitCalcRentForm;
  51.  
  52. Procedure FillHeadersSG(SGPavilion : TStringGrid);
  53. begin
  54.     SGPavilion.Cells[0,0] := HEADER_ID_PAVILION;
  55.     SGPavilion.Cells[1,0] := HEADER_NAME;
  56.     SGPavilion.Cells[2,0] := HEADER_FLOOR;
  57.     SGPavilion.Cells[3,0] := HEADER_STATUS;
  58.     SGPavilion.Cells[4,0] := HEADER_AREA;
  59.     SGPavilion.Cells[5,0] := HEADER_LEVEL_COFF;
  60.     SGPavilion.Cells[6,0] := HEADER_COST_PER_METER;
  61. end;
  62.  
  63. Procedure ClearStringGrid(SG : TStringGrid);
  64. Var
  65.     I, J : Integer;
  66. Begin
  67.     For I := 0 to SG.RowCount - 1 do
  68.     Begin
  69.         SG.Rows[I].Clear;
  70.     End;
  71. End;
  72.  
  73. Procedure FillPavilions(SG : TStringGrid; ShopCenterID : Integer);
  74. var
  75.     TempList : TPavilionList;
  76.     Amount, J, I : Integer;
  77. begin
  78.     ClearStringGrid(SG);
  79.     FillHeadersSG(SG);
  80.  
  81.     CurrentShopCenter := TShopCenterList.GetShopCenterByPrimaryKey(ShopCenterID, ConstantsFile.FILE_NAME_SHOPCENTER);
  82.  
  83.     Main.MainForm.PavilionFrameMain.LBCurrentShopCenter.Caption := CurrentShopCenter.Name;
  84.  
  85.     TempList := TPavilionList.GetPavilionListByShopCenterIDFromFile(ShopCenterID, ConstantsFile.FILE_NAME_PAVILION);
  86.  
  87.     Amount := TempList.Count;
  88.  
  89.     SG.RowCount := Amount + 1;
  90.  
  91.     I := 1;
  92.     J := 0;
  93.  
  94.     while TempList.Head <> NIL do
  95.     begin
  96.         SG.Cells[J, I] := TempList.Head.Pavilion.ID_Pavilion.ToString;
  97.         SG.Cells[J + 1, I] := TempList.Head.Pavilion.Name;
  98.         SG.Cells[J + 2, I] := TempList.Head.Pavilion.Floor.ToString;
  99.         SG.Cells[J + 3, I] := TempList.Head.Pavilion.Status;
  100.         SG.Cells[J + 4, I] := TempList.Head.Pavilion.Area.ToString;
  101.         SG.Cells[J + 5, I] := TempList.Head.Pavilion.LevelCoff.ToString;
  102.         SG.Cells[J + 6, I] := TempList.Head.Pavilion.CostPerMeter.ToString;
  103.         Inc(I);
  104.         TempList.Head := TempList.Head^.Next
  105.     end;
  106. end;
  107.  
  108. procedure TPavilionFrameMain.BtnAddClick(Sender: TObject);
  109. begin
  110.     try
  111.         with MainForm do
  112.         begin
  113.             LBCurrentPage.Caption := ConstantsTitleMainFrame.TITLE_PAVILION_ADD_PAGE;
  114.             PavilionFrameMain.Visible := False;
  115.             PavilionFrameAddEdit.Visible := True;
  116.             PavilionFrameAddEdit.UpdateFrame;
  117.             Main.MainForm.PavilionFrameAddEdit.EditShopCenter.Text := LBCurrentShopCenter.Caption;
  118.         end;
  119.     except
  120.         On E : Exception do
  121.             Application.MessageBox(PCHAR(Concat('Передайте системному администратору код ошибки - ',E.Message)),'Ошибка добавления',MB_OK + MB_ICONERROR);
  122.     end;
  123. end;
  124.  
  125. procedure TPavilionFrameMain.BtnDeleteClick(Sender: TObject);
  126. var
  127.     C, R : Word;
  128.     TempList : TPavilionList;
  129.     PavilionForDelete : TPavilion;
  130. begin
  131.     try
  132.         if SGPavilion.RowCount - 1 <> 0 then
  133.         begin
  134.             C := SGPavilion.Col;
  135.             R := SGPavilion.Row;
  136.             TempList := TPavilionList.GetPavilionListFromFile(ConstantsFile.FILE_NAME_PAVILION);
  137.             PavilionForDelete := TPavilionList.GetPavilionById(SGPavilion.Cells[0,R].ToInteger, ConstantsFile.FILE_NAME_PAVILION);
  138.  
  139.             if Application.MessageBox(PCHAR(Concat('Вы уверены что хотите удалить павильон №"',PavilionForDelete.Name, '", в ТЦ "', LBCurrentShopCenter.Caption ,'" ?')),'Удаление торгового центра',MB_YESNO + MB_ICONQUESTION) = IDYES then
  140.             begin
  141.                 TempList.DeletePavilionByID(PavilionForDelete.ID_Pavilion);
  142.                 TempList.SavePavilionList(ConstantsFile.FILE_NAME_PAVILION);
  143.                 Self.FrameEnter(NIL);
  144.             end;
  145.         end
  146.         else
  147.         begin
  148.             Application.MessageBox('Список павильонов пуст. Добавьте сначала павильон.','Удаление невозможно',MB_OK+MB_ICONERROR);
  149.         end;
  150.     Except
  151.         Application.MessageBox('Выберите павильон','Удаление невозможно',MB_OK + MB_ICONERROR)
  152.     end;
  153. end;
  154.  
  155. procedure TPavilionFrameMain.BtnEditClick(Sender: TObject);
  156. var
  157.     C, R : Word;
  158.     PavilionForEdit : TPavilion;
  159.     TempList : TPavilionList;
  160. begin
  161.     try
  162.         if SGPavilion.RowCount - 1 <> 0 then
  163.         begin
  164.             C := SGPavilion.Col;
  165.             R := SGPavilion.Row;
  166.  
  167.             PavilionForEdit := TPavilionList.GetPavilionById(SGPavilion.Cells[0, R].ToInteger, ConstantsFile.FILE_NAME_PAVILION);
  168.             TempList := TPavilionList.GetPavilionListFromFile(ConstantsFile.FILE_NAME_PAVILION);
  169.  
  170.             if PavilionForEdit <> NIL then
  171.                 TempList.DeletePavilionByID(PavilionForEdit.ID_Pavilion);
  172.  
  173.             with MainForm do
  174.             begin
  175.                 PavilionFrameMain.Visible := False;
  176.                 PavilionFrameAddEdit.Visible := True;
  177.                 PavilionFrameAddEdit.UpdateFrameForEdit(PavilionForEdit);
  178.                 LBCurrentPage.Caption := ConstantsTitleMainFrame.TITLE_PAVILION_EDIT_PAGE;
  179.             end;
  180.         end
  181.         else
  182.         begin
  183.              Application.MessageBox('Список павильонов пуст. Добавьте сначала павильон.','Редактирование невозможно',MB_OK+MB_ICONERROR);
  184.         end;
  185.     except
  186.         Application.MessageBox('Выберите павильон','Редактирование невозможно',MB_OK + MB_ICONERROR);
  187.     end;
  188. end;
  189.  
  190. procedure TPavilionFrameMain.ButtonBackClick(Sender: TObject);
  191. begin
  192.     Self.Visible := False;
  193.     Main.MainForm.ManagerAFrameMain.Visible := True;
  194. end;
  195.  
  196. procedure TPavilionFrameMain.ButtonCalcRentClick(Sender: TObject);
  197. var
  198.     FormCalc : TFormCalcRent;
  199.     C, R : Word;
  200.     Pav : TPavilion;
  201.     SC : TShopCenter;
  202.     FCResult : Integer;
  203. begin
  204.     try
  205.         if SGPavilion.RowCount - 1 <> 0 then
  206.         begin
  207.             FCResult := 0;
  208.             C := SGPavilion.Col;
  209.             R := SGPavilion.Row;
  210.  
  211.             Pav := TPavilionList.GetPavilionById(SGPavilion.Cells[0,R].ToInteger,ConstantsFile.FILE_NAME_PAVILION);
  212.             SC := TShopCenterList.GetShopCenterByPrimaryKey(StrToInt(LBPKShopCenter.Caption), ConstantsFile.FILE_NAME_SHOPCENTER);
  213.  
  214.             try
  215.                 FormCalc := TFormCalcRent.Create(Main.MainForm, Pav, SC);
  216.                 FCResult := FormCalc.ShowModal;
  217.             finally
  218.                 FormCalc.Free;
  219.             end
  220.         end
  221.         else
  222.         begin
  223.              Application.MessageBox('Список павильонов пуст. Добавьте сначала павильон.','Рассчитать аренду невозможно',MB_OK+MB_ICONERROR);
  224.         end;
  225.     except
  226.         Application.MessageBox('Выберите павильон','Рассчитать аренду невозможно',MB_OK + MB_ICONERROR);
  227.     end;
  228.  
  229. end;
  230.  
  231. procedure TPavilionFrameMain.FrameEnter(Sender: TObject);
  232. begin
  233.     FillPavilions(SGPavilion, StrToInt(LBPKShopCenter.Caption));
  234. end;
  235.  
  236. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement