Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit laba9;
- interface
- uses
- Winapi.Windows, System.SysUtils, System.Classes,
- Vcl.Forms, Vcl.ComCtrls, Vcl.StdCtrls,
- Vcl.Controls, uniit;
- type
- TForm1 = class(TForm)
- lGroup: TLabel;
- eGroup: TEdit;
- lNaim: TLabel;
- eName: TEdit;
- lAmount: TLabel;
- eAmount: TEdit;
- lPrice: TLabel;
- ePrice: TEdit;
- lFrom: TLabel;
- eFrom: TEdit;
- lCheck: TLabel;
- cbCheck: TCheckBox;
- bAdd: TButton;
- bChange: TButton;
- bClear: TButton;
- lvTable: TListView;
- bOK: TButton;
- bDelete: TButton;
- bShow: TButton;
- lShow: TLabel;
- cbShow: TComboBox;
- procedure bClearClick(Sender: TObject);
- procedure bChangeClick(Sender: TObject);
- procedure FormShow(Sender: TObject);
- procedure bAddClick(Sender: TObject);
- procedure bDeleteClick(Sender: TObject);
- procedure bShowClick(Sender: TObject);
- procedure cbShowSelect(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- Form1: TForm1;
- F:TWhF;
- checkPrice:integer;
- Names: Array[0..5] of string = ('Группа','Наименование',
- 'Количество','Стоимость',
- 'Поставщик','Наличие');
- implementation
- {$R *.dfm}
- procedure TForm1.bAddClick(Sender: TObject);
- var
- ware:TWareHouse;
- tmp:integer;
- begin
- try
- if (eGroup.Text = '') or (eAmount.Text = '') or (eName.Text = '') or (ePrice.Text = '') or (eFrom.Text = '') then
- strToInt('E');
- with ware do
- begin
- Group:=StrToInt(eGroup.Text);
- Name:=eName.Text;
- Amount:=StrToInt(eAmount.Text);
- Price:=StrToInt(ePrice.Text);
- Deliverer:=eFrom.Text;
- Available:=cbCheck.Checked;
- end;
- reset(F);
- if ((Sender as TButton).Tag = 222) then
- begin
- tmp:=lvTable.Selected.Index;
- DelEl(F,tmp);
- if (ware.Price = checkPrice) then
- PutEl(F,ware,tmp)
- else
- tmp:=EnterSearch(F, ware);
- MessageBox(0, PChar('Данные изменены'), 'Изменение',MB_ICONASTERISK+MB_OK+MB_TOPMOST);
- end
- else
- begin
- tmp:=EnterSearch(F,ware);
- MessageBox(0, PChar('Деталь добавлена'), 'Добавление',MB_ICONASTERISK+MB_OK+MB_TOPMOST);
- end;
- eGroup.Clear;
- eName.Clear;
- eAmount.Clear;
- ePrice.Clear;
- eFrom.Clear;
- cbCheck.Checked:=False;
- DrawTable(lvTable, F);
- closefile(F);
- bOK.Enabled:=False;
- bClear.Enabled:=True;
- bDelete.Enabled:=True;
- bAdd.Enabled:=True;
- bChange.Enabled:=True;
- lvTable.Enabled:=True;
- bShow.Enabled:=True;
- cbShow.Enabled:=True;
- lShow.Enabled:=True;
- lvTable.SetFocus;
- lvTable.Items[tmp].Selected:=True;
- lvTable.Items[tmp].Focused:=True;
- except
- MessageBox(0, PChar('Некорректное заполнение поля!'), 'Ошибка!',MB_ICONERROR+MB_OK+MB_TOPMOST);
- end;
- end;
- procedure TForm1.bChangeClick(Sender: TObject);
- var
- tmp:integer;
- inter:TWareHouse;
- begin
- if lvTable.Selected <> nil then
- begin
- bOK.Enabled:=True;
- bClear.Enabled:=False;
- bDelete.Enabled:=False;
- bAdd.Enabled:=False;
- bChange.Enabled:=False;
- lvTable.Enabled:=False;
- bShow.Enabled:=False;
- cbShow.Enabled:=False;
- lShow.Enabled:=False;
- tmp:=lvTable.Selected.Index;
- reset(F);
- seek(F,tmp);
- read(F,inter);
- eGroup.Text:=IntToStr(inter.Group);
- eName.Text:=inter.Name;
- eAmount.Text:=IntToStr(inter.Amount);
- ePrice.Text:=IntToStr(inter.Price);
- checkPrice:=inter.Price;
- eFrom.Text:=inter.Deliverer;
- cbCheck.Checked:=inter.Available;
- closefile(f);
- end
- else
- MessageBox(0, PChar('Элемент не выделен!'), 'Ошибка!',MB_ICONERROR+MB_OK+MB_TOPMOST);
- end;
- procedure TForm1.bClearClick(Sender: TObject);
- begin
- reset(F);
- Truncate(F);
- closefile(F);
- lvTable.Items.Clear;
- end;
- procedure TForm1.bDeleteClick(Sender: TObject);
- var
- tmp:integer;
- begin
- if lvTable.Selected <> nil then
- begin
- tmp:=lvTable.Selected.Index;
- reset(F);
- DelEl(F,tmp);
- CloseFile(F);
- lvTable.Selected.Delete;
- MessageBox(0, PChar('Деталь удалена'), 'Удаление',MB_ICONASTERISK+MB_OK+MB_TOPMOST);
- end
- else
- MessageBox(0, PChar('Элемент не выделен!'), 'Ошибка!',MB_ICONERROR+MB_OK+MB_TOPMOST);
- end;
- procedure TForm1.bShowClick(Sender: TObject);
- var
- Item:TListItem;
- inter:TWareHouse;
- i:integer;
- begin
- try
- case cbShow.ItemIndex of
- 0:
- begin
- Self.FormShow(Sender);
- end;
- 1:
- begin
- with lvTable do
- begin
- Items.Clear;
- Columns.Clear;
- Columns.Add;
- Columns[0].Width:=150;
- Columns[0].Caption:='Наименование';
- Columns.Add;
- Columns[1].Width:=100;
- Columns[1].Caption:='Количество';
- i:=0;
- reset(F);
- if FileSize(F)>=1 then
- while not eof(F) do
- begin
- Item:=Items.Add;
- read(F,Inter);
- with Item do
- begin
- Caption:=(Inter.Name);
- SubItems.Add(IntToStr(Inter.Amount));
- end;
- i:=i+Inter.Amount;
- end;
- closefile(F);
- end;
- MessageBox(0, PChar('Общее количество деталей - '+IntToStr(i)), 'Запрос',MB_ICONINFORMATION+MB_OK+MB_TOPMOST);
- end;
- 2:
- begin
- if (eName.Text = '') or (ePrice.Text = '') or (eFrom.Text = '') then
- strToInt('E');
- with lvTable do
- begin
- reset(F);
- if FileSize(F)>=1 then
- begin
- Items.Clear;
- i:=0;
- while not eof(F) do
- begin
- read(F,Inter);
- if (inter.Name = eName.Text) and (inter.Price = StrToInt(ePrice.Text)) and (inter.Deliverer = eFrom.Text) and (inter.Available = cbCheck.Checked) then
- begin
- Item:=Items.Add;
- with Item do
- begin
- Caption:=IntToStr((Inter.Group));
- SubItems.Add(Inter.Name);
- SubItems.Add(IntToStr(Inter.Amount));
- SubItems.Add(IntToStr(Inter.Price));
- SubItems.Add(Inter.Deliverer);
- if Inter.Available then
- SubItems.Add('На складе')
- else
- SubItems.Add('Отсутствует');
- end;
- i:=i+Inter.Amount;
- end;
- end;
- MessageBox(0, PChar('Общее количество деталей с наименованием "'+eName.Text+'" - '+IntToStr(i)), 'Запрос',MB_ICONINFORMATION+MB_OK+MB_TOPMOST);
- end;
- CloseFile(F);
- end;
- end;
- end;
- except
- MessageBox(0, PChar('Проверьте заполнение всех ячеек!'), 'Ошибка!',MB_ICONERROR+MB_OK+MB_TOPMOST);
- end;
- end;
- procedure TForm1.cbShowSelect(Sender: TObject);
- begin
- if (Sender as TComboBox).ItemIndex = 2 then
- begin
- lGroup.Enabled:=False;
- eGroup.Enabled:=False;
- eAmount.Enabled:=False;
- lAmount.Enabled:=False;
- bAdd.Enabled:=False;
- bChange.Enabled:=False;
- eName.SetFocus;
- end
- else
- begin
- lGroup.Enabled:=True;
- eGroup.Enabled:=True;
- eAmount.Enabled:=True;
- lAmount.Enabled:=True;
- bAdd.Enabled:=True;
- bChange.Enabled:=True;
- end;
- end;
- procedure TForm1.FormShow(Sender: TObject);
- var
- i:integer;
- begin
- AssignFile(F, 'warehouse.dat');
- if not (FileExists('warehouse.dat')) then
- rewrite(F)
- else
- reset(F);
- lvTable.Items.Clear;
- lvTable.Columns.Clear;
- for i := 0 to 5 do
- begin
- lvTable.Columns.Add;
- lvTable.Columns[i].Caption:=Names[i];
- lvTable.Columns[i].width:=116;
- end;
- DrawTable(lvTable, F);
- closefile(F);
- cbShow.ItemIndex:=0;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement