Курсовые работы / ПРИС П _2
.pdfbegin checkEdit:=false;
if DBEdit1.Text<>'' then DM.CheckQuery1.SQL.Text:=SQL+' WHERE Now_Doxod.ND_ID='+DBEdit1.Text+';';
DM.CheckQuery1.Open;
if DBEdit4.Text<>'' then begin
Label8.Visible:=StrToBool(DBEdit4.Text); DBLookupComboBox1.Enabled:= not StrToBool(DBEdit4.Text); DBLookupComboBox2.Enabled:= not StrToBool(DBEdit4.Text); DBEdit2.Enabled:= not StrToBool(DBEdit4.Text); DateTimePicker2.Enabled:=not StrToBool(DBEdit4.Text); checkEdit:=StrToBool(DBEdit4.Text);
end;
end;
procedure TNDoxod.isEdit; begin
if DBEdit1.Text<>'' then begin
DM.CheckQuery1.SQL.Text:='UPDATE Now_Doxod SET Now_Doxod.EDIT = True WHERE Now_Doxod.ND_ID='+DBEdit1.Text+';';
DM.CheckQuery1.ExecSQL;
DM.CheckQuery1.SQL.Text:=SQL+' WHERE ND_ID='+DBEdit1.Text+';'; DM.CheckQuery1.Open;
end;
end;
procedure TNDoxod.noEdit; begin
if DBEdit1.Text<>'' then begin
DM.CheckQuery1.SQL.Text:='UPDATE Now_Doxod SET Now_Doxod.EDIT = False WHERE Now_Doxod.ND_ID='+DBEdit1.Text+';';
DM.CheckQuery1.ExecSQL;
DM.CheckQuery1.SQL.Text:=SQL+' WHERE ND_ID='+DBEdit1.Text+';'; DM.CheckQuery1.Open;
end;
end;
procedure TNDoxod.DBGrid1TitleClick(Column: TColumn); var
i:integer;
clr:TColor; begin
s:=' ASC';
clr:= clMoneyGreen;
if RadioButton2.Checked then begin
s:=' DESC'; clr:= clSkyBlue; end;
for i:=0 to DBGrid1.Columns.Count-1 do DBGrid1.Columns.Items[i].Title.Color:= clBtnFace; DBGrid1.Columns.Items[Column.Index].Title.Color:=clr; DM.DoxNQuery4.Sort:= DBGrid1.Columns.Items[Column.Index].FieldName+s;
end;
procedure TNDoxod.Edit1Change(Sender: TObject); begin
if ComboBox1.ItemIndex=-1 then ComboBox1.ItemIndex:=0; S:=DBGrid1.Columns.Items[ComboBox1.ItemIndex].FieldName; DM.DoxNQuery4.SQL.Clear;
DM.DoxNQuery4.SQL.Add(SQL+
' WHERE '+s+' LIKE "'+Edit1.text+'%"'); Refresh;
end;
procedure TNDoxod.FormCreate(Sender: TObject); var i:integer;
begin DM.ADOConnection1.Connected:=true; DM.DoxNQuery4.SQL.Clear; DM.DoxNQuery4.SQL.Add(SQL+';'); DM.DoxNQuery4.Open;
for i:=0 to DBGrid1.Columns.Count-1 do ComboBox1.Items.Add(DBGrid1.Columns.Items[i].Title.Caption);
end;
51
procedure TNDoxod.DateTimePicker2Change(Sender: TObject); begin
DBEdit3.Text:=DateToStr(DateTimePicker2.Date);
end;
procedure TNDoxod.DBEdit3Change(Sender: TObject); begin
if DBEdit3.Text<>''then DateTimePicker2.Date:=StrToDate(DBEdit3.Text); end;
procedure TNDoxod.BitBtn2Click(Sender: TObject); begin
Refresh;
end;
procedure TNDoxod.DBNavigator1BeforeAction(Sender: TObject; Button: TNavigateBtn);
var n:integer; begin ins:=false;
if Button=nbInsert then begin
ins:=true;
if DBLookupComboBox1.Enabled then DBLookupComboBox1.SetFocus; end;
if (Button=nbRefresh) then begin
n:=DM.DoxNQuery4.FieldValues['ND_ID']; Refresh; DM.DoxNQuery4.Locate('ND_ID',n,[]); CheckEdit;
end;
end;
procedure TNDoxod.DBEdit1Change(Sender: TObject); begin
if (DBEdit1.Text<>'') and (not ins) then checkEdit; end;
procedure TNDoxod.DBLookupComboBox1Enter(Sender: TObject); begin
Timer1.Enabled:=false;
if (DBEdit1.Text<>'') and (not ins) then if not checkEdit then isEdit;
end;
procedure TNDoxod.DBLookupComboBox1Exit(Sender: TObject); begin
Timer1.Enabled:=True;
noEdit;
end;
procedure TNDoxod.Timer1Timer(Sender: TObject); begin
if DBNavigator1.Controls[6].Enabled then begin
DBNavigator1.BtnClick(nbRefresh);
end;
end;
procedure TNDoxod.FormClose(Sender: TObject; var Action: TCloseAction); begin
noEdit;
Timer1.Enabled:=false;
end;
procedure TNDoxod.DBLookupComboBox2Enter(Sender: TObject); begin
Timer1.Enabled:=false;
if (DBEdit1.Text<>'') and (not ins) then if not checkEdit then isEdit;
end;
procedure TNDoxod.DBLookupComboBox2Exit(Sender: TObject); begin
Timer1.Enabled:=True;
noEdit;
end;
52
procedure TNDoxod.DBEdit2Enter(Sender: TObject); begin
Timer1.Enabled:=false;
if (DBEdit1.Text<>'') and (not ins) then if not checkEdit then isEdit;
end;
procedure TNDoxod.DBEdit2Exit(Sender: TObject); begin
Timer1.Enabled:=True;
noEdit;
end;
procedure TNDoxod.DateTimePicker2Enter(Sender: TObject); begin
Timer1.Enabled:=false;
if (DBEdit1.Text<>'') and (not ins) then if not checkEdit then isEdit;
end;
procedure TNDoxod.DateTimePicker2Exit(Sender: TObject); begin
Timer1.Enabled:=True;
noEdit;
end;
procedure TNDoxod.BitBtn1Click(Sender: TObject); begin
Refresh;
if DM.DoxNQuery4.FieldValues['EDIT']=false then begin
if MessageDlg('Удалитьзапись?',mtWarning,[mbYes,mbNo],0)=mrYes then//если "да" begin
Refresh;
DM.DoxNQuery5.Close;
DM.DoxNQuery5.SQL.Clear;
DM.DoxNQuery5.SQL.Add('DELETE Now_Doxod.ND_ID, *FROM Now_Doxod WHERE Now_Doxod.ND_ID='+DBEdit1.Text+';');
DM.DoxNQuery5.ExecSQL;
end; end else
MessageDlg('Запись редактируется другим пользователем',mtError,[mbOK],0); end;
end.
Программный код модуля «Текущие расходы»:
unit Now_rasxod;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, ComCtrls, DBCtrls, StdCtrls, Buttons, Grids, DBGrids, Mask;
type
TNRasxod = class(TForm) Panel1: TPanel; GroupBox1: TGroupBox; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; DBEdit1: TDBEdit; DBEdit2: TDBEdit; DBEdit3: TDBEdit; DBGrid1: TDBGrid;
RadioGroup1: TRadioGroup; RadioButton1: TRadioButton; RadioButton2: TRadioButton; GroupBox2: TGroupBox; Label1: TLabel;
Label2: TLabel; ComboBox1: TComboBox; Edit1: TEdit;
53
DBNavigator1: TDBNavigator; DBLookupComboBox1: TDBLookupComboBox; DBLookupComboBox2: TDBLookupComboBox; DateTimePicker2: TDateTimePicker; Timer1: TTimer;
DBEdit4: TDBEdit;
Label8: TLabel;
BitBtn1: TBitBtn;
procedure DBEdit3Change(Sender: TObject); procedure DateTimePicker2Change(Sender: TObject); procedure DBGrid1TitleClick(Column: TColumn); procedure Edit1Change(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure DBNavigator1BeforeAction(Sender: TObject; Button: TNavigateBtn);
procedure DBLookupComboBox1Enter(Sender: TObject); procedure DBLookupComboBox1Exit(Sender: TObject); procedure Timer1Timer(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure DBEdit1Change(Sender: TObject);
procedure BitBtn1Click(Sender: TObject); procedure DBLookupComboBox2Enter(Sender: TObject); procedure DBLookupComboBox2Exit(Sender: TObject); procedure DBEdit2Enter(Sender: TObject); procedure DBEdit2Exit(Sender: TObject);
procedure DateTimePicker2Enter(Sender: TObject); procedure DateTimePicker2Exit(Sender: TObject);
private
{ Private declarations } procedure isEdit; procedure noEdit; procedure Refresh; function checkEdit:boolean;
public
{ Public declarations } end;
const
SQL='SELECT Now_Rasxod.*, Family.F_Name, Rasxod.R_Rasxod, Rasxod.R_ID, Family.F_ID' +' FROM Rasxod INNER JOIN (Family INNER JOIN Now_Rasxod ON Family.F_ID =
Now_Rasxod.NR_FIO) ON Rasxod.R_ID = Now_Rasxod.NR_Rasxod';
var
NRasxod: TNRasxod; s:string; ins:boolean;
implementation
uses Data_modul, Familyes, Rasxods;
{$R *.dfm}
procedure TNRasxod.Refresh; begin
DM.RasNQuery5.Close;
DM.RasNQuery5.Open;
end;
function TNRasxod.checkEdit:boolean; begin
checkEdit:=false;
if DBEdit1.Text<>'' then DM.CheckQuery1.SQL.Text:=SQL+' WHERE Now_Rasxod.NR_ID='+DBEdit1.Text+';';
DM.CheckQuery1.Open;
if DBEdit4.Text<>'' then begin
Label8.Visible:=StrToBool(DBEdit4.Text); DBLookupComboBox1.Enabled:= not StrToBool(DBEdit4.Text); DBLookupComboBox2.Enabled:= not StrToBool(DBEdit4.Text); DBEdit2.Enabled:= not StrToBool(DBEdit4.Text); DateTimePicker2.Enabled:=not StrToBool(DBEdit4.Text); checkEdit:=StrToBool(DBEdit4.Text);
end;
end;
procedure TNRasxod.isEdit; begin
if DBEdit1.Text<>'' then begin
54
DM.CheckQuery1.SQL.Text:='UPDATE Now_Rasxod SET Now_Rasxod.EDIT = True WHERE Now_Rasxod.NR_ID='+DBEdit1.Text+';';
DM.CheckQuery1.ExecSQL;
DM.CheckQuery1.SQL.Text:=SQL+' WHERE NR_ID='+DBEdit1.Text+';'; DM.CheckQuery1.Open;
end;
end;
procedure TNRasxod.noEdit; begin
if DBEdit1.Text<>'' then begin
DM.CheckQuery1.SQL.Text:='UPDATE Now_Rasxod SET Now_Rasxod.EDIT = False WHERE Now_Rasxod.NR_ID='+DBEdit1.Text+';';
DM.CheckQuery1.ExecSQL;
DM.CheckQuery1.SQL.Text:=SQL+' WHERE NR_ID='+DBEdit1.Text+';'; DM.CheckQuery1.Open;
end;
end;
procedure TNRasxod.DBEdit3Change(Sender: TObject); begin
if DBEdit3.Text<>''then DateTimePicker2.Date:=StrToDate(DBEdit3.Text); end;
procedure TNRasxod.DateTimePicker2Change(Sender: TObject); begin
DBEdit3.Text:=DateToStr(DateTimePicker2.Date);
end;
procedure TNRasxod.DBGrid1TitleClick(Column: TColumn); var
i:integer;
clr:TColor; begin
s:=' ASC';
clr:= clMoneyGreen;
if RadioButton2.Checked then begin
s:=' DESC'; clr:= clSkyBlue; end;
for i:=0 to DBGrid1.Columns.Count-1 do DBGrid1.Columns.Items[i].Title.Color:= clBtnFace; DBGrid1.Columns.Items[Column.Index].Title.Color:=clr; DM.RasNQuery5.Sort:= DBGrid1.Columns.Items[Column.Index].FieldName+s;
end;
procedure TNRasxod.Edit1Change(Sender: TObject); begin
if ComboBox1.ItemIndex=-1 then ComboBox1.ItemIndex:=0; S:=DBGrid1.Columns.Items[ComboBox1.ItemIndex].FieldName; DM.RasNQuery5.SQL.Clear;
DM.RasNQuery5.SQL.Add(SQL+
' WHERE '+s+' LIKE "'+Edit1.text+'%"'); Refresh;
end;
procedure TNRasxod.FormCreate(Sender: TObject); var i:integer;
begin DM.ADOConnection1.Connected:=true; DM.RasNQuery5.SQL.Clear; DM.RasNQuery5.SQL.Add(SQL+';'); DM.RasNQuery5.Open;
for i:=0 to DBGrid1.Columns.Count-1 do ComboBox1.Items.Add(DBGrid1.Columns.Items[i].Title.Caption);
end;
procedure TNRasxod.DBNavigator1BeforeAction(Sender: TObject; Button: TNavigateBtn);
var n:integer; begin ins:=false;
if Button=nbInsert then begin
ins:=true;
if DBLookupComboBox1.Enabled then DBLookupComboBox1.SetFocus;
55
end;
if (Button=nbRefresh) then begin
n:=DM.RasNQuery5.FieldValues['NR_ID']; Refresh; DM.RasNQuery5.Locate('NR_ID',n,[]); CheckEdit;
end;
end;
procedure TNRasxod.DBLookupComboBox1Enter(Sender: TObject); begin
Timer1.Enabled:=false;
if (DBEdit1.Text<>'') and (not ins) then if not checkEdit then isEdit;
end;
procedure TNRasxod.DBLookupComboBox1Exit(Sender: TObject); begin
Timer1.Enabled:=True;
noEdit;
end;
procedure TNRasxod.Timer1Timer(Sender: TObject); begin
if DBNavigator1.Controls[6].Enabled then begin
DBNavigator1.BtnClick(nbRefresh);
end;
end;
procedure TNRasxod.FormClose(Sender: TObject; var Action: TCloseAction); begin
noEdit;
Timer1.Enabled:=false;
end;
procedure TNRasxod.DBEdit1Change(Sender: TObject); begin
if (DBEdit1.Text<>'') and (not ins) then checkEdit; end;
procedure TNRasxod.BitBtn1Click(Sender: TObject); begin
Refresh;
if DM.RasNQuery5.FieldValues['EDIT']=false then begin
if MessageDlg('Удалитьзапись?',mtWarning,[mbYes,mbNo],0)=mrYes then//если "да" begin
Refresh;
DM.RasNQuery6.Close;
DM.RasNQuery6.SQL.Clear;
DM.RasNQuery6.SQL.Add('DELETE Now_Rasxod.NR_ID, *FROM Now_Rasxod WHERE Now_Rasxod.NR_ID='+DBEdit1.Text+';');
DM.RasNQuery6.ExecSQL;
end; end else
MessageDlg('Запись редактируется другим пользователем',mtError,[mbOK],0); end;
procedure TNRasxod.DBLookupComboBox2Enter(Sender: TObject); begin
Timer1.Enabled:=false;
if (DBEdit1.Text<>'') and (not ins) then if not checkEdit then isEdit;
end;
procedure TNRasxod.DBLookupComboBox2Exit(Sender: TObject); begin
Timer1.Enabled:=True;
noEdit;
end;
procedure TNRasxod.DBEdit2Enter(Sender: TObject); begin
Timer1.Enabled:=false;
if (DBEdit1.Text<>'') and (not ins) then if not checkEdit then isEdit;
56
end;
procedure TNRasxod.DBEdit2Exit(Sender: TObject); begin
Timer1.Enabled:=True;
noEdit;
end;
procedure TNRasxod.DateTimePicker2Enter(Sender: TObject); begin
Timer1.Enabled:=false;
if (DBEdit1.Text<>'') and (not ins) then if not checkEdit then isEdit;
end;
procedure TNRasxod.DateTimePicker2Exit(Sender: TObject); begin
Timer1.Enabled:=True;
noEdit;
end;
end.
Программный код модуля «Смены пароля»:
unit ChangePass;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, DBCtrls, ExtCtrls, Mask;
type
TChange = class(TForm) Panel1: TPanel; Label1: TLabel; Panel2: TPanel; Panel3: TPanel; BitBtn1: TBitBtn; BitBtn2: TBitBtn; Label4: TLabel;
DBLookupComboBox1: TDBLookupComboBox; Edit1: TEdit;
Panel4: TPanel;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit; DBEdit1: TDBEdit;
procedure BitBtn2Click(Sender: TObject); procedure FormShow(Sender: TObject);
procedure DBLookupComboBox1CloseUp(Sender: TObject); procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations } public
{ Public declarations } end;
var
Change: TChange; new, pwd:String; posetitel:string;
implementation
uses Home_page, Data_Modul, LogForm;
{$R *.dfm}
procedure TChange.BitBtn2Click(Sender: TObject); begin
Change.Close;
end;
procedure TChange.FormShow(Sender: TObject); begin
DM.USQuery1.SQL.Clear;
57
DM.USQuery1.SQL.Add('SELECT Users.*FROM Users;'); DM.USQuery1.Open;
end;
procedure TChange.DBLookupComboBox1CloseUp(Sender: TObject); begin
posetitel:=DBLookupComboBox1.Text; if posetitel<>'' then
begin pwd:=DBEdit1.Text; Edit1.SetFocus; Edit1.Text:=' '; DM.USQuery1.Close; DM.USQuery1.SQL.Clear;
DM.USQuery1.SQL.Add('SELECT Users.*FROM Users'
+' WHERE Users.ID='+IntToStr(DBLookupComboBox1.KeyValue)+';'); DM.USQuery1.Open; pwd:=DM.USQuery1.FieldByName('U_Password').AsString; DM.USQuery1.SQL.Clear;
DM.USQuery1.SQL.Add('SELECT Users.*FROM Users;'); DM.USQuery1.Open;
end;
end;
procedure TChange.BitBtn1Click(Sender: TObject); var
ogPath:PChar; begin
if (pwd<>Edit1.Text) or (pwd=Edit2.Text) or (Edit2.Text<>Edit3.Text) then begin
if pwd<>Edit1.Text then begin
MessageDlg('Старыйпаролбвведенневерно!',mtError, [mbOK], 0); Edit1.SetFocus;
end;
if pwd=Edit2.Text then
begin
MessageDlg('Старый пароль не должен совпадть с новым!',mtError, [mbOK], 0);
Edit2.SetFocus;
end;
if Edit3.Text<>Edit2.Text then begin
MessageDlg('Некорректныйвводновогопароля',mtError, [mbOK], 0); Edit3.SetFocus;
end; end
else begin
DBEdit1.Text:=Edit2.Text;
DM.USQuery1.Edit; DM.USQuery1.FieldByName('U_Password').AsString:=Edit2.Text; DM.USQuery1.Post;
MessageDlg('Парольизменне. Повторите вход в систему!',mtInformation, [mbOK], 0); ogPath:=PChar(Application.ExeName);
WinExec(ogPath,SW_SHOW); Application.Terminate; end;
end;
end.
Программный код модуля «Авторизации администратора»:
unit AdForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, DBCtrls;
type
TAdmin = class(TForm) Panel1: TPanel; Label1: TLabel; Panel2: TPanel; Label2: TLabel; Panel3: TPanel; BitBtn1: TBitBtn; BitBtn2: TBitBtn;
58
Edit1: TEdit;
DBLookupComboBox1: TDBLookupComboBox; procedure FormShow(Sender: TObject);
procedure DBLookupComboBox1CloseUp(Sender: TObject); procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject); private
{Private declarations } public
{Public declarations } end;
var
Admin: TAdmin; pwd:String; flag:Boolean; posetitel:string;
implementation
uses Data_Modul, UsesForm;
{$R *.dfm}
procedure TAdmin.FormShow(Sender: TObject); begin
MessageDlg('Доступно пользователю с правами администратора', mtInformation, [mbOK], 0);
DM.USQuery1.SQL.Clear;
DM.USQuery1.SQL.Add('SELECT Users.*FROM Users;'); DM.USQuery1.Open;
end;
procedure TAdmin.DBLookupComboBox1CloseUp(Sender: TObject); begin
posetitel:=DBLookupComboBox1.Text; if posetitel<>'' then
begin Edit1.SetFocus; DM.USQuery1.Close;
DM.USQuery1.SQL.Clear; DM.USQuery1.SQL.Add('SELECT Users.*' +' FROM Users'
+' WHERE Users.ID='+IntToStr(DBLookupComboBox1.KeyValue)+';'); DM.USQuery1.Open; pwd:=DM.USQuery1.FieldByName('U_Password').AsString; DM.USQuery1.SQL.Clear;
DM.USQuery1.SQL.Add('SELECT Users.*FROM Users;'); DM.USQuery1.Open;
end;
end;
procedure TAdmin.BitBtn1Click(Sender: TObject); begin
if posetitel='ADMIN' then
if pwd<>Trim(Edit1.Text) then MessageDlg('Неверныйпароль!',mtError, [mbOK], 0)
else begin
flag:=false;
if not flag then
begin
Users:=TUsers.Create(self);
flag:=true;
end;
Users.Show;
Admin.Close;
end
else MessageDlg('Вынеимеетправадминистратора', mtWarning, [mbOK], 0); end;
procedure TAdmin.BitBtn2Click(Sender: TObject); begin
Admin.Close;
end;
end.
Программный код модуля «Список пользователей»:
unit UsesForm;
59
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, DBCtrls, ExtCtrls, Grids, DBGrids;
type
TUsers = class(TForm) Panel1: TPanel; DBGrid1: TDBGrid;
RadioGroup1: TRadioGroup;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton; GroupBox2: TGroupBox; Label1: TLabel;
Label2: TLabel; ComboBox1: TComboBox; Edit1: TEdit;
DBNavigator1: TDBNavigator;
procedure DBGrid1TitleClick(Column: TColumn); procedure Edit1Change(Sender: TObject); procedure FormCreate(Sender: TObject);
private
{Private declarations } public
{Public declarations } end;
const
SQL='SELECT Users.*FROM Users';
var
Users: TUsers; s:string;
implementation
{$R *.dfm}
uses Data_Modul;
procedure TUsers.DBGrid1TitleClick(Column: TColumn); var
i:integer;
clr:TColor; begin
s:=' ASC';
clr:= clMoneyGreen;
if RadioButton2.Checked then begin
s:=' DESC'; clr:= clSkyBlue; end;
for i:=0 to DBGrid1.Columns.Count-1 do DBGrid1.Columns.Items[i].Title.Color:= clBtnFace; DBGrid1.Columns.Items[Column.Index].Title.Color:=clr; DM.USQuery1.Sort:= DBGrid1.Columns.Items[Column.Index].FieldName+s;
end;
procedure TUsers.Edit1Change(Sender: TObject); begin
if ComboBox1.ItemIndex=-1 then ComboBox1.ItemIndex:=0; S:=DBGrid1.Columns.Items[ComboBox1.ItemIndex].FieldName; DM.USQuery1.SQL.Clear;
DM.USQuery1.SQL.Add(SQL+
' WHERE '+s+' LIKE "'+Edit1.text+'%"'); DM.USQuery1.Close;
DM.USQuery1.Open;
end;
procedure TUsers.FormCreate(Sender: TObject); var i:integer;
begin DM.ADOConnection1.Connected:=true; DM.USQuery1.SQL.Clear; DM.USQuery1.SQL.Add(SQL+';'); DM.USQuery1.Open;
for i:=0 to DBGrid1.Columns.Count-1 do ComboBox1.Items.Add(DBGrid1.Columns.Items[i].Title.Caption);
end;
60