рефераты скачать

МЕНЮ


Дипломная работа: Разработка базы данных

end;

F.Free;

end;

end;

procedure TMainForm.ApplicationEvents1Hint(Sender: TObject);

begin

StatusBar1.SimpleText:=Application.Hint;

end;

procedure TMainForm.RadioGroup1Click(Sender: TObject);

begin

DataSetRefrashExecute(Sender);

end;

procedure TMainForm.RadioGroup2Click(Sender: TObject);

begin

DataSetRefrashExecute(Sender);

end;

procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;

const Rect: TRect; DataCol: Integer; Column: TColumn;

State: TGridDrawState);

begin

if (DataModule1.fWriter) and (gdFocused in State) then

if (Column.Field.FieldName = 'Author') or

(Column.Field.FieldName = 'Title') or

(Column.Field.FieldName = 'Language') then

begin

EditField:=Column.Field.FieldNo-1;

Edit1.Text:=Column.Field.AsString;

with Edit1 do

begin

Left := Rect.Left + DBGrid1.Left;

Top := Rect.Top + DBGrid1.Top+PanelGrid.Top+PanelMain.Top;

Width := Rect.Right - Rect.Left + 2;

Visible := True;

end;

end;

end;

procedure TMainForm.DBGrid1ColExit(Sender: TObject);

var

FldName : ShortString;

begin

if DataModule1.fWriter then

begin

FldName:=DBGrid1.SelectedField.FieldName;

if (FldName = 'Author') or

(FldName = 'Title') or

(FldName = 'Language') then

begin

Edit1.Visible := False;

end;

end;

end;

procedure TMainForm.DBGrid1KeyPress(Sender: TObject; var Key: Char);

var

FldName : ShortString;

begin

if DataModule1.fWriter then

begin

FldName:=DBGrid1.SelectedField.FieldName;

if (FldName = 'Author') or

(FldName = 'Title') or

(FldName = 'Language') then

if (Key <> Chr(9)) then

begin

Edit1.SetFocus;

SendMessage(Edit1.Handle, WM_CHAR, Word(Key), 0);

end;

end;

end;

procedure TMainForm.Edit1Exit(Sender: TObject);

const

NamePre='Update';

ParPre ='ip';

Par: array [1..5] of ShortString=('Aut', 'Tit', 'Lan', 'Typ' ,'Ext');

begin

with DataModule1, DataModule1.IBStoredProc1 do

if IBDataSet1.Fields.Fields[EditField].AsString<>Edit1.Text then

begin

StoredProcName:=NamePre+IBDataSet1.FieldList.Strings[EditField];

ParamByName(ParPre+Par[EditField]).Value:=Edit1.Text;

ParamByName('ipNum').Value:=IBDataSet1.Fields.Fields[0].AsInteger;

Prepare;

ExecProc;

DataSetRefrashExecute(Sender);

end;

end;

procedure TMainForm.DataSetInsertExecute(Sender: TObject);

var

N : Integer;

ArcName: ANSIString;

Stream : TMemoryStream;

Res : Boolean;

begin

if not Assigned (EditForm) then

EditForm:= TEditForm.Create (Application);

with EditForm do

begin

Caption:=InsertWinName;

ShowModal;

if ModalResult=mrOK then

begin

case RadioGroupSource.ItemIndex of

0:

begin

if Trim(EditNewArc.Text)<>'' then

ArcName:=GetNewArcName(EditNewArc.Text+ArcExt)

else

begin

ArcName:=ExtractFileLastDir(EditDir.Text);

ArcName:=GetNewArcName(LibDir+ArcName+ArcExt);

end;

Res:=PackFiles(ArcName,EditDir.Text+'\*.*');

end;

1:

begin

if (Trim(EditNewArc.Text)<>'') then

begin

ArcName:=GetNewArcName(EditNewArc.Text+ArcExt);

Res:=(CopyFiles(Application.Handle,EditArc.Text,ArcName)=0);

end

else

begin

ArcName:=EditArc.Text;

Res:=True;

end;

end;

2:

begin

if Trim(EditNewArc.Text)<>'' then

ArcName:=GetNewArcName(EditNewArc.Text+ArcExt)

else

begin

ArcName:=ExtractFileName(EditFile.Text);

DeleteFileExt(ArcName);

ArcName:=GetNewArcName(LibDir+ArcName+ArcExt);

end;

Res:=PackFiles(ArcName,EditFile.Text);

end;

end;

if Res then

begin

Stream:=TMemoryStream.Create;

Memo1.Lines.SaveToStream(Stream);

DataModule1.CallInsertBook(ComboBoxAut.Text,

ComboBoxTit.Text,

ComboBoxLan.Text,

Stream,

ArcName,

ExtractFileName(EditFile.Text),N);

Stream.Free;

MainForm.DataSetRefrashExecute(Sender);

DataModule1.IBDataSet1.Locate('Number',N,[loPartialKey]);

end;

end;

end;

end;

procedure TMainForm.DataSetDeleteExecute(Sender: TObject);

begin

if ConfirmDelete then

begin

if not Assigned (DeleteForm) then

DeleteForm:= TDeleteForm.Create (Application);

with DeleteForm do

begin

Caption:=DeleteWinName;

ShowModal;

end;

if (DeleteForm.ModalResult = mrYes) then

DataModule1.CallDeleteBook;

end

else

DataModule1.CallDeleteBook;

DataSetRefrashExecute(Sender);

end;

procedure TMainForm.DataSetUpdateExecute(Sender: TObject);

var

N : Integer;

ArcName: ANSIString;

Str : ANSIString;

Stream : TStream;

MStream: TMemoryStream;

Res : Boolean;

begin

if not Assigned (EditForm) then

EditForm:= TEditForm.Create (Application);

with EditForm do

begin

Caption:=EditWinName;

with DataModule1.IBDataSet1 do

begin

N:=Fields.Fields[0].AsInteger;

ComboBoxAut.Text:=Fields.Fields[1].AsString;

ComboBoxTit.Text:=Fields.Fields[2].AsString;

ComboBoxLan.Text:=Fields.Fields[3].AsString;

RadioGroupSource.ItemIndex:=1;

EditDir.Text:='';

EditArc.Text:='';

EditFile.Text:=FieldByName('File').AsString;

Stream:=CreateBLOBStream(FieldByName('Sections'),bmRead);

Memo1.Lines.LoadFromStream(Stream);

EditArc.Text:=FieldByName('Archive').AsString;

Stream.Free;

end;

ShowModal;

if ModalResult=mrOK then

begin

ArcName:=Root+TmpDir+TmpFile+'.rar';

case RadioGroupSource.ItemIndex of

0:

begin

if EditDir.Text<>'' then

begin

ArcName:=Concat(Root+TmpDir+TmpFile);

Res:=PackFiles(ArcName,EditDir.Text+'\*.*');

ArcName:=ArcName+'.rar';

end;

end;

1:

begin

if EditArc.Text<>'' then

begin

ArcName:=EditArc.Text;

Res:=True;

end;

end;

2:

begin

Str:=DataModule1.IBDataSet1.FieldByName('File').AsString;

if EditFile.Text<>Str then

begin

ArcName:=Root+TmpDir+TmpFile+'.rar';

Res:=PackFiles(ArcName,EditFile.Text);

end;

end;

end;

if Res then

begin

MStream:=TMemoryStream.Create;

Memo1.Lines.SaveToStream(MStream);

DataModule1.CallUpDateBook(N, ComboBoxAut.Text,

ComboBoxTit.Text,

ComboBoxLan.Text,

MStream,

ArcName,

ExtractFileName(EditFile.Text));

MStream.Free;

end;

if (RadioGroupSource.ItemIndex<>1) then

DeleteFiles(EditForm.Handle,ArcName);

DataSetRefrashExecute(Sender);

DataModule1.IBDataSet1.Locate('Number',N,[loPartialKey]);

end;

end;

end;

procedure TMainForm.DataSetRefrashExecute(Sender: TObject);

var

S: ShortString;

B: TBookmark;

begin

with DataModule1.IBDataSet1 do

begin

B:=GetBookMark;

Close;

SelectSQL.Clear;

SelectSQL.Add('SELECT * FROM "Library" ');

end;

if SortByNum.Checked then S:=SQLSortBy[0]

else if SortByAut.Checked then S:=SQLSortBy[1]

else if SortByTit.Checked then S:=SQLSortBy[2]

else if SortByLan.Checked then S:=SQLSortBy[3]

else if SortByNo.Checked then S:=SQLSortBy[4];

DataModule1.IBDataSet1.SelectSQL.Add(S);

if (not SortByNo.Checked) then

begin

if SortDirInc.Checked then S:=SqlSortDir[0]

else S:=SqlSortDir[1];

DataModule1.IBDataSet1.SelectSQL.Add(S);

end;

with DataModule1.IBDataSet1 do

begin

Open;

GotoBookmark(B);

FreeBookmark(B);

end;

end;

procedure TMainForm.DataSetOpenExecute(Sender: TObject);

var

ArcPath: ANSIString;

FName : ANSIString;

OpenDir: ShortString;

begin

Inc(OpenCounter);

OpenDir:=Root+TmpDir+IntToStr(OpenCounter)+'\';

MkDir(OpenDir);

ArcPath:=DataModule1.IBDataSet1.FieldByName('Archive').AsString;

UnPackFiles(ArcPath,OpenDir);

FName:=DataModule1.IBDataSet1.FieldByName('File').AsString;

FName:=Concat(OpenDir+FName);

OpenFile(FName,OpenDir);

end;

procedure TMainForm.DataSetFindExecute(Sender: TObject);

begin

if not Assigned (FindForm) then

FindForm:= TFindForm.Create (Application);

FindForm.ShowModal;

if (DataModule1.fSearchRec>=0) then

DatasetFindNext.Enabled:=True

else

DatasetFindNext.Enabled:=False;

end;

procedure TMainForm.DataSetFindNextExecute(Sender: TObject);

const

Txt=’Источник не найден';

WinName='Поиск источника';

var

KeyFlds : ShortString;

KeyVals : Variant;

Loc : TLocateOptions;

Res : Boolean;

BM : TBookmark;

begin

BM:=DataModule1.IBDataSet1.GetBookmark;

FindForm.GetLocateParams(KeyFlds,KeyVals,Loc);

Res:=DataModule1.IBDataSet1.LocateNext(KeyFlds,KeyVals,Loc);

with DataModule1 do

fSearchRec:=IBDataSet1.RecNo;

if not Res then

begin

DataModule1.IBDataSet1.GotoBookmark(BM);

DataModule1.fSearchRec:=-1;

DataSetFindNext.Enabled:=False;

Application.MessageBox(Txt,WinName,mb_OK);

end;

DataModule1.IBDataSet1.FreeBookmark(BM);

end;

procedure TMainForm.DataSetFilterExecute(Sender: TObject);

begin

if not Assigned (FilterForm) then

FilterForm:= TFilterForm.Create(Application);

FilterForm.ShowModal;

end;

procedure TMainForm.DataSetAllExecute(Sender: TObject);

begin

DataModule1.IBDataSet1.Filtered:=False;

end;

procedure TMainForm.FileDataBasePathExecute(Sender: TObject);

begin

if not Assigned (PathForm) then

PathForm:= TPathForm.Create(Application);

PathForm.ShowModal;

DataSetRefrashExecute(Sender);

end;

procedure TMainForm.FileUserExecute(Sender: TObject);

var

Path : AnsiString;

User : ShortString;

Pass : ShortString;

begin

if not Assigned (UserForm) then

UserForm:= TUserForm.Create(Application);

with UserForm do

begin

ShowModal;

if ModalResult=mrOK then

begin

Path:=DataModule1.IBDatabase1.DatabaseName;

User:=UserForm.leUser.Text;

Pass:=UserForm.lePass.Text;

if not DataModule1.Connect(Path,User,Pass) then Close;

DataSetRefrashExecute(Sender);

DataModule1.SetAccess;

DataSetInsert.Enabled:=DataModule1.fWriter;

DataSetDelete.Enabled:=DataModule1.fWriter;

DataSetUpdate.Enabled:=DataModule1.fWriter;

end;

end;

end;

procedure TMainForm.OptColorExecute(Sender: TObject);

begin

if ColorDialog1.Execute then

begin

DBGrid1.Color:=ColorDialog1.Color;

DBMemo1.Color:=ColorDialog1.Color;

Edit1.Color:=ColorDialog1.Color;

end;

end;

procedure TMainForm.OptFontExecute(Sender: TObject);

begin

if FontDialog1.Execute then

begin

DBGrid1.Font.Assign(FontDialog1.Font);

DBMemo1.Font.Assign(FontDialog1.Font);

Edit1.Font.Assign(FontDialog1.Font);

end;

end;

procedure TMainForm.OptConfDelExecute(Sender: TObject);

begin

ConfirmDelete:=not ConfirmDelete;

end;

procedure TMainForm.HelpAboutExecute(Sender: TObject);

begin

if not Assigned (AboutBox) then

AboutBox:= TAboutBox.Create (Application);

AboutBox.ShowModal;

end;

end.


Приложение Г

Листинг модуля DBUnit.pas

unit DBUnit;

interface

uses

SysUtils, Classes, DB, IBDatabase, IBCustomDataSet, IBQuery, IBStoredProc;

type

TDataModule1 = class(TDataModule)

DataSource1: TDataSource;

IBDatabase1: TIBDatabase;

IBTransaction1: TIBTransaction;

IBDataSet1: TIBDataSet;

IBStoredProc1: TIBStoredProc;

function Connect(Path:ANSIString;

User, Password: ShortString): Boolean;

function InitDBParams: Boolean;

procedure SetAccess;

procedure CallInsertBook(Aut, Tit, Lan: ShortString;

Sec: TStream;

Arc: ANSIString;

Fil: ShortString;

var Num: Integer);

procedure CallUpdateBook(Num: Integer;

Aut, Tit, Lan: ShortString;

Sec: TStream;

Arc: ANSIString;

Fil: ShortString);

procedure CallDeleteBook;

procedure SetFilter(CaseFlag: Boolean; Aut, Tit, Lan, Sec: ShortString);

function IsFieldContainStr(Field, S: ShortString): Boolean;

procedure IBDataSet1FilterRecord(DataSet: TDataSet; var Accept: Boolean);

procedure IBDataSet1AfterScroll(DataSet: TDataSet);

private

fCase : Boolean;

fFltrAut: ShortString;

fFltrTit: ShortString;

fFltrLan: ShortString;

fFltrSec: ShortString;

public

fSearchRec : Integer;

fSearchKey : ShortString;

fSearchCase: Boolean;

fWriter : Boolean;

fUser : ShortString;

fPass : ShortString;

fServer : ShortString;

fFile : ShortString;

end;

var

DataModule1: TDataModule1;

implementation

uses StrUtils, DBTables, Dialogs, Main, Data;

{$R *.dfm}

{ TDataModule1 }

function TDataModule1.Connect(Path:ANSIString;

User, Password: ShortString): Boolean;

const

ParamNames: array[0..3] of ShortString = (

'lc_ctype=',

'sql_role_name=',

'user_name=',

'password=');

CharSet='WIN1251';

SQLRole='3';

ErrPathUserPass='Неверный путь к базе или пароль пользователя';

ErrFatal='Соединение с базой данных не возможно';

var

OldUser: ShortString;

OldPass: ShortString;

OldPath: AnsiString;

begin

OldPath:='';

OldUser:='';

OldPass:='';

with IBDataBase1 do

begin

IBDataBase1.Connected:=False;

if Params.Count<>0 then

begin

OldUser:=fUser;

OldPass:=fPass;

OldPath:=DataBaseName;

end;

IBDataBase1.Params.Clear;

Params.Add(Concat(ParamNames[0],CharSet));

Params.Add(Concat(ParamNames[1],SQLRole));

Params.Add(Concat(ParamNames[2],User));

Params.Add(Concat(ParamNames[3],Password));

LoginPrompt:=False;

DatabaseName:=Path;

end;

try

IBDataBase1.Connected:=True;

fUser:=User;

fPass:=Password;

except

ShowMessage(ErrPathUserPass);

if (OldPath<>'') and (OldUser<>'') and (OldPass<>'') then

with IBDataBase1 do

begin

DatabaseName:=OldPath;

Params[2]:=OldUser;

Params[3]:=OldPass;

Connected:=False;

try

Connected:=True;

fUser:=User;

fPass:=Password;

except

ShowMessage(ErrFatal);

end;

end;

end;

Result:=IBDataBase1.Connected;

end;

function TDataModule1.InitDBParams: Boolean;

var

Path: ANSIString;

begin

fUser:=ParamStr(1);

fPass:=ParamStr(2);

fServer:=Paramstr(3);

fFile:=Paramstr(4);

if (fUser='') then fUser:=DBDefaultUser;

if (fPass='') then fPass:=DBDefaultPass;

if (fServer='') then fServer:=DBDefaultServer;

if (fFile='') then fFile:=DBDefaultFile;

Path:=Concat(fServer,':',fFile);

Result:=DataModule1.Connect(Path,fUser,fPass);

end;

procedure TDataModule1.SetAccess;

begin

with IBStoredProc1 do

begin

StoredProcName:='IsWriter';

Prepare;

try

ExecProc;

fWriter:=True;

except

fWriter:=False;

end;

end;

end;

procedure TDataModule1.CallInsertBook(Aut, Tit, Lan: ShortString;

Sec: TStream;

Arc: ANSIString;

Fil: ShortString;

var Num: Integer);

begin

with IBStoredProc1 do

begin

StoredProcName:='InsertBook';

ParamByName('ipAut').Value:=Aut;

ParamByName('ipTit').Value:=Tit;

ParamByName('ipLan').Value:=Lan;

ParamByName('ipSec').LoadFromStream(Sec,ftMemo);

ParamByName('ipArc').Value:=Arc;

ParamByName('ipFil').Value:=Fil;

Prepare;

ExecProc;

Num:=ParamByName('opNum').Value;

end;

end;

procedure TDataModule1.CallUpdateBook(Num: Integer;

Aut, Tit, Lan: ShortString;

Sec: TStream;

Arc: ANSIString;

Fil: ShortString);

begin

with IBStoredProc1 do

begin

StoredProcName:='UpdateBook';

ParamByName('ipNum').Value:=Num;

ParamByName('ipAut').Value:=Aut;

ParamByName('ipTit').Value:=Tit;

ParamByName('ipLan').Value:=Lan;

ParamByName('ipSec').LoadFromStream(Sec,ftMemo);

ParamByName('ipArc').Value:=Arc;

ParamByName('ipFil').Value:=Fil;

Prepare;

ExecProc;

end;

end;

procedure TDataModule1.CallDeleteBook;

begin

if (IBDataSet1.RecNo<>0) then

with IBStoredProc1 do

begin

StoredProcName:='DeleteBook';

ParamByName('Num').Value:=IBDataSet1.Fields.Fields[0].Value;

Prepare;

ExecProc;

end;

end;

procedure TDataModule1.SetFilter(CaseFlag: Boolean;

Aut, Tit, Lan,Sec: ShortString);

begin

fCase:=CaseFlag;

fFltrAut:=Aut;

fFltrTit:=Tit;

fFltrLan:=Lan;

fFltrSec:=Sec;

IBDataSet1.Filtered:=False;

IBDataSet1.Filtered:=True;

end;

function TDataModule1.IsFieldContainStr(Field, S: ShortString): Boolean;

begin

if Trim(S)<>'' then

if fCase then

Result:=ANSIContainsStr(Field,S)

else

Result:=ANSIContainsText(Field,S)

else

Result:=True;

end;

procedure TDataModule1.IBDataSet1FilterRecord(DataSet: TDataSet;

var Accept: Boolean);

var

Aut: Boolean;

Tit: Boolean;

Lan: Boolean;

Sec: Boolean;

begin

Aut:=IsFieldContainStr(DataSet['Author'],fFltrAut);

Tit:=IsFieldContainStr(DataSet['Title'],fFltrTit);

Lan:=IsFieldContainStr(DataSet['Language'],fFltrLan);

Sec:=IsFieldContainStr(DataSet['Sections'],fFltrSec);

Accept:=Aut and Tit and Lan and Sec;

end;

procedure TDataModule1.IBDataSet1AfterScroll(DataSet: TDataSet);

var

Stream: TStream;

begin

if not IBDataSet1.FieldByName('Sections').IsNull then

begin

Stream:=IBDataSet1.CreateBlobStream(IBDataSet1.FieldByName('Sections'),bmRead);

Stream.Free;

end;

end;

end.


Приложение Д

Листинг модуля Edit.pas

unit Edit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, Buttons, CheckLst, Mask, Menus, ActnList;

type

TEditForm = class(TForm)

Panel1: TPanel;

BCancel: TBitBtn;

BOK: TBitBtn;

Panel2: TPanel;

RadioGroupSource: TRadioGroup;

OpenDialogArc: TOpenDialog;

GroupBoxData: TGroupBox;

LabelTit: TLabel;

LabelLan: TLabel;

LabelTyp: TLabel;

LabelAut: TLabel;

ComboBoxAut: TComboBox;

ComboBoxTit: TComboBox;

ComboBoxLan: TComboBox;

GroupBoxSections: TGroupBox;

GroupBoxPath: TGroupBox;

LabelDir: TLabel;

EditDir: TEdit;

BBrowseDir: TBitBtn;

LabelArc: TLabel;

EditArc: TEdit;

BBrowseArc: TBitBtn;

LabelFile: TLabel;

EditFile: TEdit;

BBrowseFile: TBitBtn;

EditNewArc: TEdit;

LabelNewArc: TLabel;

Memo1: TMemo;

procedure FormActivate(Sender: TObject);

procedure SetComboBox(FieldNum: Integer; CBox: TComboBox);

procedure BBrowseArcClick(Sender: TObject);

procedure BBrowseFileClick(Sender: TObject);

procedure RadioGroupSourceClick(Sender: TObject);

procedure BBrowseDirClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

EditForm: TEditForm;

implementation

uses DB, DirSource, DBUnit, Files, Data;

{$R *.dfm}

procedure TEditForm.FormActivate(Sender: TObject);

begin

SetComboBox(1,ComboBoxAut);

SetComboBox(2,ComboBoxTit);

SetComboBox(3,ComboBoxLan);

RadioGroupSourceClick(Sender);

end;

procedure TEditForm.SetComboBox(FieldNum: Integer; CBox: TComboBox);

var

B : TBookmark;

S : ShortString;

Present: Boolean;

I : Integer;

begin

CBox.Items.Clear;

with DataModule1.IBDataSet1 do

begin

B:=GetBookmark;

First;

DisableControls;

while not EOF do

begin

S:=Fields.Fields[FieldNum].AsString;

if S<>'' then

begin

Present:=False;

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12


Copyright © 2012 г.
При использовании материалов - ссылка на сайт обязательна.