Смекни!
smekni.com

Облік компютерів та комплектуючих на підприємстві (стр. 6 из 7)

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,