Advertisement
Guest User

9laba

a guest
May 16th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 8.12 KB | None | 0 0
  1. unit laba9;
  2.  
  3. interface
  4.  
  5. uses
  6.   Winapi.Windows, System.SysUtils, System.Classes,
  7.   Vcl.Forms, Vcl.ComCtrls, Vcl.StdCtrls,
  8.   Vcl.Controls, uniit;
  9.  
  10. type
  11.  
  12.   TForm1 = class(TForm)
  13.     lGroup: TLabel;
  14.     eGroup: TEdit;
  15.     lNaim: TLabel;
  16.     eName: TEdit;
  17.     lAmount: TLabel;
  18.     eAmount: TEdit;
  19.     lPrice: TLabel;
  20.     ePrice: TEdit;
  21.     lFrom: TLabel;
  22.     eFrom: TEdit;
  23.     lCheck: TLabel;
  24.     cbCheck: TCheckBox;
  25.     bAdd: TButton;
  26.     bChange: TButton;
  27.     bClear: TButton;
  28.     lvTable: TListView;
  29.     bOK: TButton;
  30.     bDelete: TButton;
  31.     bShow: TButton;
  32.     lShow: TLabel;
  33.     cbShow: TComboBox;
  34.     procedure bClearClick(Sender: TObject);
  35.     procedure bChangeClick(Sender: TObject);
  36.     procedure FormShow(Sender: TObject);
  37.     procedure bAddClick(Sender: TObject);
  38.     procedure bDeleteClick(Sender: TObject);
  39.     procedure bShowClick(Sender: TObject);
  40.     procedure cbShowSelect(Sender: TObject);
  41.   private
  42.     { Private declarations }
  43.   public
  44.     { Public declarations }
  45.   end;
  46.  
  47. var
  48.   Form1: TForm1;
  49.   F:TWhF;
  50.   checkPrice:integer;
  51.   Names: Array[0..5] of string = ('Группа','Наименование',
  52.                                  'Количество','Стоимость',
  53.                                  'Поставщик','Наличие');
  54.  
  55. implementation
  56.  
  57. {$R *.dfm}
  58.  
  59. procedure TForm1.bAddClick(Sender: TObject);
  60. var
  61.   ware:TWareHouse;
  62.   tmp:integer;
  63. begin
  64.   try
  65.     if (eGroup.Text = '') or (eAmount.Text = '') or (eName.Text = '') or (ePrice.Text = '') or (eFrom.Text = '') then
  66.       strToInt('E');
  67.  
  68.     with ware do
  69.     begin
  70.       Group:=StrToInt(eGroup.Text);
  71.       Name:=eName.Text;
  72.       Amount:=StrToInt(eAmount.Text);
  73.       Price:=StrToInt(ePrice.Text);
  74.       Deliverer:=eFrom.Text;
  75.       Available:=cbCheck.Checked;
  76.     end;
  77.     reset(F);
  78.     if ((Sender as TButton).Tag = 222) then
  79.     begin
  80.       tmp:=lvTable.Selected.Index;
  81.       DelEl(F,tmp);
  82.       if (ware.Price = checkPrice) then
  83.         PutEl(F,ware,tmp)
  84.       else
  85.         tmp:=EnterSearch(F, ware);
  86.       MessageBox(0, PChar('Данные изменены'), 'Изменение',MB_ICONASTERISK+MB_OK+MB_TOPMOST);
  87.     end
  88.     else
  89.     begin
  90.       tmp:=EnterSearch(F,ware);
  91.       MessageBox(0, PChar('Деталь добавлена'), 'Добавление',MB_ICONASTERISK+MB_OK+MB_TOPMOST);
  92.     end;
  93.  
  94.     eGroup.Clear;
  95.     eName.Clear;
  96.     eAmount.Clear;
  97.     ePrice.Clear;
  98.     eFrom.Clear;
  99.     cbCheck.Checked:=False;
  100.     DrawTable(lvTable, F);
  101.     closefile(F);
  102.     bOK.Enabled:=False;
  103.     bClear.Enabled:=True;
  104.     bDelete.Enabled:=True;
  105.     bAdd.Enabled:=True;
  106.     bChange.Enabled:=True;
  107.     lvTable.Enabled:=True;
  108.     bShow.Enabled:=True;
  109.     cbShow.Enabled:=True;
  110.     lShow.Enabled:=True;
  111.     lvTable.SetFocus;
  112.     lvTable.Items[tmp].Selected:=True;
  113.     lvTable.Items[tmp].Focused:=True;
  114.   except
  115.     MessageBox(0, PChar('Некорректное заполнение поля!'), 'Ошибка!',MB_ICONERROR+MB_OK+MB_TOPMOST);
  116.   end;
  117. end;
  118.  
  119. procedure TForm1.bChangeClick(Sender: TObject);
  120. var
  121.   tmp:integer;
  122.   inter:TWareHouse;
  123. begin
  124.   if lvTable.Selected <> nil then
  125.   begin
  126.     bOK.Enabled:=True;
  127.     bClear.Enabled:=False;
  128.     bDelete.Enabled:=False;
  129.     bAdd.Enabled:=False;
  130.     bChange.Enabled:=False;
  131.     lvTable.Enabled:=False;
  132.     bShow.Enabled:=False;
  133.     cbShow.Enabled:=False;
  134.     lShow.Enabled:=False;
  135.  
  136.     tmp:=lvTable.Selected.Index;
  137.  
  138.     reset(F);
  139.     seek(F,tmp);
  140.     read(F,inter);
  141.  
  142.     eGroup.Text:=IntToStr(inter.Group);
  143.     eName.Text:=inter.Name;
  144.     eAmount.Text:=IntToStr(inter.Amount);
  145.     ePrice.Text:=IntToStr(inter.Price);
  146.     checkPrice:=inter.Price;
  147.     eFrom.Text:=inter.Deliverer;
  148.     cbCheck.Checked:=inter.Available;
  149.  
  150.     closefile(f);
  151.  
  152.   end
  153.   else
  154.   MessageBox(0, PChar('Элемент не выделен!'), 'Ошибка!',MB_ICONERROR+MB_OK+MB_TOPMOST);
  155. end;
  156.  
  157. procedure TForm1.bClearClick(Sender: TObject);
  158. begin
  159.   reset(F);
  160.   Truncate(F);
  161.   closefile(F);
  162.   lvTable.Items.Clear;
  163. end;
  164.  
  165. procedure TForm1.bDeleteClick(Sender: TObject);
  166. var
  167.   tmp:integer;
  168. begin
  169.   if lvTable.Selected <> nil then
  170.   begin
  171.     tmp:=lvTable.Selected.Index;
  172.     reset(F);
  173.     DelEl(F,tmp);
  174.     CloseFile(F);
  175.     lvTable.Selected.Delete;
  176.     MessageBox(0, PChar('Деталь удалена'), 'Удаление',MB_ICONASTERISK+MB_OK+MB_TOPMOST);
  177.   end
  178.   else
  179.     MessageBox(0, PChar('Элемент не выделен!'), 'Ошибка!',MB_ICONERROR+MB_OK+MB_TOPMOST);
  180.  
  181. end;
  182.  
  183.  
  184. procedure TForm1.bShowClick(Sender: TObject);
  185. var
  186.   Item:TListItem;
  187.   inter:TWareHouse;
  188.   i:integer;
  189. begin
  190.   try
  191.     case cbShow.ItemIndex of
  192.       0:
  193.       begin
  194.         Self.FormShow(Sender);
  195.       end;
  196.       1:
  197.       begin
  198.         with lvTable do
  199.         begin
  200.           Items.Clear;
  201.           Columns.Clear;
  202.           Columns.Add;
  203.           Columns[0].Width:=150;
  204.           Columns[0].Caption:='Наименование';
  205.           Columns.Add;
  206.           Columns[1].Width:=100;
  207.           Columns[1].Caption:='Количество';
  208.           i:=0;
  209.           reset(F);
  210.           if FileSize(F)>=1 then
  211.           while not eof(F) do
  212.           begin
  213.             Item:=Items.Add;
  214.             read(F,Inter);
  215.             with Item do
  216.             begin
  217.               Caption:=(Inter.Name);
  218.               SubItems.Add(IntToStr(Inter.Amount));
  219.             end;
  220.             i:=i+Inter.Amount;
  221.           end;
  222.           closefile(F);
  223.         end;
  224.         MessageBox(0, PChar('Общее количество деталей - '+IntToStr(i)), 'Запрос',MB_ICONINFORMATION+MB_OK+MB_TOPMOST);
  225.       end;
  226.  
  227.       2:
  228.       begin
  229.         if (eName.Text = '') or (ePrice.Text = '') or (eFrom.Text = '') then
  230.           strToInt('E');
  231.         with lvTable do
  232.         begin
  233.           reset(F);
  234.           if FileSize(F)>=1 then
  235.           begin
  236.             Items.Clear;
  237.             i:=0;
  238.             while not eof(F) do
  239.             begin
  240.               read(F,Inter);
  241.               if (inter.Name = eName.Text) and (inter.Price = StrToInt(ePrice.Text)) and (inter.Deliverer = eFrom.Text) and (inter.Available = cbCheck.Checked) then
  242.               begin
  243.                 Item:=Items.Add;
  244.                 with Item do
  245.                 begin
  246.                   Caption:=IntToStr((Inter.Group));
  247.                   SubItems.Add(Inter.Name);
  248.                   SubItems.Add(IntToStr(Inter.Amount));
  249.                   SubItems.Add(IntToStr(Inter.Price));
  250.                   SubItems.Add(Inter.Deliverer);
  251.                   if Inter.Available then
  252.                     SubItems.Add('На складе')
  253.                   else
  254.                     SubItems.Add('Отсутствует');
  255.                 end;
  256.                 i:=i+Inter.Amount;
  257.               end;
  258.             end;
  259.             MessageBox(0, PChar('Общее количество деталей с наименованием "'+eName.Text+'" - '+IntToStr(i)), 'Запрос',MB_ICONINFORMATION+MB_OK+MB_TOPMOST);
  260.           end;
  261.           CloseFile(F);
  262.         end;
  263.       end;
  264.     end;
  265.   except
  266.     MessageBox(0, PChar('Проверьте заполнение всех ячеек!'), 'Ошибка!',MB_ICONERROR+MB_OK+MB_TOPMOST);
  267.   end;
  268. end;
  269.  
  270. procedure TForm1.cbShowSelect(Sender: TObject);
  271. begin
  272.   if (Sender as TComboBox).ItemIndex = 2 then
  273.   begin
  274.     lGroup.Enabled:=False;
  275.     eGroup.Enabled:=False;
  276.     eAmount.Enabled:=False;
  277.     lAmount.Enabled:=False;
  278.     bAdd.Enabled:=False;
  279.     bChange.Enabled:=False;
  280.     eName.SetFocus;
  281.   end
  282.   else
  283.   begin
  284.     lGroup.Enabled:=True;
  285.     eGroup.Enabled:=True;
  286.     eAmount.Enabled:=True;
  287.     lAmount.Enabled:=True;
  288.     bAdd.Enabled:=True;
  289.     bChange.Enabled:=True;
  290.   end;
  291. end;
  292.  
  293. procedure TForm1.FormShow(Sender: TObject);
  294. var
  295.   i:integer;
  296. begin
  297.   AssignFile(F, 'warehouse.dat');
  298.   if not (FileExists('warehouse.dat')) then
  299.     rewrite(F)
  300.   else
  301.     reset(F);
  302.   lvTable.Items.Clear;
  303.   lvTable.Columns.Clear;
  304.   for i := 0 to 5 do
  305.   begin
  306.     lvTable.Columns.Add;
  307.     lvTable.Columns[i].Caption:=Names[i];
  308.     lvTable.Columns[i].width:=116;
  309.   end;
  310.   DrawTable(lvTable, F);
  311.   closefile(F);
  312.   cbShow.ItemIndex:=0;
  313. end;
  314.  
  315. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement