Advertisement
ksyshshot

упозн 6

Jun 1st, 2023
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 15.47 KB | Source Code | 0 0
  1. unit UnitChangeLists;
  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.Grids, Vcl.StdCtrls, UnitMain;
  8.  
  9. type
  10.   //TPElemIngredient = UnitMain.TPElemIngredient;
  11.   TFormLists = class(TForm)
  12.     Ingredients: TStringGrid;
  13.     LabelIngredients: TLabel;
  14.     BtAddIngr: TButton;
  15.     BtDelIngr: TButton;
  16.     BtChIngr: TButton;
  17.     Dishes: TStringGrid;
  18.     Banquet: TStringGrid;
  19.     Label1: TLabel;
  20.     Label2: TLabel;
  21.     BtAddDishes: TButton;
  22.     BtDelDishes: TButton;
  23.     BtChDishes: TButton;
  24.     BtAddBan: TButton;
  25.     BtDelBan: TButton;
  26.     BtChBan: TButton;
  27.     procedure BtAddIngrClick(Sender: TObject);
  28.     procedure BtAddBanClick(Sender: TObject);
  29.     procedure BtAddDishesClick(Sender: TObject);
  30.     procedure BtDelIngrClick(Sender: TObject);
  31.     procedure BtDelDishesClick(Sender: TObject);
  32.     procedure BtDelBanClick(Sender: TObject);
  33.     procedure AddIngrToStrGrid(var StrGrid: TStringGrid; Ingr: TPElemIngredient);
  34.     procedure AddBanquetToStrGrid(var StrGrid: TStringGrid; Ingr: TPElemBanquet);
  35.     procedure BtChIngrClick(Sender: TObject);
  36.     procedure IngredientsSelectCell(Sender: TObject; ACol, ARow: Integer;
  37.       var CanSelect: Boolean);
  38.     procedure AddDishToStrGrid(var StrGrid: TStringGrid; Dish: TPElemDish);
  39.     procedure BtChDishesClick(Sender: TObject);
  40.     procedure DishesSelectCell(Sender: TObject; ACol, ARow: Integer;
  41.       var CanSelect: Boolean);
  42.     procedure BanquetSelectCell(Sender: TObject; ACol, ARow: Integer;
  43.       var CanSelect: Boolean);
  44.     procedure BtChBanClick(Sender: TObject);
  45.   private
  46.     { Private declarations }
  47.   public
  48.     { Public declarations }
  49.   end;
  50.  
  51. var
  52.   FormLists: TFormLists;
  53.  
  54. implementation
  55.  
  56. {$R *.dfm}
  57.  
  58. uses UnitIngredient, UnitBanquet, UnitDish, UnitMessage;
  59.  
  60. type
  61.     TPElemIngredient = UnitMain.TPElemIngredient;
  62.     TPElemDish = UnitMain.TPElemDish;
  63.     TPElemBanquet = UnitMain.TPElemBanquet;
  64.  
  65. procedure Deleting(var StrGrid: TStringGrid; ARow: Integer);
  66. var
  67.     I: Integer;
  68. begin
  69.     for I := ARow to (StrGrid.RowCount - 2) do
  70.         StrGrid.Rows[I] := StrGrid.Rows[I + 1];
  71.     StrGrid.RowCount := StrGrid.RowCount - 1;
  72. end;
  73.  
  74. procedure DeletingBan(var StrGrid: TStringGrid; ACol: Integer);
  75. var
  76.     I: Integer;
  77. begin
  78.     for I := ACol to (StrGrid.ColCount - 2) do
  79.         StrGrid.Cols[I] := StrGrid.Cols[I + 1];
  80.     StrGrid.ColCount := StrGrid.ColCount - 1;
  81. end;
  82.  
  83. procedure TFormLists.BanquetSelectCell(Sender: TObject; ACol, ARow: Integer;
  84.   var CanSelect: Boolean);
  85. begin
  86.     if ACol = 0 then
  87.         CanSelect := false;
  88. end;
  89.  
  90. procedure TFormLists.BtAddBanClick(Sender: TObject);
  91. var
  92.     Curr: TPElemBanquet;
  93. begin
  94.     with UnitBanquet.FormBanquet do
  95.     begin
  96.         ComboBox.Items := Dishes.Cols[0];
  97.         ComboBox.Items[0] := '';
  98.         if ShowModal = mrOk then
  99.         begin
  100.             if not(UnitMain.FormMenu.SearchBanquet(Curr,
  101.               StrToInt(ComboBox.Items[ComboBox.ItemIndex]))) then
  102.             begin
  103.                 UnitMain.FormMenu.AddBanquet(CurrBanquet,
  104.                   StrToInt(ComboBox.Items[ComboBox.ItemIndex]),
  105.                   StrToInt(EditCount.Text), false);
  106.                 AddBanquetToStrGrid(Banquet, CurrBanquet);
  107.             end
  108.             else
  109.             begin
  110.                 UnitMessage.FormMessage.LabelMessage.Caption := 'Заказ с таким блюдом уже есть!';
  111.                 UnitMessage.FormMessage.ShowModal;
  112.                 UnitMessage.FormMessage.LabelMessage.Caption := '';
  113.             end;
  114.         end;
  115.     end;
  116. end;
  117.  
  118. procedure TFormLists.BtAddDishesClick(Sender: TObject);
  119. var
  120.     IngrArr: TIngrArr;
  121.     Curr: TPElemDish;
  122.     I: Integer;
  123. begin
  124.     with UnitDish.FormDish do
  125.     begin
  126.         Edit1.Enabled := true;
  127.         Ingr.RowCount := 1;
  128.         ComboBox.Items := Ingredients.Cols[0];
  129.         ComboBox.Items[0] := '';
  130.         Ingr.Cells[0, 0] := 'Код';
  131.         Ingr.Cells[1, 0] := 'Количество';
  132.         Edit1.Clear;
  133.         Edit2.Clear;
  134.     end;
  135.     if UnitDish.FormDish.ShowModal = mrOk then
  136.     begin
  137.         if not(UnitMain.FormMenu.SearchDish(Curr, StrToInt(UnitDish.FormDish.Edit1.Text))) then
  138.         begin
  139.             with UnitDish.FormDish do
  140.             begin
  141.                 for I := 1 to (Ingr.RowCount - 1) do
  142.                 begin
  143.                     IngrArr[I - 1].Code := StrToInt(Ingr.Cells[0, I]);
  144.                     IngrArr[I - 1].Count := StrToInt(Ingr.Cells[1, I]);
  145.                 end;
  146.                 I := Ingr.RowCount - 1;
  147.                 while I < 6 do
  148.                 begin
  149.                     IngrArr[I].Code := 0;
  150.                     IngrArr[I].Count := 0;
  151.                     Inc(I);
  152.                 end;
  153.                 UnitMain.FormMenu.AddDish(CurrDish, StrToInt(Edit1.Text),
  154.                   Edit2.Text, IngrArr);
  155.             end;
  156.             AddDishToStrGrid(Dishes, CurrDish);
  157.         end
  158.         else
  159.         begin
  160.             UnitMessage.FormMessage.LabelMessage.Caption := 'Салат с таким кодом уже присутствует в списке!';
  161.             UnitMessage.FormMessage.ShowModal;
  162.             UnitMessage.FormMessage.LabelMessage.Caption := '';
  163.         end;
  164.     end;
  165. end;
  166.  
  167. procedure TFormLists.AddIngrToStrGrid(var StrGrid: TStringGrid; Ingr: TPElemIngredient);
  168. begin
  169.     StrGrid.RowCount := StrGrid.RowCount + 1;
  170.     StrGrid.Cells[0, StrGrid.RowCount - 1] := IntToStr(Ingr.Code);
  171.     StrGrid.Cells[1, StrGrid.RowCount - 1] := Ingr.Name;
  172.     StrGrid.Cells[2, StrGrid.RowCount - 1] := IntToStr(Ingr.ProteinCount);
  173.     StrGrid.Cells[3, StrGrid.RowCount - 1] := IntToStr(Ingr.FatCount);
  174.     StrGrid.Cells[4, StrGrid.RowCount - 1] := IntToStr(Ingr.CarbohydrateCount);
  175.     StrGrid.Cells[5, StrGrid.RowCount - 1] := IntToStr(Ingr.ChangeCode);
  176. end;
  177.  
  178. procedure TFormLists.AddDishToStrGrid(var StrGrid: TStringGrid; Dish: TPElemDish);
  179. var
  180.     I: Integer;
  181. begin
  182.     StrGrid.RowCount := StrGrid.RowCount + 1;
  183.     StrGrid.Cells[0, StrGrid.RowCount - 1] := IntToStr(Dish.Code);
  184.     StrGrid.Cells[1, StrGrid.RowCount - 1] := Dish.Name;
  185.     StrGrid.Cells[2, StrGrid.RowCount - 1] := '';
  186.     I := 0;
  187.     while (I < 5) do
  188.     begin
  189.         if (Dish.Ingr[I].Code <> 0) and (Dish.Ingr[I].Count <> 0) then
  190.         begin
  191.             StrGrid.Cells[2, StrGrid.RowCount - 1] := StrGrid.Cells[2, StrGrid.RowCount - 1] +
  192.               IntToStr(Dish.Ingr[I].Code) + '(' + IntToStr(Dish.Ingr[I].Count) + '); ';
  193.         end;
  194.         Inc(I);
  195.     end;
  196. end;
  197.  
  198. procedure TFormLists.AddBanquetToStrGrid(var StrGrid: TStringGrid; Ingr: TPElemBanquet);
  199. begin
  200.     StrGrid.ColCount := StrGrid.ColCount + 1;
  201.     StrGrid.Cells[StrGrid.ColCount - 1, 0] := IntToStr(Ingr.Code);
  202.     StrGrid.Cells[StrGrid.ColCount - 1, 1] := IntToStr(Ingr.Count);
  203.     if Ingr.CanCook then
  204.     begin
  205.         StrGrid.Cells[StrGrid.ColCount - 1, 2] := 'да';
  206.     end
  207.     else
  208.     begin
  209.         StrGrid.Cells[StrGrid.ColCount - 1, 2] := 'нет';
  210.     end;
  211. end;
  212.  
  213. procedure TFormLists.BtAddIngrClick(Sender: TObject);
  214. var
  215.     Curr: TPElemIngredient;
  216.     CombBox: Integer;
  217. begin
  218.     with UnitIngredient.FormIngredient do
  219.     begin
  220.         Edit1.Enabled := true;
  221.         ComboBox.Items := Ingredients.Cols[0];
  222.         ComboBox.Items[0] := '';
  223.         Edit1.Clear;
  224.         Edit2.Clear;
  225.         Edit3.Clear;
  226.         Edit4.Clear;
  227.         Edit5.Clear;
  228.     end;
  229.     if UnitIngredient.FormIngredient.ShowModal = mrOk then
  230.     begin
  231.         if not (UnitMain.FormMenu.SearchIngredient(Curr,
  232.           StrToInt(UnitIngredient.FormIngredient.Edit1.Text))) then
  233.         begin
  234.             with UnitIngredient.FormIngredient do
  235.             begin
  236.                 if ComboBox.Items[ComboBox.ItemIndex] <> '' then
  237.                 begin
  238.                     CombBox := StrToInt(ComboBox.Items[ComboBox.ItemIndex]);
  239.                 end;
  240.                 UnitMain.FormMenu.AddIngredient(CurrIngredient, StrToInt(Edit1.Text),
  241.                   StrToInt(Edit3.Text), StrToInt(Edit4.Text), StrToInt(Edit5.Text),
  242.                   CombBox, Edit2.Text);
  243.             end;
  244.             AddIngrToStrGrid(Ingredients, CurrIngredient);
  245.         end
  246.         else
  247.         begin
  248.             UnitMessage.FormMessage.LabelMessage.Caption := 'Ингредиент с таким кодом уже присутствует в списке!';
  249.             UnitMessage.FormMessage.ShowModal;
  250.             UnitMessage.FormMessage.LabelMessage.Caption := '';
  251.         end;
  252.     end;
  253. end;
  254.  
  255. procedure TFormLists.BtChBanClick(Sender: TObject);
  256. var
  257.     Curr: TPElemBanquet;
  258. begin
  259.     with UnitBanquet.FormBanquet do
  260.     begin
  261.         ComboBox.Items := Banquet.Rows[0];
  262.         ComboBox.ItemIndex := Banquet.Col;
  263.         ComboBox.Enabled := false;
  264.         EditCount.Text := Banquet.Cells[Banquet.Col, 1];
  265.         ButtonAdd.Enabled := true;
  266.         if UnitBanquet.FormBanquet.ShowModal = mrOk then
  267.         begin
  268.             Banquet.Cells[Banquet.Col, 0] := ComboBox.Items[ComboBox.ItemIndex];
  269.             Banquet.Cells[Banquet.Col, 1] := EditCount.Text;
  270.             UnitMain.FormMenu.SearchBanquet(Curr, StrToInt(ComboBox.Items[ComboBox.ItemIndex]));
  271.             UnitMain.FormMenu.ChangeBanquet(Curr,
  272.               StrToInt(ComboBox.Items[ComboBox.ItemIndex]), StrToInt(EditCount.Text),false);
  273.         end;
  274.         ComboBox.Enabled := true;
  275.         ButtonAdd.Enabled := false;
  276.     end;
  277. end;
  278.  
  279. procedure TFormLists.BtChDishesClick(Sender: TObject);
  280. var
  281.     Curr: TPElemDish;
  282.     I: Integer;
  283.     Count: Integer;
  284.     IngrArr: TIngrArr;
  285. begin
  286.     with UnitDish.FormDish do
  287.     begin
  288.         Ingr.RowCount := 1;
  289.         Ingr.Cells[0, 0] := 'Код';
  290.         Ingr.Cells[1, 0] := 'Количество';
  291.         Edit1.Text := Dishes.Cells[0, Dishes.Row];
  292.         Edit2.Text := Dishes.Cells[1, Dishes.Row];
  293.         ComboBox.Items := Ingredients.Cols[0];
  294.         ComboBox.Items[0] := '';
  295.         Edit1.Enabled := false;
  296.         ButtonAdd.Enabled := true;
  297.         I := 1;
  298.         Count := length(Dishes.Cells[2, Dishes.Row]);
  299.         while I <= Count do
  300.         begin
  301.             Ingr.RowCount := Ingr.RowCount + 1;
  302.             Ingr.Cells[0, Ingr.RowCount - 1] := Copy(Dishes.Cells[2, Dishes.Row], I, 3);
  303.             if Dishes.Cells[2, Dishes.Row][I + 6] = ')' then
  304.             begin
  305.                 Ingr.Cells[1, Ingr.RowCount - 1] := Copy(Dishes.Cells[2, Dishes.Row], (I + 4), 2);
  306.                 Inc(I, 9);
  307.             end
  308.             else
  309.             begin
  310.                 Ingr.Cells[1, Ingr.RowCount - 1] := Copy(Dishes.Cells[2, Dishes.Row], (I + 4), 1);
  311.                 Inc(I, 8);
  312.             end;
  313.         end;
  314.     end;
  315.     if UnitDish.FormDish.ShowModal = mrOk then
  316.     begin
  317.         with UnitDish.FormDish do
  318.         begin
  319.             ButtonAdd.Enabled := false;
  320.             Edit1.Enabled := true;
  321.             for I := 1 to (Ingr.RowCount - 1) do
  322.             begin
  323.                 IngrArr[I - 1].Code := StrToInt(Ingr.Cells[0, I]);
  324.                 IngrArr[I - 1].Count := StrToInt(Ingr.Cells[1, I]);
  325.             end;
  326.             while I < 5 do
  327.             begin
  328.                 IngrArr[I].Code := 0;
  329.                 IngrArr[I].Count := 0;
  330.                 Inc(I);
  331.             end;
  332.             Dishes.Cells[1, Dishes.Row] := Edit2.Text;
  333.             Dishes.Cells[2, Dishes.Row] := '';
  334.             for I := Low(IngrArr) to High(IngrArr) do
  335.             begin
  336.                 if (IngrArr[I].Code <> 0) and (IngrArr[I].Count <> 0) then
  337.                 begin
  338.                     Dishes.Cells[2, Dishes.Row] := Dishes.Cells[2, Dishes.Row] +
  339.                     IntToStr(IngrArr[I].Code) + '(' + IntToStr(IngrArr[I].Count) + '); ';
  340.                 end;
  341.             end;
  342.             UnitMain.FormMenu.SearchDish(Curr, StrToInt(Edit1.Text));
  343.             UnitMain.FormMenu.ChangeDish(Curr, Edit2.Text, IngrArr);
  344.         end;
  345.     end;
  346. end;
  347.  
  348. procedure TFormLists.BtChIngrClick(Sender: TObject);
  349. var
  350.     Curr: TPElemIngredient;
  351. begin
  352.     with UnitIngredient.FormIngredient do
  353.     begin
  354.         Edit1.Text := Ingredients.Cells[0, Ingredients.Row];
  355.         Edit1.Enabled := false;
  356.         Edit2.Text := Ingredients.Cells[1, Ingredients.Row];
  357.         Edit3.Text := Ingredients.Cells[2, Ingredients.Row];
  358.         Edit4.Text := Ingredients.Cells[3, Ingredients.Row];
  359.         Edit5.Text := Ingredients.Cells[4, Ingredients.Row];
  360.         ComboBox.Items := Ingredients.Cols[0];
  361.         ComboBox.Items[0] := '';
  362.     end;
  363.     if UnitIngredient.FormIngredient.ShowModal = mrOk then
  364.     begin
  365.         with UnitIngredient.FormIngredient do
  366.         begin
  367.             Edit1.Enabled := true;
  368.             Ingredients.Cells[1, Ingredients.Row] := Edit2.Text;
  369.             Ingredients.Cells[2, Ingredients.Row] := Edit3.Text;
  370.             Ingredients.Cells[3, Ingredients.Row] := Edit4.Text;
  371.             Ingredients.Cells[4, Ingredients.Row] := Edit5.Text;
  372.             if ComboBox.Items[ComboBox.ItemIndex] <> '' then
  373.             begin
  374.                 Ingredients.Cells[5, Ingredients.Row] := ComboBox.Items[ComboBox.ItemIndex];
  375.             end
  376.             else
  377.             begin
  378.                 Ingredients.Cells[5, Ingredients.Row] := '0';
  379.             end;
  380.             if Ingredients.Cells[5, Ingredients.Row] = Ingredients.Cells[0, Ingredients.Row] then
  381.             begin
  382.                 Ingredients.Cells[5, Ingredients.Row] := '0';
  383.             end;
  384.             UnitMain.FormMenu.SearchIngredient(Curr,
  385.               StrToInt(Ingredients.Cells[0, Ingredients.Row]));
  386.             UnitMain.FormMenu.ChangeIngredient(Curr, Edit2.Text, StrToInt(Edit3.Text),
  387.               StrToInt(Edit4.Text), StrToInt(Edit5.Text),
  388.               StrToInt(Ingredients.Cells[5, Ingredients.Row]));
  389.         end;
  390.     end;
  391. end;
  392.  
  393. procedure TFormLists.BtDelBanClick(Sender: TObject);
  394. begin
  395.     if Banquet.ColCount > 1 then
  396.     begin
  397.         UnitMain.FormMenu.DeleteBanquet(StrToInt(Banquet.Cells[Banquet.Col, 0]));
  398.         DeletingBan(Banquet, Banquet.Col);
  399.     end
  400.     else
  401.     begin
  402.         UnitMessage.FormMessage.LabelMessage.Caption := 'Нет блюд на банкет для удаления!';
  403.         UnitMessage.FormMessage.ShowModal;
  404.         UnitMessage.FormMessage.LabelMessage.Caption := '';
  405.     end;
  406. end;
  407.  
  408. procedure TFormLists.BtDelDishesClick(Sender: TObject);
  409. begin
  410.     if Dishes.RowCount > 1 then
  411.     begin
  412.         UnitMain.FormMenu.DeleteDish(StrToInt(Dishes.Cells[0, Dishes.Row]));
  413.         Deleting(Dishes, Dishes.Row);
  414.     end
  415.     else
  416.     begin
  417.         UnitMessage.FormMessage.LabelMessage.Caption := 'Нет салатов для удаления!';
  418.         UnitMessage.FormMessage.ShowModal;
  419.         UnitMessage.FormMessage.LabelMessage.Caption := '';
  420.     end;
  421. end;
  422.  
  423. procedure TFormLists.BtDelIngrClick(Sender: TObject);
  424. begin
  425.     if Ingredients.RowCount > 1 then
  426.     begin
  427.         UnitMain.FormMenu.DeleteIngredient(StrToInt(Ingredients.Cells[0, Ingredients.Row]));
  428.         Deleting(Ingredients, Ingredients.Row);
  429.     end
  430.     else
  431.     begin
  432.         UnitMessage.FormMessage.LabelMessage.Caption := 'Нет ингредиентов для удаления!';
  433.         UnitMessage.FormMessage.ShowModal;
  434.         UnitMessage.FormMessage.LabelMessage.Caption := '';
  435.     end;
  436. end;
  437.  
  438. procedure TFormLists.DishesSelectCell(Sender: TObject; ACol, ARow: Integer;
  439.   var CanSelect: Boolean);
  440. begin
  441.     if ARow = 0 then
  442.         CanSelect := false;
  443. end;
  444.  
  445. procedure TFormLists.IngredientsSelectCell(Sender: TObject; ACol, ARow: Integer;
  446.   var CanSelect: Boolean);
  447. begin
  448.     if ARow = 0 then
  449.         CanSelect := false;
  450. end;
  451.  
  452. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement