Курсовые работы / ПРИС П _21
.pdffunction checkEdit:boolean; |
|
|
|
|
ComboBox1.Items.Add(DBGrid1.Columns.Items[i].Title.Caption); |
||
public |
|
|
|
|
if PParol.DBLookupComboBox1.Text='ГОСТЬ' then |
|
|
{ Public declarations } |
|
|
|
|
begin |
|
|
end; |
|
|
|
|
GroupBox1.Enabled:=False; |
|
|
|
|
|
|
|
end; |
|
|
var |
|
|
|
|
end; |
|
|
ZZakaz: TZZakaz; |
|
|
|
|
|
|
|
s:string; |
|
|
|
|
procedure TZZakaz.DBGrid1TitleClick(Column: TColumn); |
|
|
ins:boolean; |
|
|
|
|
var |
|
|
buttonSelected:integer; |
|
|
|
|
i:integer; |
|
|
|
|
|
|
|
clr:TColor; |
|
|
implementation |
|
|
|
|
begin |
|
|
|
|
|
|
|
s:=' ASC'; |
|
|
{$R *.dfm} |
|
|
|
|
clr:= clMoneyGreen; |
|
|
uses Data_modul, Fond, Parol; |
|
|
|
|
if RadioButton2.Checked then |
|
|
|
|
|
|
|
begin |
|
|
procedure TZZakaz.Refresh; |
|
|
|
|
s:=' DESC'; |
|
|
begin |
|
|
|
|
clr:= clSkyBlue; |
|
|
DM.ZakazQuery1.Close; |
|
|
|
|
end; |
|
|
DM.ZakazQuery1.Open; |
|
|
|
|
for i:=0 to DBGrid1.Columns.Count-1 do |
|
|
end; |
|
|
|
|
DBGrid1.Columns.Items[i].Title.Color:= clBtnFace; |
|
|
|
|
|
|
|
DBGrid1.Columns.Items[Column.Index].Title.Color:=clr; |
|
|
procedure TZZakaz.isEdit; |
|
|
|
|
DM.ZakazQuery1.Sort:= |
|
|
begin |
|
|
|
|
DBGrid1.Columns.Items[Column.Index].FieldName+s; |
|
|
if DBEdit1.Text<>'' then |
|
|
|
|
end; |
|
|
begin |
|
|
|
|
|
|
|
DM.CheckQuery1.SQL.Text:='UPDATE Zakaz SET Zakaz.EDIT = |
procedure TZZakaz.Edit1Change(Sender: TObject); |
|
|||||
True WHERE Zakaz.z_id='+DBEdit1.Text+';'; |
|
|
|
begin |
|
|
|
DM.CheckQuery1.ExecSQL; |
|
|
|
|
if ComboBox1.ItemIndex=-1 then ComboBox1.ItemIndex:=0; |
|
|
DM.CheckQuery1.SQL.Text:='Select |
* |
from |
Zakaz |
WHERE |
S:=DBGrid1.Columns.Items[ComboBox1.ItemIndex].FieldName; |
||
z_id='+DBEdit1.Text+';'; |
|
|
|
|
DM.ZakazQuery1.SQL.Clear; |
|
|
DM.CheckQuery1.Open; |
|
|
|
|
DM.ZakazQuery1.SQL.Add('SELECT *FROM Zakaz'+ |
|
|
end; |
|
|
|
|
' WHERE '+s+' LIKE "'+Edit1.text+'%"'); |
|
|
end; |
|
|
|
|
Refresh; |
|
|
|
|
|
|
|
end; |
|
|
procedure TZZakaz.noEdit; |
|
|
|
|
|
|
|
begin |
|
|
|
|
procedure TZZakaz.DBNavigator2BeforeAction(Sender: TObject; |
||
if DBEdit1.Text<>'' then |
|
|
|
|
Button: TNavigateBtn); |
|
|
begin |
|
|
|
|
var |
|
|
DM.CheckQuery1.SQL.Text:='UPDATE Zakaz SET Zakaz.EDIT = |
n:integer; |
|
|
||||
False WHERE Zakaz.z_id='+DBEdit1.Text+';'; |
|
|
|
begin |
|
|
|
DM.CheckQuery1.ExecSQL; |
|
|
|
|
ins:=false; |
|
|
DM.CheckQuery1.SQL.Text:='Select |
* |
from |
Zakaz |
WHERE |
if Button=nbInsert then |
|
|
z_id='+DBEdit1.Text+';'; |
|
|
|
|
begin |
|
|
DM.CheckQuery1.Open; |
|
|
|
|
ins:=true; |
|
|
end; |
|
|
|
|
if DBEdit2.Enabled then DBEdit2.SetFocus; |
|
|
end; |
|
|
|
|
end; |
|
|
|
|
|
|
|
if (Button=nbRefresh) then |
|
|
function TZZakaz.checkEdit:boolean; |
|
|
|
|
begin |
|
|
begin |
|
|
|
|
n:=DM.ZakazQuery1.FieldValues['z_id']; |
|
|
checkEdit:=false; |
|
|
|
|
Refresh; |
|
|
if DBEdit1.Text<>'' then DM.CheckQuery1.SQL.Text:='Select * from |
DM.ZakazQuery1.Locate('z_id',n,[]); |
|
|||||
Zakaz'+' WHERE z_id='+DBEdit1.Text+';'; |
|
|
|
end; |
|
|
|
DM.CheckQuery1.Open; |
|
|
|
|
end; |
|
|
if DBEdit10.Text<>'' then |
|
|
|
|
|
|
|
begin |
|
|
|
|
procedure TZZakaz.BitBtn1Click(Sender: TObject); |
|
|
Label7.Visible:=StrToBool(DBEdit10.Text); |
|
|
begin |
|
|
||
DBEdit2.Enabled:= not StrToBool(DBEdit10.Text); |
|
if DM.ZakazQuery1.FieldValues['EDIT']=false then |
|
||||
DBEdit3.Enabled:= not StrToBool(DBEdit10.Text); |
|
begin |
|
|
|||
DBEdit4.Enabled:= not StrToBool(DBEdit10.Text); |
|
buttonSelected:=MessageDlg('Удалить |
|
||||
DateTimePicker1.Enabled:= not StrToBool(DBEdit10.Text); |
|
запись?',mtWarning,mbOKCancel, 0); |
|
||||
DateTimePicker2.Enabled:= not StrToBool(DBEdit10.Text); |
|
if buttonSelected = mrOK then |
|
|
|||
DBEdit7.Enabled:= not StrToBool(DBEdit10.Text); |
|
begin |
|
|
|||
DBEdit8.Enabled:= not StrToBool(DBEdit10.Text); |
|
DM.ZakazQuery2.Close; |
|
|
|||
DBEdit9.Enabled:= not StrToBool(DBEdit10.Text); |
|
DM.ZakazQuery2.SQL.Clear; |
|
|
|||
DBComboBox1.Enabled:= not StrToBool(DBEdit10.Text); |
|
DM.ZakazQuery2.SQL.Add('DELETE Zakaz.z_id, *FROM Zakaz |
|||||
checkEdit:=StrToBool(DBEdit10.Text); |
|
|
|
WHERE Zakaz.z_id='+DBEdit1.Text+';'); |
|
||
end; |
|
|
|
|
DM.ZakazQuery2.ExecSQL; |
|
|
end; |
|
|
|
|
end; |
|
|
|
|
|
|
|
end |
|
|
procedure TZZakaz.FormCreate(Sender: TObject); |
|
|
else |
|
|
||
var i:integer; |
|
|
|
|
MessageDlg('Запись |
редактируется |
другим |
begin |
|
|
|
|
пользователем',mtError,[mbOK],0); |
|
|
DM.ADOConnection1.Connected:=true; |
|
|
|
end; |
|
|
|
DM.ZakazQuery1.SQL.Clear; |
|
|
|
|
|
|
|
DM.ZakazQuery1.SQL.Add('SELECT *FROM Zakaz'); |
|
procedure TZZakaz.DBEdit1Change(Sender: TObject); |
|
||||
DM.ZakazQuery1.Open; |
|
|
|
|
begin |
|
|
for i:=0 to DBGrid1.Columns.Count-1 |
do |
|
|
|
if (DBEdit1.Text<>'') and (not ins) then checkEdit; |
|
42
end;
procedure TZZakaz.DBEdit2Enter(Sender: TObject); begin
Timer1.Enabled:=false;
if (DBEdit1.Text<>'') and (not ins) then if not checkEdit then isEdit;
end;
procedure TZZakaz.DBEdit2Exit(Sender: TObject); begin
Timer1.Enabled:=True;
noEdit;
end;
procedure TZZakaz.Timer1Timer(Sender: TObject); begin
if DBNavigator2.Controls[6].Enabled then begin
DBNavigator2.BtnClick(nbEdit);
DBNavigator2.BtnClick(nbRefresh);
end;
end;
procedure TZZakaz.FormClose(Sender: TObject; var Action: TCloseAction);
begin noEdit;
Timer1.Enabled:=false;
end;
procedure TZZakaz.DateTimePicker1CloseUp(Sender: TObject); begin
if DateTimePicker1.Date< Now then begin
MessageDlg('Нельзя делать дату заказа задним числом!',mtError,[mbOk],0);
DBEdit5.Clear; DateTime_SetFormat(DateTimePicker1.Handle, ''' ''');
abort; end
else begin
DBEdit5.EditText:=DateToStr(DateTimePicker1.Date); DateTime_SetFormat(DateTimePicker1.Handle,
PChar('dd.MM.yy'));
end;
end;
procedure TZZakaz.DateTimePicker2CloseUp(Sender: TObject); begin
if DateTimePicker1.Date>DateTimePicker2.Date then begin
MessageDlg('Нельзя сделать дату получения книги раньше даты заказы! Пересмотрите дату получения книги!',mtError,[mbOk],0);
DBEdit6.Clear; DateTime_SetFormat(DateTimePicker2.Handle, ''' ''');
abort; end
else begin
DBEdit6.EditText:=DateToStr(DateTimePicker2.Date); DateTime_SetFormat(DateTimePicker2.Handle,
PChar('dd.MM.yy'));
end;
end;
procedure TZZakaz.DBEdit5Change(Sender: TObject); begin
if DBEdit5.Text<>'' then DateTimePicker1.Date:=StrToDate(DBEdit5.Text);
end;
procedure TZZakaz.DBEdit6Change(Sender: TObject); begin
if DBEdit6.Text<>'' then DateTimePicker1.Date:=StrToDate(DBEdit6.Text);
end;
procedure TZZakaz.DBCheckBox1Click(Sender: TObject); begin
if DBGrid1.DataSource.DataSet.FieldByName('z_dobav').Value=true then begin
DBGrid2.DataSource.DataSet.Append;
DBGrid2.DataSource.DataSet.FieldByName('f_udk').AsString:=DBGrid1
.DataSource.DataSet.FieldByName('z_udk').AsString;
DBGrid2.DataSource.DataSet.FieldByName('f_vid').AsString:=DBGrid1.
DataSource.DataSet.FieldByName('z_vid').AsString;
DBGrid2.DataSource.DataSet.FieldByName('f_nazvanie').AsString:=DB
Grid1.DataSource.DataSet.FieldByName('z_nazvanie').AsString;
DBGrid2.DataSource.DataSet.FieldByName('f_avtor').AsString:=DBGri d1.DataSource.DataSet.FieldByName('z_avtor').AsString;
DBGrid2.DataSource.DataSet.FieldByName('f_god').AsString:=DBGrid1
.DataSource.DataSet.FieldByName('z_god').AsString;
DBGrid2.DataSource.DataSet.FieldByName('f_kolvo').AsString:=DBGri d1.DataSource.DataSet.FieldByName('z_kolvo').AsString; DBGrid2.DataSource.DataSet.Post; DBGrid2.DataSource.DataSet.Refresh; DBGrid2.DataSource.DataSet.Open; DBGrid1.DataSource.DataSet.Delete;
end;
end;
procedure TZZakaz.DBEdit2KeyPress(Sender: TObject; var Key: Char); begin
If (Key in ['0'..'9']) then Key:=#0;
end;
procedure TZZakaz.DBEdit7KeyPress(Sender: TObject; var Key: Char); begin
if Length(DBEdit7.Text)>20 then if key<>#8 then
key:=#0;
If not (Key in ['0'..'9', '-','.',#8]) then Key:=#0 ;
end;
procedure TZZakaz.DBComboBox1KeyPress(Sender: TObject; var Key: Char);
begin key:=#0; end;
procedure TZZakaz.DBEdit8KeyPress(Sender: TObject; var Key: Char); begin
if Length(DBEdit8.Text)>=4 then if key<>#8 then
key:=#0;
If not (Key in ['0'..'9', #8]) then Key:=#0;
end;
procedure TZZakaz.DBEdit9KeyPress(Sender: TObject; var Key: Char); begin
if Length(DBEdit9.Text)>=4 then if key<>#8 then
key:=#0;
If not (Key in ['0'..'9', #8]) then Key:=#0;
end;
end.
43
Листинг Б.6 – Vidacha
unit Vidacha;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DB, ADODB, StdCtrls, DBCtrls, Mask, Grids, DBGrids,
ComCtrls, jpeg, CommCtrl, Buttons;
type
TVVidacha = class(TForm) Panel1: TPanel;
Label7: TLabel; DBGrid1: TDBGrid; GroupBox1: TGroupBox; DBEdit1: TDBEdit;
DBNavigator2: TDBNavigator; GroupBox2: TGroupBox; RadioButton1: TRadioButton; RadioButton2: TRadioButton; GroupBox3: TGroupBox; Edit1: TEdit;
ComboBox1: TComboBox; BitBtn1: TBitBtn;
Timer1: TTimer;
DBLookupComboBox1: TDBLookupComboBox;
DBLookupComboBox2: TDBLookupComboBox; DBEdit2: TDBEdit;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
DateTimePicker3: TDateTimePicker; DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit; CheckBox1: TCheckBox; DBGrid2: TDBGrid; Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label8: TLabel;
Label9: TLabel;
Image1: TImage;
procedure FormCreate(Sender: TObject); procedure DBGrid1TitleClick(Column: TColumn); procedure Edit1Change(Sender: TObject);
procedure DBNavigator2BeforeAction(Sender: TObject; Button: TNavigateBtn);
procedure BitBtn1Click(Sender: TObject); procedure DBEdit1Change(Sender: TObject);
procedure DBLookupComboBox1Enter(Sender: TObject); procedure DBLookupComboBox1Exit(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Timer1Timer(Sender: TObject);
procedure DateTimePicker1CloseUp(Sender: TObject); procedure DateTimePicker2CloseUp(Sender: TObject); procedure DateTimePicker3CloseUp(Sender: TObject); procedure DBEdit2Change(Sender: TObject); procedure DBEdit3Change(Sender: TObject); procedure DBEdit4Change(Sender: TObject); procedure CheckBox1Click(Sender: TObject);
procedure DBLookupComboBox1CloseUp(Sender: TObject);
private
{ Private declarations } procedure Refresh; procedure isEdit; procedure noEdit;
function checkEdit:boolean; public
{ Public declarations }
end; const
SQL='SELECT Vidacha.*, Fond.f_nazvanie, Chitatel.ch_nomer, Chitatel.ch_id, Fond.f_id'+
' FROM Fond INNER JOIN (Chitatel INNER JOIN Vidacha ON Chitatel.ch_id = Vidacha.v_ch) ON Fond.f_id = Vidacha.v_kniga';
var
VVidacha: TVVidacha; s:string;
ins:boolean;
buttonSelected:integer;
implementation
{$R *.dfm}
uses Data_modul, Parol;
procedure TVVidacha.Refresh; begin
DM.VidachaQuery1.Close;
DM.VidachaQuery1.Open;
end;
procedure TVVidacha.isEdit; begin
if DBEdit1.Text<>'' then begin
DM.CheckQuery1.SQL.Text:='UPDATE Vidacha SET Vidacha.EDIT
=True WHERE Vidacha.v_id='+DBEdit1.Text+';'; DM.CheckQuery1.ExecSQL;
DM.CheckQuery1.SQL.Text:='Select * from Vidacha WHERE v_id='+DBEdit1.Text+';';
DM.CheckQuery1.Open;
end;
end;
procedure TVVidacha.noEdit; begin
if DBEdit1.Text<>'' then begin
DM.CheckQuery1.SQL.Text:='UPDATE Vidacha SET Vidacha.EDIT
=False WHERE Vidacha.v_id='+DBEdit1.Text+';'; DM.CheckQuery1.ExecSQL;
DM.CheckQuery1.SQL.Text:='Select * from Vidacha WHERE
v_id='+DBEdit1.Text+';'; DM.CheckQuery1.Open;
end;
end;
function TVVidacha.checkEdit:boolean; begin
checkEdit:=false;
if DBEdit1.Text<>'' then DM.CheckQuery1.SQL.Text:=SQL+' WHERE v_id='+DBEdit1.Text+';';
DM.CheckQuery1.Open; if DBEdit5.Text<>'' then
begin
DBLookupComboBox1.Enabled:=not StrToBool(DBEdit5.Text); DBLookupComboBox2.Enabled:=not StrToBool(DBEdit5.Text); DateTimePicker1.Enabled:=not StrToBool(DBEdit5.Text); DateTimePicker2.Enabled:=not StrToBool(DBEdit5.Text); DateTimePicker3.Enabled:=not StrToBool(DBEdit5.Text); Label7.Visible:= StrToBool(DBEdit5.Text); checkEdit:=StrToBool(DBEdit5.Text);
end;
end;
procedure TVVidacha.FormCreate(Sender: TObject); var i:integer;
begin DM.ADOConnection1.Connected:=true; DM.VidachaQuery1.SQL.Clear; DM.VidachaQuery1.SQL.Add(SQL+';');
44
DM.VidachaQuery1.Open;
for i:=0 to DBGrid1.Columns.Count-1 do ComboBox1.Items.Add(DBGrid1.Columns.Items[i].Title.Caption);
if PParol.DBLookupComboBox1.Text='ГОСТЬ' then begin
GroupBox1.Enabled:=False;
end;
end;
procedure TVVidacha.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.VidachaQuery1.Sort:=
DBGrid1.Columns.Items[Column.Index].FieldName+s;
end;
procedure TVVidacha.Edit1Change(Sender: TObject); begin
if ComboBox1.ItemIndex=-1 then ComboBox1.ItemIndex:=0; S:=DBGrid1.Columns.Items[ComboBox1.ItemIndex].FieldName; DM.VidachaQuery1.SQL.Clear; DM.VidachaQuery1.SQL.Add(SQL+
' WHERE '+s+' LIKE "'+Edit1.text+'%"'); Refresh;
end;
procedure TVVidacha.DBNavigator2BeforeAction(Sender: TObject; Button: TNavigateBtn);
var n:integer;
begin ins:=false;
if Button=nbInsert then begin
ins:=true;
if DBEdit2.Enabled then DBEdit2.SetFocus; end;
if (Button=nbRefresh) then begin
n:=DM.VidachaQuery1.FieldValues['v_id']; Refresh; DM.VidachaQuery1.Locate('v_id',n,[]);
end;
end;
procedure TVVidacha.BitBtn1Click(Sender: TObject); begin
if DM.VidachaQuery1.FieldValues['EDIT']=false then begin
buttonSelected:=MessageDlg('Удалить запись?',mtWarning,mbOKCancel, 0);
if buttonSelected = mrOK then begin
DM.VidachaQuery2.Close;
DM.VidachaQuery2.SQL.Clear; DM.VidachaQuery2.SQL.Add('DELETE Vidacha.v_id, *FROM
Vidacha WHERE Vidacha.v_id='+DBEdit1.Text+';'); DM.VidachaQuery2.ExecSQL;
end; end else
MessageDlg('Запись редактируется другим пользователем',mtError,[mbOK],0);
end;
procedure TVVidacha.DBEdit1Change(Sender: TObject);
begin
if (DBEdit1.Text<>'') and (not ins) then checkEdit; end;
procedure TVVidacha.Timer1Timer(Sender: TObject); begin
if DBNavigator2.Controls[6].Enabled then begin
DBNavigator2.BtnClick(nbEdit);
DBNavigator2.BtnClick(nbRefresh);
end;
end;
procedure TVVidacha.FormClose(Sender: TObject; var Action: TCloseAction);
begin noEdit;
Timer1.Enabled:=false;
end;
procedure TVVidacha.DBLookupComboBox1Enter(Sender: TObject); begin
Timer1.Enabled:=false;
if (DBEdit1.Text<>'') and (not ins) then if not checkEdit then isEdit;
end;
procedure TVVidacha.DBLookupComboBox1Exit(Sender: TObject); begin
Timer1.Enabled:=True;
noEdit;
end;
procedure TVVidacha.DateTimePicker1CloseUp(Sender: TObject); begin
if DateTimePicker1.Date< Now then begin
MessageDlg('Нельзя делать выдачу книгу задним числом!',mtError,[mbOk],0);
DBEdit2.Clear; DateTime_SetFormat(DateTimePicker1.Handle, ''' ''');
abort; end
else begin
DBEdit2.EditText:=DateToStr(DateTimePicker1.Date); DateTime_SetFormat(DateTimePicker1.Handle,
PChar('dd.MM.yy'));
end;
end;
procedure TVVidacha.DateTimePicker2CloseUp(Sender: TObject); begin
if DateTimePicker1.Date>DateTimePicker2.Date then begin
MessageDlg('Нельзя сделать возврат книги раньше ее выдачи! Пересмотрите дату предполагаемого возврата!',mtError,[mbOk],0);
DBEdit3.Clear; DateTime_SetFormat(DateTimePicker2.Handle, ''' ''');
abort; end
else begin
DBEdit3.EditText:=DateToStr(DateTimePicker2.Date); DateTime_SetFormat(DateTimePicker2.Handle,
PChar('dd.MM.yy'));
end;
end;
procedure TVVidacha.DateTimePicker3CloseUp(Sender: TObject); begin
if DateTimePicker1.Date>DateTimePicker3.Date then begin
MessageDlg('Нельзя сделать возврат книги раньше ее выдачи! Пересмотрите дату реального возврата!',mtError,[mbOk],0);
DBEdit4.Clear; DateTime_SetFormat(DateTimePicker3.Handle, ''' ''');
45
abort; end
else begin
DateTime_SetFormat(DateTimePicker3.Handle, PChar('dd.MM.yy'));
end;
end;
procedure TVVidacha.DBEdit2Change(Sender: TObject); begin
if DBEdit2.Text<>'' then DateTimePicker1.Date:=StrToDate(DBEdit2.Text);
end;
procedure TVVidacha.DBEdit3Change(Sender: TObject); begin
if DBEdit3.Text<>'' then DateTimePicker2.Date:=StrToDate(DBEdit3.Text);
end;
procedure TVVidacha.DBEdit4Change(Sender: TObject); begin
if CheckBox1.Checked=true then if DBEdit4.Text<>'' then
DateTimePicker3.Date:=StrToDate(DBEdit4.Text);
end;
procedure TVVidacha.CheckBox1Click(Sender: TObject); begin
if CheckBox1.Checked=true then begin
DBEdit4.EditText:=DateToStr(DateTimePicker3.Date);
Листинг Б.7 – Oplata
unit Oplata;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, DB, ADODB, DateUtils, DBCtrls;
type
TOOplata = class(TForm) DBGrid1: TDBGrid; GroupBox1: TGroupBox; RadioButton1: TRadioButton; RadioButton2: TRadioButton; GroupBox2: TGroupBox; Label1: TLabel; ComboBox1: TComboBox; Label2: TLabel;
Edit1: TEdit; DBGrid2: TDBGrid; Label3: TLabel;
OplQuery1: TADOQuery;
OplSource1: TDataSource; OplQuery1ch_nomer: TIntegerField; OplQuery1f_nazvanie: TWideStringField; OplQuery1f_vid: TWideStringField; OplQuery1v_data: TDateTimeField; OplQuery1v_pred_vozv: TDateTimeField; OplQuery1v_real_vozv: TDateTimeField; OplQuery1prosroch: TIntegerField; OplQuery1dolg: TIntegerField; OplQuery1oplacheno: TBooleanField; CheckBox1: TCheckBox;
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState); procedure FormCreate(Sender: TObject);
46
DM.VidachaQuery1.Edit; DBGrid1.DataSource.DataSet.FieldByName('v_vozvrat').Value:=true; end
else begin
DBEdit4.Clear;
DM.VidachaQuery1.Edit; DBGrid1.DataSource.DataSet.FieldByName('v_vozvrat').Value:=false;
end;
end;
procedure TVVidacha.DBLookupComboBox1CloseUp(Sender: TObject);
var i:integer;
begin
for i:=0 to DBGrid2.Columns.Count-1 do if
DM.ZadolgnikiQuery1.Locate('ch_nomer',DBLookupComboBox1.Text,[ ]) then
begin
MessageDlg('Выбранный читатель является задолжником',mtError,[mbOk],0);
DBLookupComboBox1.KeyValue := NULL; abort;
end;
end;
end.
procedure DBGrid1TitleClick(Column: TColumn); procedure Edit1Change(Sender: TObject);
procedure OplQuery1CalcFields(DataSet: TDataSet); procedure CheckBox1Click(Sender: TObject);
private
{Private declarations } public
{Public declarations } end;
var
OOplata: TOOplata; s:string;
implementation
{$R *.dfm}
uses Data_modul;
procedure TOOplata.OplQuery1CalcFields(DataSet: TDataSet); var
a:TDate; begin
if DBGrid1.DataSource.DataSet.FieldByName('v_real_vozv').Value=Null then
begin a:=Date;
end else
a:=OplQuery1v_real_vozv.Value;
OplQuery1prosroch.AsInteger:=DaysBetween(OplQuery1v_data.Value,a )-DaysBetween(OplQuery1v_data.Value,OplQuery1v_pred_vozv.Value); if DBGrid1.DataSource.DataSet.FieldByName('prosroch').Value<0 then
OplQuery1prosroch.AsInteger:=0;
if DBGrid1.DataSource.DataSet.FieldByName('f_vid').AsString='учебная' then
OplQuery1dolg.AsInteger:=2*OplQuery1prosroch.AsInteger else
OplQuery1dolg.AsInteger:=1*OplQuery1prosroch.AsInteger; if
DBGrid1.DataSource.DataSet.FieldByName('v_real_vozv').Value=Null then
OplQuery1oplacheno.Value:=false else OplQuery1oplacheno.Value:=true;
end;
procedure TOOplata.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState); begin
if (OplQuery1.FieldByName('dolg').Value=0)then begin DBGrid1.Canvas.Brush.Color:= $ffbcfd; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
if (Column.FieldName = 'v_real_vozv') then begin
With dbgrid1.Canvas do begin
//FillRect(Rect);
if (OplQuery1.FieldByName('v_real_vozv').AsString='')then begin TextOut(Rect.Right-2-dbgrid1.Canvas.TextWidth('не
возвращена'),Rect.Top+2,'не возвращена'); end;
end;
end;
end;
procedure TOOplata.FormCreate(Sender: TObject); var i:integer;
begin DM.ADOConnection1.Connected:=true; OplQuery1.SQL.Clear;
OplQuery1.SQL.Add('SELECT Chitatel.ch_nomer, Fond.f_nazvanie, Fond.f_vid, Vidacha.v_data, Vidacha.v_pred_vozv, Vidacha.v_real_vozv'+
' FROM Fond INNER JOIN (Chitatel INNER JOIN Vidacha ON Chitatel.ch_id = Vidacha.v_ch) ON Fond.f_id = Vidacha.v_kniga;');
OplQuery1.Open; for i:=0 to 2 do
ComboBox1.Items.Add(DBGrid1.Columns.Items[i].Title.Caption);
Листинг Б.8 – Zadolgniki
DBGrid1.DataSource:=OplSource1;
OplSource1.DataSet:=OplQuery1;;
end;
procedure TOOplata.DBGrid1TitleClick(Column: TColumn); var
i:integer;
clr:TColor; begin
{s:=' ASC'; clr:=clHighlight;
if RadioButton2.Checked then begin
s:=' DESC'; clr:=clAqua; 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;}
//
OplQuery1.Sort:=DBGrid1.Columns.Items[Column.index].FieldName+s;
end;
procedure TOOplata.Edit1Change(Sender: TObject); begin
if ComboBox1.ItemIndex=-1 then ComboBox1.ItemIndex:=0;
s:=DBGrid1.Columns.Items[ComboBox1.ItemIndex].FieldName;
OplQuery1.SQL.Clear;
OplQuery1.SQL.Add('SELECT Chitatel.ch_nomer, Fond.f_nazvanie, Fond.f_vid, Vidacha.v_data, Vidacha.v_pred_vozv, Vidacha.v_real_vozv'+
'FROM Fond INNER JOIN (Chitatel INNER JOIN Vidacha ON Chitatel.ch_id = Vidacha.v_ch) ON Fond.f_id = Vidacha.v_kniga'+
'WHERE '+s+' LIKE "'+Edit1.Text+'%"');
OplQuery1.Close;
OplQuery1.Open;
end;
procedure TOOplata.CheckBox1Click(Sender: TObject); begin
if (CheckBox1.Checked=true) then begin
OplQuery1.Edit; DBGrid1.DataSource.DataSet.FieldByName('oplacheno').Value:=true; end
end;
end.
unit Zadolgniki; |
Edit1: TEdit; |
|
procedure FormCreate(Sender: TObject); |
interface |
procedure Button1Click(Sender: TObject); |
|
procedure DBGrid1TitleClick(Column: TColumn); |
uses |
procedure Edit1Change(Sender: TObject); |
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, |
procedure FormClose(Sender: TObject; var Action: TCloseAction); |
Forms, |
private |
Dialogs, Grids, DBGrids, StdCtrls, ComCtrls; |
{ Private declarations } |
|
public |
type |
{ Public declarations } |
TZZadolgniki = class(TForm) |
end; |
Label1: TLabel; |
|
DateTimePicker1: TDateTimePicker; |
var |
Button1: TButton; |
ZZadolgniki: TZZadolgniki; |
DBGrid1: TDBGrid; |
s:string; |
GroupBox1: TGroupBox; |
|
RadioButton1: TRadioButton; |
implementation |
RadioButton2: TRadioButton; |
|
GroupBox2: TGroupBox; |
{$R *.dfm} |
Label2: TLabel; |
|
47
uses Data_modul;
procedure TZZadolgniki.FormCreate(Sender: TObject); var i:integer;
begin DM.ADOConnection1.Connected:=true; DM.ZadolgnikiQuery1.SQL.Clear;
DM.ZadolgnikiQuery1.SQL.Add('SELECT Vidacha.v_ch, Vidacha.v_vozvrat, Chitatel.ch_nomer'
+' FROM Chitatel INNER JOIN Vidacha ON Chitatel.ch_id = Vidacha.v_ch'
+' GROUP BY Vidacha.v_ch, Vidacha.v_vozvrat, Chitatel.ch_nomer' +' HAVING (((Vidacha.v_vozvrat)=False));');
DM.ZadolgnikiQuery1.Open;
DateTimePicker1.Date:=now;
end;
procedure TZZadolgniki.Button1Click(Sender: TObject); begin
DBGrid1.Visible:=true;
DM.ZadolgnikiQuery1.SQL.Clear; DM.ZadolgnikiQuery1.SQL.Add('SELECT Vidacha.v_ch,
Vidacha.v_vozvrat, Chitatel.ch_nomer'+
'FROM Chitatel INNER JOIN Vidacha ON Chitatel.ch_id = Vidacha.v_ch'+
'GROUP BY Vidacha.v_ch, Vidacha.v_vozvrat, Chitatel.ch_nomer'+
'HAVING (((Vidacha.v_vozvrat)=False));'); DM.ZadolgnikiQuery1.Open; Edit1.Enabled:=true;
end;
procedure TZZadolgniki.DBGrid1TitleClick(Column: TColumn); var
i:integer;
clr:TColor; begin
s:=' ASC';
clr:=clHighlight;
if RadioButton2.Checked then begin
s:=' DESC'; clr:=clAqua; 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.ZadolgnikiQuery1.Sort:=DBGrid1.Columns.Items[Column.index].Fi
eldName+s;
end;
procedure TZZadolgniki.Edit1Change(Sender: TObject); begin
DM.ZadolgnikiQuery1.SQL.Clear; DM.ZadolgnikiQuery1.SQL.Add('SELECT Vidacha.v_ch, Vidacha.v_vozvrat, Chitatel.ch_nomer '+
'FROM Chitatel INNER JOIN Vidacha ON Chitatel.ch_id = Vidacha.v_ch'+
'WHERE Chitatel.ch_nomer'+' LIKE "'+Edit1.Text+'%"'+' GROUP BY Vidacha.v_ch, Vidacha.v_vozvrat, Chitatel.ch_nomer'+
'HAVING (((Vidacha.v_vozvrat)=False));'); DM.ZadolgnikiQuery1.Close; DM.ZadolgnikiQuery1.Open;
end;
procedure TZZadolgniki.FormClose(Sender: TObject; var Action: TCloseAction);
begin DBGrid1.Visible:=false; Edit1.Enabled:=false; end;
end.
Листинг Б.9 – Nevip_zakaz
unit Nevip_zakaz;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Grids, DBGrids;
type
TNNevip_zakaz = class(TForm) Label1: TLabel;
DateTimePicker1: TDateTimePicker; Button1: TButton;
DBGrid1: TDBGrid; GroupBox1: TGroupBox; RadioButton1: TRadioButton; RadioButton2: TRadioButton; GroupBox2: TGroupBox; Label2: TLabel;
Edit1: TEdit; Label3: TLabel;
ComboBox1: TComboBox;
procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure DBGrid1TitleClick(Column: TColumn);
procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Edit1Change(Sender: TObject);
private
{Private declarations } public
{Public declarations } end;
var
NNevip_zakaz: TNNevip_zakaz; s,s1:string;
implementation
{$R *.dfm}
uses Data_modul;
procedure TNNevip_zakaz.FormCreate(Sender: TObject); var i:integer;
begin DM.ADOConnection1.Connected:=true; DM.Nevip_zakQuery1.SQL.Clear;
DM.Nevip_zakQuery1.SQL.Add('SELECT * from Zakaz;'); DM.Nevip_zakQuery1.Open;
for i:=0 to DBGrid1.Columns.Count-1 do ComboBox1.Items.Add(DBGrid1.Columns.Items[i].Title.Caption); DBGrid1.Visible:=false;
DateTimePicker1.Date:=now;
end;
procedure TNNevip_zakaz.Button1Click(Sender: TObject); begin
DBGrid1.Visible:=true; DM.Nevip_zakQuery1.SQL.Clear; DM.Nevip_zakQuery1.SQL.Add('select * from Zakaz;'); DM.Nevip_zakQuery1.Open; ComboBox1.Enabled:=true;
Edit1.Enabled:=true;
end;
procedure TNNevip_zakaz.DBGrid1TitleClick(Column: TColumn); var
i:integer;
48
clr:TColor; begin
s:=' ASC'; clr:=clHighlight;
if RadioButton2.Checked then begin
s:=' DESC'; clr:=clAqua; 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.Nevip_zakQuery1.Sort:=DBGrid1.Columns.Items[Column.index].Fi eldName+s;
end;
procedure TNNevip_zakaz.FormClose(Sender: TObject; var Action: TCloseAction);
Листинг Б.10 – Dolgniki
unit Dolgniki;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, ComCtrls;
type
TDDolgniki = class(TForm) Label1: TLabel;
DateTimePicker1: TDateTimePicker; Button1: TButton;
DBGrid1: TDBGrid; GroupBox1: TGroupBox; RadioButton1: TRadioButton; RadioButton2: TRadioButton; GroupBox2: TGroupBox; Label2: TLabel; ComboBox1: TComboBox; Label3: TLabel;
Edit1: TEdit;
procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure DBGrid1TitleClick(Column: TColumn); procedure Edit1Change(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction); private
{Private declarations } public
{Public declarations } end;
var
DDolgniki: TDDolgniki; s:string;
implementation
{$R *.dfm}
uses Data_modul;
procedure TDDolgniki.FormCreate(Sender: TObject); var i:integer;
begin DM.ADOConnection1.Connected:=true; DM.DolgnikiQuery1.SQL.Clear;
DM.DolgnikiQuery1.SQL.Add('SELECT Vidacha.*, Chitatel.ch_nomer, Fond.f_nazvanie, Chitatel.ch_id, Fond.f_id'+
begin DBGrid1.Visible:=false; ComboBox1.Enabled:=false; Edit1.Enabled:=false;
end;
procedure TNNevip_zakaz.Edit1Change(Sender: TObject); begin
if ComboBox1.ItemIndex=-1 then ComboBox1.ItemIndex:=0;
s:=DBGrid1.Columns.Items[ComboBox1.ItemIndex].FieldName; DM.Nevip_zakQuery1.SQL.Clear; DM.Nevip_zakQuery1.SQL.Add('Select * from Zakaz'+' WHERE '+s+' LIKE "'+Edit1.Text+'%"');
DM.Nevip_zakQuery1.Close;
DM.Nevip_zakQuery1.Open; end;
end.
' FROM Fond INNER JOIN (Chitatel INNER JOIN Vidacha ON Chitatel.ch_id = Vidacha.v_ch) ON Fond.f_id = Vidacha.v_kniga WHERE (((Vidacha.v_vozvrat)=False));');
for i:=0 to DBGrid1.Columns.Count-1 do ComboBox1.Items.Add(DBGrid1.Columns.Items[i].Title.Caption); DBGrid1.Visible:=false;
end;
procedure TDDolgniki.Button1Click(Sender: TObject); var i:integer;
begin DBGrid1.Visible:=true;
DM.DolgnikiQuery1.SQL.Clear; DM.DolgnikiQuery1.SQL.Add('SELECT Vidacha.*,
Chitatel.ch_nomer, Fond.f_nazvanie, Chitatel.ch_id, Fond.f_id'+
'FROM Fond INNER JOIN (Chitatel INNER JOIN Vidacha ON Chitatel.ch_id = Vidacha.v_ch) ON Fond.f_id = Vidacha.v_kniga'+
'WHERE (((Vidacha.v_vozvrat)=False));');
DM.DolgnikiQuery1.Open;
ComboBox1.Enabled:=true;
Edit1.Enabled:=true;
end;
procedure TDDolgniki.DBGrid1TitleClick(Column: TColumn); var
i:integer;
clr:TColor; begin
s:=' ASC'; clr:=clHighlight;
if RadioButton2.Checked then begin
s:=' DESC'; clr:=clAqua; 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.DolgnikiQuery1.Sort:=DBGrid1.Columns.Items[Column.index].Fiel
dName+s;
end;
procedure TDDolgniki.Edit1Change(Sender: TObject); begin
if ComboBox1.ItemIndex=-1 then ComboBox1.ItemIndex:=0;
s:=DBGrid1.Columns.Items[ComboBox1.ItemIndex].FieldName;
DM.DolgnikiQuery1.SQL.Clear; DM.DolgnikiQuery1.SQL.Add('SELECT Vidacha.*, Chitatel.ch_nomer, Fond.f_nazvanie, Chitatel.ch_id, Fond.f_id'+
49
' FROM Fond INNER JOIN (Chitatel INNER JOIN Vidacha ON |
procedure TDDolgniki.FormClose(Sender: TObject; var Action: |
||||
Chitatel.ch_id = Vidacha.v_ch) ON Fond.f_id = Vidacha.v_kniga'+' |
TCloseAction); |
||||
WHERE |
(((Vidacha.v_vozvrat)=False)) |
and |
'+s+' |
LIKE |
begin |
"'+Edit1.Text+'%"'); |
|
|
|
DBGrid1.Visible:=false; |
|
DM.DolgnikiQuery1.Close; |
|
|
|
ComboBox1.Enabled:=false; |
|
DM.DolgnikiQuery1.Open; |
|
|
|
Edit1.Enabled:=false; |
|
end; |
|
|
|
|
end; |
end.
Листинг Б.11 – Otbor
unit Otbor;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DB, ADODB, StdCtrls, Grids, DBGrids, jpeg, OleServer, COMObj, ActiveX, WordXP,
Buttons;
type
TOOtbor = class(TForm) GroupBox1: TGroupBox; Label1: TLabel;
Label2: TLabel; ComboBox1: TComboBox; Edit1: TEdit;
Label3: TLabel; ComboBox2: TComboBox; Label4: TLabel;
Edit2: TEdit; GroupBox2: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton; Button1: TButton;
Button2: TButton; Panel1: TPanel; Label5: TLabel; DBGrid1: TDBGrid; Button3: TButton; Panel2: TPanel; Label6: TLabel; DBGrid2: TDBGrid; Button4: TButton; Button5: TButton;
SaveDialog1: TSaveDialog; WordDocument1: TWordDocument; WordApplication1: TWordApplication; WordFont1: TWordFont; WordLetterContent1: TWordLetterContent;
WordParagraphFormat1: TWordParagraphFormat; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure DBGrid1TitleClick(Column: TColumn); procedure Edit1Change(Sender: TObject); procedure Edit2Change(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button4Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button2Click(Sender: TObject);
private
{Private declarations } public
{Public declarations } end;
var
OOtbor: TOOtbor; s,s1,s2:string;
implementation
{$R *.dfm}
uses Data_modul;
procedure TOOtbor.FormCreate(Sender: TObject); var i:integer;
begin DM.ADOConnection1.Connected:=true; DM.OtborQuery1.SQL.Clear;
DM.OtborQuery1.SQL.Add('SELECT * from z_Fond;'); DM.OtborQuery1.Open;
DM.OtborQuery2.SQL.Clear; DM.OtborQuery2.SQL.Add('SELECT * from z_Fond2;'); DM.OtborQuery2.Open;
for i:=0 to DBGrid1.Columns.Count-1 do ComboBox1.Items.Add(DBGrid1.Columns.Items[i].Title.Caption);
for i:=0 to DBGrid1.Columns.Count-1 do ComboBox2.Items.Add(DBGrid1.Columns.Items[i].Title.Caption);
end;
procedure TOOtbor.Button1Click(Sender: TObject); const
wdAlignParagraphCenter = 1; wdAlignParagraphLeft = 0; wdAlignParagraphRight = 2;
wdLineStyleSingle = 1; var
wdApp, wdDoc, wdRng, wdTable : Variant; i, j, Res : Integer;
D : TDateTime; Bm : TBookMark; Sd : TSaveDialog;
begin //{
Sd := SaveDialog1; //SaveDialog1 уже должен быть на форме.
//Если начальная папка диалога не задана, то в качестве начальной берём ту папку,
//в которой расположен исполняемый файл нашей программы.
if Sd.InitialDir = '' then Sd.InitialDir := ExtractFilePath( ParamStr(0) );
//Запуск диалога сохранения файла. if not Sd.Execute then Exit;
//Если файл с заданным именем существует, то запускаем диалог с пользователем.
if FileExists(Sd.FileName) then begin
Res := MessageBox(0, 'Файл с заданным именем уже существует. Перезаписать?'
,'Внимание!', MB_YESNO + MB_ICONQUESTION + MB_APPLMODAL);
if Res <> IDYES then Exit; end;
//Попытка запустить MS Word. try
wdApp := CreateOleObject('Word.Application'); except
MessageBox(0, 'Не удалось запустить MS Word. Действие отменено.'
,'Внимание!', MB_OK + MB_ICONERROR + MB_APPLMODAL);
Exit;
end;
50
//Делаем видимым окно MS Word. На постоянной основе или на время отладки.
wdApp.Visible := True;
//Создаём новый документ. wdDoc := wdApp.Documents.Add;
//На случай, если очень много данных и wdApp.Visible := True - тогда
//для ускорения работы отключаем перерисовку окна MS Word. wdApp.ScreenUpdating := False;
try
wdRng := wdDoc.Content; //Диапазон, охватывающий всё содержимое документа.
//Параграф 1. Заголовок отчёта.
//Заголовок отчёта и перевод строки. wdRng.InsertAfter('Отчёт'#13#10);
wdRng.InsertAfter('Отбор литературы по заданным критериям'#13#10);
//Выравнивание по центру. wdRng.ParagraphFormat.Alignment := wdAlignParagraphCenter;
//Параметры шрифта.
wdRng.Font.Name := 'Times New Roman'; wdRng.Font.Bold := True; wdRng.Font.Size := 14;
//Параграф 2. Общие сведения.
//Формируем диапазон нового параграфа непосредственно за текущим диапазоном.
wdRng.Start := wdRng.End; wdRng.InsertAfter(#13#10); D := Now;
wdRng.InsertAfter('Дата: ' + FormatDateTime('dd.mm.yyyy', D) +
#13#10);
wdRng.InsertAfter('Время: ' + FormatDateTime('hh:nn:ss', D) +
#13#10);
wdRng.InsertAfter(#13#10); wdRng.InsertAfter('Параметры отбора литературы');
wdRng.InsertAfter(#13#10);
wdRng.InsertAfter('Параметр 1: '+ComboBox1.Text+' |
Значение: |
'+Edit1.Text); |
|
wdRng.InsertAfter(#13#10); |
|
wdRng.InsertAfter('Параметр 2: '+ComboBox2.Text+' |
Значение: |
'+Edit2.Text); |
|
wdRng.InsertAfter(#13#10); |
|
//Сброс параметров параграфа. wdRng.ParagraphFormat.Reset;
//Выравнивание по левому краю. wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft;
//Отступ слева на 2 сантиметра. Размер отступа задаётся в типографских
//единицах - в пунктах. 1 пункт = 0.035 сантиметра.
//При записи в поле LeftIndent, отступ отсчитывается от левого поля на странице.
//wdRng.ParagraphFormat.LeftIndent := 2 / 0.035;
//Параметры шрифта.
wdRng.Font.Reset; //Сброс параметров шрифта. wdRng.Font.Size := 12;
wdRng.Font.Bold := True;
//Параграф 3. Заголовок таблицы.
wdRng.Start := wdRng.End; wdRng.InsertAfter(#13#10);
wdRng.InsertAfter('Таблица 1 - Отбор литературы.'#13#10); wdRng.ParagraphFormat.Reset;
wdRng.Font.Reset; wdRng.Font.Size := 12; wdRng.Font.Bold := False;
//Параграф 4. Таблица.
51
if not DM.OtborQuery1.Active then DM.OtborQuery1.Open;
wdRng.Start := wdRng.End;
//Добавляем таблицу MS Word. Пока создаём таблицу с двумя строками.
wdTable := wdDoc.Tables.Add(wdRng.Characters.Last, 2, DM.OtborQuery1.Fields.Count);
//Параметры линий таблицы. wdTable.Borders.InsideLineStyle := wdLineStyleSingle; wdTable.Borders.OutsideLineStyle := wdLineStyleSingle;
//Сброс параметров параграфа. wdRng.ParagraphFormat.Reset;
//Выравнивание всей таблицы - по левому краю. wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft;
//Оформление шапки.
wdRng := wdTable.Rows.Item(1).Range; //Диапазон первой строки. wdRng.ParagraphFormat.Alignment := wdAlignParagraphCenter; wdRng.Font.Size := 10;
wdRng.Font.Bold := True;
//Оформление первой строки данных - это вторая строка в таблице.
//При добавлении следующих строк, их оформление будет копироваться с этой строки.
wdRng := wdTable.Rows.Item(2).Range; //Диапазон второй строки. wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft; wdRng.Font.Size := 10;
wdRng.Font.Bold := False;
//Записываем шапку таблицы.
//wdTable.Cell(1,1).Range.Text := '№ п/п';
{wdTable.Cell(1,2).Range.Text := 'УДК'; wdTable.Cell(1,3).Range.Text := 'Вид'; wdTable.Cell(1,4).Range.Text := 'Название'; wdTable.Cell(1,5).Range.Text := 'Автор'; wdTable.Cell(1,6).Range.Text := 'Год'; wdTable.Cell(1,7).Range.Text := 'Количество'; } wdTable.Cell(1,1).Range.Text := 'УДК'; wdTable.Cell(1,2).Range.Text := 'Вид'; wdTable.Cell(1,3).Range.Text := 'Название'; wdTable.Cell(1,4).Range.Text := 'Автор'; wdTable.Cell(1,5).Range.Text := 'Год'; wdTable.Cell(1,6).Range.Text := 'Количество'; //Записываем данные таблицы.
DM.OtborQuery1.DisableControls;
Bm := DM.OtborQuery1.GetBookMark; DM.OtborQuery1.First;
i := 1; //Текущая строка в таблице MS Word. while not DM.OtborQuery1.Eof do begin
Inc(i);
//Если требуется, добавляем новую строку в конец таблицы. if i > 2 then wdTable.Rows.Add;
//Записываем данные в строку таблицы MS Word. for j := 0 to DM.OtborQuery1.Fields.Count - 2 do
wdTable.Cell(i, j + 1).Range.Text := DM.OtborQuery1.Fields[j].AsString;
DM.OtborQuery1.Next;
end;
DM.OtborQuery1.GotoBookMark(Bm);
DM.OtborQuery1.EnableControls;
finally
//Включение перерисовки окна MS Word. В случае, если wdApp.Visible := True.
wdApp.ScreenUpdating := True; end;
wdApp.DisplayAlerts := False; //Отключаем режим показа предупреждений.
try
wdDoc.SaveAs(FileName:=Sd.FileName); //Запись документа в файл.
finally
wdApp.DisplayAlerts := True; //Включаем режим показа предупреждений.
end;
//Закрываем документ.