ShowMessage('Заповніть всі поля жорсткого диска'); Result:=False; Exit;
end;
end;
procedure TForm2.Button1Click(Sender: TObject); //Додати, або змінити інф про комп
var Cur,C:Byte;
begin
if not Verification then Exit;
Cur:=Form1.ComboBox1.ItemIndex+1;
if ADD then begin //Якщо додати комп’ютер тоді збільшуємо кількість комп’ютерів
INC(DEP[Cur].CompsCount);
C:=DEP[Cur].CompsCount;
end else C:=SR;
//Перенесення даних в запис
DEP[Cur].Comps[C].Number:=StrToInt(Edit21.Text);
DEP[Cur].Comps[C].USER:=Edit22.Text;
if CB4.Checked then begin
DEP[Cur].Comps[C].MVC.Firma:=Edit10.Text;
DEP[Cur].Comps[C].MVC.Speed:=STI(Edit11.Text);
DEP[Cur].Comps[C].MVC.Capacity:=STI(Edit12.Text);
end;
if CB5.Checked then begin
DEP[Cur].Comps[C].MM.Firma:=Edit13.Text;
DEP[Cur].Comps[C].MM.Width:=STI(Edit14.Text);
DEP[Cur].Comps[C].MM.Height:=STI(Edit15.Text);
DEP[Cur].Comps[C].MM.Diagonal:=STI(Edit16.Text);
end;
if CB2.Checked then begin
DEP[Cur].Comps[C].MP.Firma:=Edit3.Text;
DEP[Cur].Comps[C].MP.Frequency:=Edit4.Text;
DEP[Cur].Comps[C].MP.KernelCount:=STI(Edit5.Text);
end;
if CB1.Checked then begin
DEP[Cur].Comps[C].MMB.Firma:=Edit1.Text;
DEP[Cur].Comps[C].MMB.Frequency:=Edit2.Text;
end;
if CB3.Checked then begin
DEP[Cur].Comps[C].MR.Firma:=Edit6.Text;
DEP[Cur].Comps[C].MR.TypeRam:=Edit7.Text;
DEP[Cur].Comps[C].MR.Capacity:=STI(Edit8.Text);
DEP[Cur].Comps[C].MR.Frequency:=Edit9.Text;
end;
if CB6.Checked then begin
DEP[Cur].Comps[C].MH.Firma:=Edit17.Text;
DEP[Cur].Comps[C].MH.TypeHDD:=Edit18.Text;
DEP[Cur].Comps[C].MH.Capacity:=STI(Edit19.Text);
DEP[Cur].Comps[C].MH.Cache:=Edit20.Text;
end;
Form1.ShowDepartament(Cur);
Editing:=True;
Close;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Close;
end;
procedure TForm2.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9','.',#8]) then Key:=#0;
end;
procedure TForm2.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9',#8]) then Key:=#0;
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm3 = class(TForm)
ComboBox1: TComboBox;
ComboBox2: TComboBox;
LB1: TListBox;
LB2: TListBox;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ComboBox1Change(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm3.FormShow(Sender: TObject);
begin
Form1.Enabled:=False; //Оновлення списку відділів для переміщення
ComboBox1.Items:=Form1.ComboBox1.Items;
ComboBox2.Items:=Form1.ComboBox1.Items;
ComboBox1.ItemIndex:=0;
ComboBox2.ItemIndex:=0;
ComboBox1.OnChange(ComboBox1);
ComboBox2.OnChange(ComboBox2);
end;
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form1.Enabled:=True;
end;
procedure TForm3.ComboBox1Change(Sender: TObject);
var i,Cur:Byte;
begin
//Показуємо всі комп’ютери з вибраного відділу
LB1.Clear;
Cur:=ComboBox1.ItemIndex+1;
for i:=1 to DEP[Cur].CompsCount do
LB1.Items.Add(IntToStr(DEP[Cur].Comps[i].Number));
end;
procedure TForm3.ComboBox2Change(Sender: TObject);
var i,Cur:Byte;
begin
//Показуємо всі комп’ютери з вибраного відділу
LB2.Clear;
Cur:=ComboBox2.ItemIndex+1;
for i:=1 to DEP[Cur].CompsCount do
LB2.Items.Add(IntToStr(DEP[Cur].Comps[i].Number));
end;
procedure TForm3.Button1Click(Sender: TObject);
begin
//Переміщення одного комп’ютера
if Form1.MoveCompToDep(ComboBox1.ItemIndex+1,LB1.ItemIndex+1,
ComboBox2.ItemIndex+1) then begin
LB2.Items.Add(LB1.Items.Strings[LB1.ItemIndex]);
LB1.Items.Delete(LB1.ItemIndex);
end;
end;
procedure TForm3.Button2Click(Sender: TObject);
begin
//Переміщення всіх комп’ютерів
if Form1.MoveAllCompToDep(ComboBox1.ItemIndex+1,ComboBox2.ItemIndex+1) then begin
LB2.Items.AddStrings(LB1.Items);
LB1.Clear;
end;
end;
procedure TForm3.Button3Click(Sender: TObject);
begin
//Переміщення одного комп’ютера
if Form1.MoveCompToDep(ComboBox2.ItemIndex+1,LB2.ItemIndex+1,
ComboBox1.ItemIndex+1) then begin
LB1.Items.Add(LB2.Items.Strings[LB2.ItemIndex]);
LB2.Items.Delete(LB2.ItemIndex);
end;
end;
procedure TForm3.Button4Click(Sender: TObject);
begin
//Переміщення всіх комп’ютерів
if Form1.MoveAllCompToDep(ComboBox2.ItemIndex+1,ComboBox1.ItemIndex+1) then begin
LB1.Items.AddStrings(LB2.Items);
LB2.Clear;
end;
end;
end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, Unit1;
type
TForm4 = class(TForm)
Label21: TLabel;
Label22: TLabel;
GB1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
CB1: TCheckBox;
GB2: TGroupBox;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
CB2: TCheckBox;
GB3: TGroupBox;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
CB3: TCheckBox;
GB4: TGroupBox;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
CB4: TCheckBox;
GB5: TGroupBox;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Edit13: TEdit;
Edit14: TEdit;
Edit15: TEdit;
Edit16: TEdit;
CB5: TCheckBox;
GB6: TGroupBox;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Edit17: TEdit;
Edit18: TEdit;
Edit19: TEdit;
Edit20: TEdit;
CB6: TCheckBox;
Edit21: TEdit;
Edit22: TEdit;
SG: TStringGrid;
Button1: TButton;
Button2: TButton;
procedure DeleteRow(Row: Longint);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ShowComp(DepIndex,Index,Row:Byte);
function NN(D,C:Byte):Boolean;
function MB(D,C:Byte):Boolean;
function MP(D,C:Byte):Boolean;
function MR(D,C:Byte):Boolean;
function MVC(D,C:Byte):Boolean;
function MM(D,C:Byte):Boolean;
function MH(D,C:Byte):Boolean;
function Find:Boolean;
procedure Button1Click(Sender: TObject);
function GetIndex(Row:Integer):TPoint;
procedure SGSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure SGDblClick(Sender: TObject);
procedure SGKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
OP:Boolean=False; //Якщо вікно відкрите тоді True
implementation
{$R *.dfm}
type
TCSGrid = class(TStringGrid)
private
public
procedure MoveRow(FromIndex, ToIndex: Longint);
end;
procedure TCSGrid.MoveRow(FromIndex, ToIndex: Longint);
begin
RowMoved(FromIndex, ToIndex); { Захищений метод TStringGrid }
end;
procedure TForm4.DeleteRow(Row: Longint); //Процедура видалення рядків
begin
if ((SG.RowCount=2)and(Row>0)) then SG.Rows[1].Clear;
if ((Row>0)and(SG.RowCount>2)) then
with TCSGrid(SG) do
if (RowCount > 0) and (Row < RowCount) then
begin
if (Row < RowCount - 1) then
MoveRow(Row, RowCount - 1);
Rows[RowCount - 1].Clear;
RowCount := RowCount - 1;
end;
end;
procedure TForm4.FormShow(Sender: TObject);
begin
OP:=True;
Form1.Enabled:=False;
Button2.OnClick(Button2);
end;
procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form1.Enabled:=True;
OP:=False;
end;
procedure TForm4.FormCreate(Sender: TObject);
begin
SG.Cells[0,0]:='Відділ';
SG.Cells[1,0]:='№';
SG.Cells[2,0]:='Працівник';
SG.Cells[3,0]:='Відео карта';
SG.Cells[4,0]:='Монітор';
SG.Cells[5,0]:='Процесор';
SG.Cells[6,0]:='Материнська карта';
SG.Cells[7,0]:='Оперативна пам’ять';
SG.Cells[8,0]:='Жорсткий диск';
end;
procedure TForm4.Button2Click(Sender: TObject); //Очищення всіх полів
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;
SG.RowCount:=2;
SG.Rows[1].Clear;
end;
procedure TForm4.ShowComp(DepIndex,Index,Row:Byte); //Показати комп’ютер в таблиці
begin
if ((Row<1)or(Index<1)or(Index>DEP[DepIndex].CompsCount)) then Exit;
if Row>=SG.RowCount then SG.RowCount:=Row+1;
SG.Rows[Row].Clear;
SG.Cells[0,Row]:=DEP[DepIndex].Name;
SG.Cells[1,Row]:=IntToStr(DEP[DepIndex].Comps[Index].Number);
SG.Cells[2,Row]:=DEP[DepIndex].Comps[Index].USER;
SG.Cells[3,Row]:=DEP[DepIndex].Comps[Index].MVC.Firma;
SG.Cells[4,Row]:=DEP[DepIndex].Comps[Index].MM.Firma;
SG.Cells[5,Row]:=DEP[DepIndex].Comps[Index].MP.Firma;
SG.Cells[6,Row]:=DEP[DepIndex].Comps[Index].MMB.Firma;
SG.Cells[7,Row]:=DEP[DepIndex].Comps[Index].MR.Firma;
SG.Cells[8,Row]:=DEP[DepIndex].Comps[Index].MH.Firma;
end;
function CMP(S1,S2:String):Boolean; //Порівняння 2-ох рядків
begin
Result:=((S1='')or(S1=S2));
end;
function TForm4.NN(D,C:Byte):Boolean; //Пошук по номеру і імені працівника
begin
Result:=False;
if ((Edit21.Text='')and(Edit22.Text='')) then Exit;
if CMP(Edit21.Text,IntToStr(DEP[D].Comps[C].Number))and
CMP(Edit22.Text,DEP[D].Comps[C].USER) then Result:=True;
end;
function TForm4.MB(D,C:Byte):Boolean; //Пошук по материнській платі
begin
Result:=False;
if ((Edit1.Text='')and(Edit2.Text='')) then Exit;
if CB1.Checked then
if CMP(Edit1.Text,DEP[D].Comps[C].MMB.Firma)and
CMP(Edit2.Text,DEP[D].Comps[C].MMB.Frequency) then Result:=True;
end;
function TForm4.MP(D,C:Byte):Boolean; //Пошук по процесору
begin
Result:=False;
if ((Edit3.Text='')and(Edit4.Text='')and(Edit5.Text='')) then Exit;
if CB2.Checked then
if CMP(Edit3.Text,DEP[D].Comps[C].MP.Firma)and
CMP(Edit4.Text,DEP[D].Comps[C].MP.Frequency)and
CMP(Edit5.Text,IntToStr(DEP[D].Comps[C].MP.KernelCount)) then Result:=True;
end;
function TForm4.MR(D,C:Byte):Boolean; //Пошук по ОП
begin
Result:=False;
if ((Edit6.Text='')and(Edit7.Text='')and(Edit8.Text='')and(Edit9.Text='')) then Exit;
if CB3.Checked then
if CMP(Edit6.Text,DEP[D].Comps[C].MR.Firma)and
CMP(Edit7.Text,DEP[D].Comps[C].MR.TypeRam)and
CMP(Edit8.Text,IntToStr(DEP[D].Comps[C].MR.Capacity))and
CMP(Edit9.Text,DEP[D].Comps[C].MR.Frequency) then Result:=True;
end;
function TForm4.MVC(D,C:Byte):Boolean; //Пошук по відеокарті
begin
Result:=False;
if ((Edit10.Text='')and(Edit11.Text='')and(Edit12.Text='')) then Exit;
if CB4.Checked then
if CMP(Edit10.Text,DEP[D].Comps[C].MVC.Firma)and
CMP(Edit11.Text,IntToStr(DEP[D].Comps[C].MVC.Speed))and
CMP(Edit12.Text,IntToStr(DEP[D].Comps[C].MVC.Capacity)) then Result:=True;
end;
function TForm4.MM(D,C:Byte):Boolean; //Пошук по монітору
begin
Result:=False;
if ((Edit13.Text='')and(Edit14.Text='')and(Edit15.Text='')and
(Edit16.Text='')) then Exit;
if CB5.Checked then
if CMP(Edit13.Text,DEP[D].Comps[C].MM.Firma)and
CMP(Edit14.Text,IntToStr(DEP[D].Comps[C].MM.Width))and
CMP(Edit15.Text,IntToStr(DEP[D].Comps[C].MM.Height))and
CMP(Edit16.Text,IntToStr(DEP[D].Comps[C].MM.Diagonal)) then Result:=True;
end;
function TForm4.MH(D,C:Byte):Boolean; //Пошук по вінчестеру
begin
Result:=False;
if ((Edit17.Text='')and(Edit18.Text='')and(Edit19.Text='')and
(Edit20.Text='')) then Exit;
if CB5.Checked then
if CMP(Edit17.Text,DEP[D].Comps[C].MH.Firma)and
CMP(Edit18.Text,DEP[D].Comps[C].MH.TypeHDD)and
CMP(Edit19.Text,IntToStr(DEP[D].Comps[C].MH.Capacity))and
CMP(Edit20.Text,DEP[D].Comps[C].MH.Cache) then Result:=True;
end;
function TForm4.Find:Boolean; //Пошук
var X,Y,C:Byte;
begin
Result:=False;
SG.RowCount:=2;
SG.Rows[1].Clear;
C:=0;
for X:=1 to Count do
for Y:=1 to DEP[X].CompsCount do
if NN(X,Y) or MB(X,Y) or MP(X,Y) or MR(X,Y) or
MVC(X,Y) or MM(X,Y) or MH(X,Y) then begin
INC(C);
ShowComp(X,Y,C);
end;
if C>0 then Result:=True;
end;
procedure TForm4.Button1Click(Sender: TObject);
begin
if not Find then ShowMessage('Нічого не знайдено!');
end;
function TForm4.GetIndex(Row:Integer):TPoint;
var X,Y:Byte;
begin
Result.X:=0; //Номер відділу
Result.Y:=0; //Номер комп’ютера
if SG.Cells[1,Row]='' then Exit;
for X:=1 to Count do
for Y:=1 to DEP[X].CompsCount do
if DEP[X].Comps[Y].Number=StrToInt(SG.Cells[1,Row]) then begin
Result.X:=X; Result.Y:=Y; Exit;
end;
end;
procedure TForm4.SGSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
var A:TPoint;
begin
A:=GetIndex(ARow);
if A.X<1 then Exit;
Form1.ComboBox1.ItemIndex:=A.X-1;
Form1.ShowDepartament(A.X);
SR:=A.Y; //Робимо вибраний комп’ютер поточним
end;
procedure TForm4.SGDblClick(Sender: TObject);
begin
Form1.Button5.OnClick(Form1.Button5); //Редагуємо інф про вибраний комп’ютер
end;
procedure TForm4.SGKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var CurD:Byte;
begin
if Key=46 then begin
//Видаляємо вибраний комп’ютер
CurD:=Form1.ComboBox1.ItemIndex+1;
if ((Form1.ComboBox1.Items.Count<1)or(CurD<1)) then Exit;
if ((SR<1)or(SR>DEP[CurD].CompsCount)) then Exit;
if MessageDlg('Видалити комп’ютер',mtConfirmation,[mbOk,mbCancel],0)=mrOk then
if Form1.DelComp(CurD,SR) then
DeleteRow(SR);
end;
end;
end.
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,