if DEP[Cur].Comps[i].MMB.Firma>DEP[Cur].Comps[j].MMB.Firma then begin
D:=DEP[Cur].Comps[i];
DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];
DEP[Cur].Comps[j]:=D;
end;
ShowDepartament(Cur);
end;
procedure TForm1.SortByMP; //Сортування за виробником процесора
var i,j,C,Cur:Byte;
D:Computer;
begin
Cur:=ComboBox1.ItemIndex+1;
if ((Cur<1)or(Cur>Count)) then Exit;
C:=DEP[Cur].CompsCount;
for i:=1 to C-1 do
for j:=i+1 to C do
if DEP[Cur].Comps[i].MP.Firma>DEP[Cur].Comps[j].MP.Firma then begin
D:=DEP[Cur].Comps[i];
DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];
DEP[Cur].Comps[j]:=D;
end;
ShowDepartament(Cur);
end;
procedure TForm1.SortByMR; //Сортування за виробником ОП
var i,j,C,Cur:Byte;
D:Computer;
begin
Cur:=ComboBox1.ItemIndex+1;
if ((Cur<1)or(Cur>Count)) then Exit;
C:=DEP[Cur].CompsCount;
for i:=1 to C-1 do
for j:=i+1 to C do
if DEP[Cur].Comps[i].MR.Firma>DEP[Cur].Comps[j].MR.Firma then begin
D:=DEP[Cur].Comps[i];
DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];
DEP[Cur].Comps[j]:=D;
end;
ShowDepartament(Cur);
end;
procedure TForm1.SortByMVC; //Сортування за виробником відеокарти
var i,j,C,Cur:Byte;
D:Computer;
begin
Cur:=ComboBox1.ItemIndex+1;
if ((Cur<1)or(Cur>Count)) then Exit;
C:=DEP[Cur].CompsCount;
for i:=1 to C-1 do
for j:=i+1 to C do
if DEP[Cur].Comps[i].MVC.Firma>DEP[Cur].Comps[j].MVC.Firma then begin
D:=DEP[Cur].Comps[i];
DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];
DEP[Cur].Comps[j]:=D;
end;
ShowDepartament(Cur);
end;
procedure TForm1.SortByMM; //Сортування за виробником монітору
var i,j,C,Cur:Byte;
D:Computer;
begin
Cur:=ComboBox1.ItemIndex+1;
if ((Cur<1)or(Cur>Count)) then Exit;
C:=DEP[Cur].CompsCount;
for i:=1 to C-1 do
for j:=i+1 to C do
if DEP[Cur].Comps[i].MM.Firma>DEP[Cur].Comps[j].MM.Firma then begin
D:=DEP[Cur].Comps[i];
DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];
DEP[Cur].Comps[j]:=D;
end;
ShowDepartament(Cur);
end;
procedure TForm1.SortByMH; //Сортування за виробником вінчестера
var i,j,C,Cur:Byte;
D:Computer;
begin
Cur:=ComboBox1.ItemIndex+1;
if ((Cur<1)or(Cur>Count)) then Exit;
C:=DEP[Cur].CompsCount;
for i:=1 to C-1 do
for j:=i+1 to C do
if DEP[Cur].Comps[i].MH.Firma>DEP[Cur].Comps[j].MH.Firma then begin
D:=DEP[Cur].Comps[i];
DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];
DEP[Cur].Comps[j]:=D;
end;
ShowDepartament(Cur);
end;
procedure TForm1.SortByFreqProc; //Сортування за частотою процесора
var i,j,C,Cur:Byte;
D:Computer;
begin
Cur:=ComboBox1.ItemIndex+1;
if ((Cur<1)or(Cur>Count)) then Exit;
C:=DEP[Cur].CompsCount;
for i:=1 to C-1 do
for j:=i+1 to C do
if DEP[Cur].Comps[i].MP.Frequency>DEP[Cur].Comps[j].MP.Frequency then begin
D:=DEP[Cur].Comps[i];
DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];
DEP[Cur].Comps[j]:=D;
end;
ShowDepartament(Cur);
end;
procedure TForm1.SortByRAMCap; //Сортування за об’ємом ОП
var i,j,C,Cur:Byte;
D:Computer;
begin
Cur:=ComboBox1.ItemIndex+1;
if ((Cur<1)or(Cur>Count)) then Exit;
C:=DEP[Cur].CompsCount;
for i:=1 to C-1 do
for j:=i+1 to C do
if DEP[Cur].Comps[i].MR.Capacity>DEP[Cur].Comps[j].MR.Capacity then begin
D:=DEP[Cur].Comps[i];
DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];
DEP[Cur].Comps[j]:=D;
end;
ShowDepartament(Cur);
end;
procedure TForm1.SortByHDDCap; //Сортування за об’ємом вінчестера
var i,j,C,Cur:Byte;
D:Computer;
begin
Cur:=ComboBox1.ItemIndex+1;
if ((Cur<1)or(Cur>Count)) then Exit;
C:=DEP[Cur].CompsCount;
for i:=1 to C-1 do
for j:=i+1 to C do
if DEP[Cur].Comps[i].MH.Capacity>DEP[Cur].Comps[j].MH.Capacity then begin
D:=DEP[Cur].Comps[i];
DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];
DEP[Cur].Comps[j]:=D;
end;
ShowDepartament(Cur);
end;
procedure TForm1.SortByDiagonal; //Сортування за розміром діагоналі монітору
var i,j,C,Cur:Byte;
D:Computer;
begin
Cur:=ComboBox1.ItemIndex+1;
if ((Cur<1)or(Cur>Count)) then Exit;
C:=DEP[Cur].CompsCount;
for i:=1 to C-1 do
for j:=i+1 to C do
if DEP[Cur].Comps[i].MM.Diagonal>DEP[Cur].Comps[j].MM.Diagonal then begin
D:=DEP[Cur].Comps[i];
DEP[Cur].Comps[i]:=DEP[Cur].Comps[j];
DEP[Cur].Comps[j]:=D;
end;
ShowDepartament(Cur);
end;
procedure TForm1.ComboBox3Change(Sender: TObject);
begin
//Сортування комп’ютерів за вибраним критерієм
case ComboBox3.ItemIndex of
0 : SortByNumber;
1 : SortByUserName;
2 : SortByMMB;
3 : SortByMP;
4 : SortByMR;
5 : SortByMVC;
6 : SortByMM;
7 : SortByMH;
8 : SortByFreqProc;
9 : SortByRAMCap;
10 : SortByHDDCap;
11 : SortByDiagonal;
end;
end;
procedure TForm1.Button7Click(Sender: TObject);
var i,L,Cur:Byte;
D:Computer;
begin
//Інвертувати список комп’ютерів в вибраному відділі
if Count<=1 then Exit;
Cur:=ComboBox1.ItemIndex+1;
if ((Cur<1)or(Cur>Count)) then Exit;
L:=Trunc(DEP[Cur].CompsCount/2);
for i:=1 to L do begin
D:=DEP[Cur].Comps[i];
DEP[Cur].Comps[i]:=DEP[Cur].Comps[DEP[Cur].CompsCount-i+1];
DEP[Cur].Comps[DEP[Cur].CompsCount-i+1]:=D;
end;
ShowDepartament(Cur);
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
if Count>0 then
Form3.Show; //Показати вікно перенесення комп’ютерів
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
Form4.Show;
end;
procedure TForm1.Button10Click(Sender: TObject);
begin
if ((ComboBox1.ItemIndex>=0)and(ComboBox1.Items.Count>0)) then
Form5.Show;
end;
procedure TForm1.N12Click(Sender: TObject);
begin
Button1.Click;
end;
procedure TForm1.N11Click(Sender: TObject);
begin
Button2.Click;
end;
procedure TForm1.N10Click(Sender: TObject);
begin
Button10.Click;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
Button6.Click;
end;
procedure TForm1.N18Click(Sender: TObject);
begin
Button3.Click;
end;
procedure TForm1.N17Click(Sender: TObject);
begin
Button4.Click;
end;
procedure TForm1.N16Click(Sender: TObject);
begin
Button5.Click;
end;
procedure TForm1.N15Click(Sender: TObject);
begin
Button8.Click;
end;
procedure TForm1.N21Click(Sender: TObject);
begin
Button7.Click;
end;
procedure TForm1.N20Click(Sender: TObject);
begin
Button9.Click;
end;
procedure TForm1.N14Click(Sender: TObject);
begin
ComboBox3.SetFocus;
ComboBox3.DroppedDown := True
end;
procedure TForm1.N9Click(Sender: TObject);
begin
ComboBox1.SetFocus;
ComboBox1.DroppedDown := True
end;
procedure TForm1.N8Click(Sender: TObject);
begin
ComboBox2.SetFocus;
ComboBox2.DroppedDown := True
end;
procedure TForm1.N4Click(Sender: TObject);
begin
if Editing then
if MessageDlg('Зберегти зміни?',mtConfirmation,[mbNo,mbYes],0)=mrYes then
Save;
Halt;
end;
procedure TForm1.N22Click(Sender: TObject);
begin
Button3.Click;
end;
procedure TForm1.N23Click(Sender: TObject);
begin
Button4.Click;
end;
procedure TForm1.N25Click(Sender: TObject);
begin
Button5.Click;
end;
procedure TForm1.N24Click(Sender: TObject);
begin
Button8.Click;
end;
procedure TForm1.N27Click(Sender: TObject);
begin
Button9.Click;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
Form6.ShowModal;
end;
procedure TForm1.N19Click(Sender: TObject);
begin
Form7.ShowModal;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
GB1: TGroupBox;
CB1: TCheckBox;
Edit1: TEdit;
Label1: TLabel;
Edit2: TEdit;
Label2: TLabel;
GB2: TGroupBox;
Label3: TLabel;
Label4: TLabel;
Edit3: TEdit;
Edit4: TEdit;
CB2: TCheckBox;
Label5: TLabel;
Edit5: TEdit;
GB3: TGroupBox;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
CB3: TCheckBox;
Label9: TLabel;
Edit9: TEdit;
GB4: TGroupBox;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
CB4: TCheckBox;
GB5: TGroupBox;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Edit13: TEdit;
Edit14: TEdit;
Edit15: TEdit;
CB5: TCheckBox;
Label16: TLabel;
Edit16: TEdit;
GB6: TGroupBox;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Edit17: TEdit;
Edit18: TEdit;
Edit19: TEdit;
Edit20: TEdit;
CB6: TCheckBox;
Button1: TButton;
Button2: TButton;
Edit21: TEdit;
Label21: TLabel;
Edit22: TEdit;
Label22: TLabel;
procedure ClearEdit;
procedure RecToEdit;
procedure CB1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure CB2Click(Sender: TObject);
procedure CB3Click(Sender: TObject);
procedure CB4Click(Sender: TObject);
procedure CB5Click(Sender: TObject);
procedure CB6Click(Sender: TObject);
function Verification:Boolean;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit5KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1, Unit4;
{$R *.dfm}
function STI(S:String):Integer;
var E:Integer;
begin
//Ця функція альтернативна StrToInt, тільки при помилці результат = 0
Val(S,Result,E);
if E<>0 then Result:=0;
end;
procedure TForm2.ClearEdit; //Очищення всіх полів
begin
CB1.Checked:=True; CB2.Checked:=True;
CB3.Checked:=True; CB4.Checked:=True;
CB5.Checked:=True; CB6.Checked:=True;
Edit1.Clear; Edit2.Clear; Edit3.Clear;
Edit4.Clear; Edit5.Clear; Edit6.Clear;
Edit7.Clear; Edit8.Clear; Edit9.Clear;
Edit10.Clear; Edit11.Clear; Edit12.Clear;
Edit13.Clear; Edit14.Clear; Edit15.Clear;
Edit16.Clear; Edit17.Clear; Edit18.Clear;
Edit19.Clear; Edit20.Clear; Edit21.Clear;
Edit22.Clear;
end;
procedure TForm2.RecToEdit; //Показ інф з запису в полях редагування
var CurD:Byte;
begin
CurD:=Form1.ComboBox1.ItemIndex+1;
if CurD<1 then Exit;
Edit1.Text:=DEP[CurD].Comps[SR].MMB.Firma;
Edit2.Text:=DEP[CurD].Comps[SR].MMB.Frequency;
Edit3.Text:=DEP[CurD].Comps[SR].MP.Firma;
Edit4.Text:=DEP[CurD].Comps[SR].MP.Frequency;
Edit5.Text:=IntToStr(DEP[CurD].Comps[SR].MP.KernelCount);
Edit6.Text:=DEP[CurD].Comps[SR].MR.Firma;
Edit7.Text:=DEP[CurD].Comps[SR].MR.TypeRam;
Edit8.Text:=IntToStr(DEP[CurD].Comps[SR].MR.Capacity);
Edit9.Text:=DEP[CurD].Comps[SR].MR.Frequency;
Edit10.Text:=DEP[CurD].Comps[SR].MVC.Firma;
Edit11.Text:=IntToStr(DEP[CurD].Comps[SR].MVC.Speed);
Edit12.Text:=IntToStr(DEP[CurD].Comps[SR].MVC.Capacity);
Edit13.Text:=DEP[CurD].Comps[SR].MM.Firma;
Edit14.Text:=IntToStr(DEP[CurD].Comps[SR].MM.Width);
Edit15.Text:=IntToStr(DEP[CurD].Comps[SR].MM.Height);
Edit16.Text:=IntToStr(DEP[CurD].Comps[SR].MM.Diagonal);
Edit17.Text:=DEP[CurD].Comps[SR].MH.Firma;
Edit18.Text:=DEP[CurD].Comps[SR].MH.TypeHDD;
Edit19.Text:=IntToStr(DEP[CurD].Comps[SR].MH.Capacity);
Edit20.Text:=DEP[CurD].Comps[SR].MH.Cache;
Edit21.Text:=IntToStr(DEP[CurD].Comps[SR].Number);
Edit22.Text:=DEP[CurD].Comps[SR].USER;
end;
procedure TForm2.CB1Click(Sender: TObject);
begin
GB1.Enabled:=CB1.Checked;
end;
procedure TForm2.FormShow(Sender: TObject);
begin
Form1.Enabled:=False;
if OP then
Form4.Enabled:=False;
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if not OP then
Form1.Enabled:=True
else
Form4.Enabled:=True;
end;
procedure TForm2.CB2Click(Sender: TObject);
begin
GB2.Enabled:=CB2.Checked;
end;
procedure TForm2.CB3Click(Sender: TObject);
begin
GB3.Enabled:=CB3.Checked;
end;
procedure TForm2.CB4Click(Sender: TObject);
begin
GB4.Enabled:=CB4.Checked;
end;
procedure TForm2.CB5Click(Sender: TObject);
begin
GB5.Enabled:=CB5.Checked;
end;
procedure TForm2.CB6Click(Sender: TObject);
begin
GB6.Enabled:=CB6.Checked;
end;
function TForm2.Verification:Boolean;
var Cur,C,i,j:Byte;
begin
Result:=True;
if Edit21.Text='' then begin //Якщо не введено номер комп’ютера
ShowMessage('Введіть номер комп’ютера'); Result:=False; Exit;
end;
Cur:=Form1.ComboBox1.ItemIndex+1;
if ADD then
C:=DEP[Cur].CompsCount+1
else C:=SR;
for j:=1 to Count do //Перевірка номера на наявність
for i:=1 to DEP[j].CompsCount do begin
if ((i=C)and(j=Cur)) then Break;
if StrToInt(Edit21.Text)=DEP[j].Comps[i].Number then begin
ShowMessage('Комп’ютер з таким номером вже є!'); Result:=False; Exit;
end;
end;
if Edit22.Text='' then begin //Якщо не введено номер комп’ютера
ShowMessage('Введіть ПІБ працівника'); Result:=False; Exit;
end;
if CB1.Checked then
if ((Edit1.Text='')or(Edit2.Text='')) then begin //Якщо не введено всіх даних про материнську плату
ShowMessage('Заповніть всі поля материнської плати'); Result:=False; Exit;
end;
if CB2.Checked then
if ((Edit3.Text='')or(Edit4.Text='')or
(Edit5.Text='')) then begin //Якщо не введено всіх даних про процесор
ShowMessage('Заповніть всі поля процесора'); Result:=False; Exit;
end;
if CB3.Checked then
if ((Edit6.Text='')or(Edit7.Text='')or
(Edit8.Text='')or(Edit9.Text='')) then begin //Якщо не введено всіх даних про ОП
ShowMessage('Заповніть всі поля оперативної пам’яті'); Result:=False; Exit;
end;
if CB4.Checked then
if ((Edit10.Text='')or(Edit11.Text='')or
(Edit12.Text='')) then begin //Якщо не введено всіх даних про відеокарту
ShowMessage('Заповніть всі поля відеокарти'); Result:=False; Exit;
end;
if CB5.Checked then
if ((Edit13.Text='')or(Edit14.Text='')or
(Edit15.Text='')or(Edit16.Text='')) then begin //Якщо не введено всіх даних про монітор
ShowMessage('Заповніть всі поля монітора'); Result:=False; Exit;
end;
if CB6.Checked then
if ((Edit17.Text='')or(Edit18.Text='')or
(Edit19.Text='')or(Edit20.Text='')) then begin //Якщо не введено всіх даних про HDD