📄 mc_bgswd.~pas
字号:
unit MC_BGSWD;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, StdCtrls, DBCtrls, Mask, ExtCtrls, ComCtrls, Buttons,
Word97, OleServer,CLipbrd;
type
TBGSWD = class(TForm)
Table1: TTable;
Table1BDEDesigner: TIntegerField;
Table1BDEDesigner2: TStringField;
Table1BDEDesigner3: TStringField;
Table1BDEDesigner4: TDateTimeField;
Table1BDEDesigner5: TMemoField;
DataSource1: TDataSource;
GroupBox1: TGroupBox;
DBMemo1: TDBMemo;
Panel1: TPanel;
DBEdit2: TDBEdit;
Label2: TLabel;
DBEdit3: TDBEdit;
Label3: TLabel;
Label1: TLabel;
DateTimePicker1: TDateTimePicker;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
DBNavigator1: TDBNavigator;
Query1: TQuery;
WordApplication1: TWordApplication;
WordDocument1: TWordDocument;
BitBtn5: TBitBtn;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
procedure BitBtn4Click(Sender: TObject);
procedure DBEdit2KeyPress(Sender: TObject; var Key: Char);
procedure BitBtn5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
BGSWD: TBGSWD;
implementation
uses MC_WDLL, MC_MainForm;
{$R *.DFM}
procedure TBGSWD.FormShow(Sender: TObject); //判断操作员操作权限
begin
If Table1.RecordCount <> 0 Then
begin
DateTimePicker1.DateTime:=Table1.FieldByName('起草日期').AsDateTime;
end;
if MainForm.Query1.Locate('使用选项','办公室文档管理',[loCaseInsensitive]) then
begin
if MainForm.Query1.FieldByName('读写').AsString='读' then
begin
BitBtn1.Enabled:=False;
BitBtn2.Enabled:=False;
BitBtn3.Enabled:=False;
end;
end;
end;
procedure TBGSWD.BitBtn3Click(Sender: TObject); //删除文档
begin
If Table1.RecordCount <> 0 Then
if MessageDLG('是否删除选中文档?' ,mtCustom,[mbYes,mbNo],0)=mrYes then Table1.Delete;
end;
procedure TBGSWD.BitBtn1Click(Sender: TObject); //添加或保存操作
begin
if BitBtn1.Caption='添加新文档[&I]' then //添加新文档操作
begin
Table1.Append; //添加一条新记录
Query1.Close;
Query1.Open;
BitBtn1.Caption:='保存新文档[&S]';
BitBtn2.Caption:='取消保存文档[&U]';
Table1.FieldByName('文档编号').AsInteger:=Query1.Fields[0].AsInteger+1;
Panel1.Enabled:=True;
GroupBox1.Enabled:=True;
DbNavigator1.Enabled:=False;
BitBtn3.Enabled:=False;
BitBtn4.Enabled:=False;
DBEdit2.SetFocus;
End
Else //保存操作
begin
if Length(Table1.FieldByName('文档标题').AsString)=0 then //如果文档标题为空,提示
begin
ShowMessage('请输入文档标题.');
DBEdit2.SetFocus;
End
Else //保存文档添加或修改
begin
BitBtn1.Caption:='添加新文档[&I]';
BitBtn2.Caption:='编辑文档[&E]';
BitBtn3.Enabled:=True;
BitBtn4.Enabled:=True;
Panel1.Enabled:=False;
GroupBox1.Enabled:=False;
DbNavigator1.Enabled:=True;
Table1.FieldByName('起草日期').AsDateTime:=DateTimePicker1.Date;
Table1.Post; //提交保存
end;
end;
end;
procedure TBGSWD.BitBtn2Click(Sender: TObject); //编辑或取消文档
begin
if BitBtn2.Caption='编辑文档[&E]' then //编辑文档
begin
If Table1.RecordCount <> 0 Then //如果数据不为空
begin
Table1.Edit; //编辑文档
BitBtn1.Caption:='保存新文档[&S]';
BitBtn2.Caption:='取消保存文档[&U]';
Panel1.Enabled:=True;
GroupBox1.Enabled:=True;
DbNavigator1.Enabled:=False;
BitBtn3.Enabled:=False;
BitBtn4.Enabled:=False;
DBEdit2.SetFocus;
end;
End
Else //取消操作
begin
BitBtn1.Caption:='添加新文档[&I]';
BitBtn2.Caption:='编辑文档[&E]';
BitBtn3.Enabled:=True;
BitBtn4.Enabled:=True;
Panel1.Enabled:=False;
GroupBox1.Enabled:=False;
DbNavigator1.Enabled:=True;
Table1.Cancel;
end;
end;
procedure TBGSWD.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
begin
If Table1.RecordCount <> 0 Then
begin
DateTimePicker1.DateTime:=Table1.FieldByName('起草日期').AsDateTime;
end;
end;
procedure TBGSWD.BitBtn4Click(Sender: TObject); //调入浏览文档窗口
begin
If Not Assigned(WDLL) Then
begin
WDLL:=TWDLL.Create(Self);
WDLL.ShowModal;
end;
end;
procedure TBGSWD.DBEdit2KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then PerForm(WM_NEXTDLGCTL,0,0);
end;
procedure TBGSWD.BitBtn5Click(Sender: TObject); //导出文档到WORD
var TempLate,NewTemplate,ItemIndex: OLEVariant;
a,b:integer;
begin
Try
WordApplication1.Quit;
WordApplication1.Disconnect;
NewTemplate:=True;
WordApplication1.Connect;
WordApplication1.Caption:=Table1.FieldByName('文档标题').AsString;
WordApplication1.Visible:=True;
WordDocument1.Range.InsertAfter(' '+#13);
WordDocument1.Range.InsertAfter(Table1.FieldByname('文档标题').AsString+#13);
WordDocument1.Range.InsertAfter(''+#13);
For a:=0 to DBMemo1.Lines.Count-1 do
begin
WordDocument1.Range.InsertAfter((DBMemo1.Lines.Strings[a])+#13);
end;
WordDocument1.Range.InsertAfter(''+#13);
WordDocument1.Range.InsertAfter(Table1.FieldByName('起草日期').AsString+#13);
WordDocument1.Range.InsertAfter(''+#13);
WordDocument1.Range.InsertAfter(Table1.FieldByName('起草人').AsString+#13);
Except
ShowMessage('连接Word异常');
End;
end;
procedure TBGSWD.FormClose(Sender: TObject; var Action: TCloseAction);
begin
BGSWD.Release;
BGSWD:=Nil;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -