如题,我有一个实例,可以完成把word文档存到sql中,和从sql中取出,但是怎么才能做到双击dbgrid就打开选中的word文档,然后编辑,最后保存呢,想不几天想不出来!
要做的确实效果如下delphi的控件如下:最后看看把word文档存到sql中,和从sql中取出的代码:unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Grids, DBGrids, ComCtrls;type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
Button1: TButton;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
ado: TADOQuery;
SaveDialog1: TSaveDialog;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var fn:file;fs:integer;
begin
if opendialog1.Execute then
begin
AssignFile(fn,opendialog1.FileName);
Reset(fn);
fs:=FileSize(fn);
CloseFile(fn);
ado.Append;
ado.FieldByName('文件名').AsString:=ExtractFileName(opendialog1.FileName);
ado.FieldByName('文件大小').AsInteger:=fs;
TBlobField(ado.FieldByName('数据(不显示)')).LoadFromFile(opendialog1.FileName);
ado.Post;
showmessage('导入完成');
end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
savedialog1.FileName:=ado.FieldByName('文件名').AsString;
if savedialog1.Execute then
begin
TBlobField(ado.FieldByName('数据(不显示)')).SaveToFile(savedialog1.FileName);
showmessage('导出完成');
end;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
if ado.Active then ado.Delete;
end;procedure TForm1.Button4Click(Sender: TObject);
begin
if ado.Active then
begin
ado.Active:=false;
button1.Enabled:=false;
button2.Enabled:=false;
button3.Enabled:=false;
end else
begin
ado.Active:=true;
button1.Enabled:=true;
button2.Enabled:=true;
button3.Enabled:=true;
end;
end;end.现在的问题是,要在以下面加什么样的代码,才能实现:
双击dbgrid就从sql中打开选中的word文档,然后编辑,关闭时自动保存到sql中!procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
??????????????????
end;
要做的确实效果如下delphi的控件如下:最后看看把word文档存到sql中,和从sql中取出的代码:unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Grids, DBGrids, ComCtrls;type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
Button1: TButton;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
ado: TADOQuery;
SaveDialog1: TSaveDialog;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var fn:file;fs:integer;
begin
if opendialog1.Execute then
begin
AssignFile(fn,opendialog1.FileName);
Reset(fn);
fs:=FileSize(fn);
CloseFile(fn);
ado.Append;
ado.FieldByName('文件名').AsString:=ExtractFileName(opendialog1.FileName);
ado.FieldByName('文件大小').AsInteger:=fs;
TBlobField(ado.FieldByName('数据(不显示)')).LoadFromFile(opendialog1.FileName);
ado.Post;
showmessage('导入完成');
end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
savedialog1.FileName:=ado.FieldByName('文件名').AsString;
if savedialog1.Execute then
begin
TBlobField(ado.FieldByName('数据(不显示)')).SaveToFile(savedialog1.FileName);
showmessage('导出完成');
end;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
if ado.Active then ado.Delete;
end;procedure TForm1.Button4Click(Sender: TObject);
begin
if ado.Active then
begin
ado.Active:=false;
button1.Enabled:=false;
button2.Enabled:=false;
button3.Enabled:=false;
end else
begin
ado.Active:=true;
button1.Enabled:=true;
button2.Enabled:=true;
button3.Enabled:=true;
end;
end;end.现在的问题是,要在以下面加什么样的代码,才能实现:
双击dbgrid就从sql中打开选中的word文档,然后编辑,关闭时自动保存到sql中!procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
??????????????????
end;
但是生成的控件使用的前提是机器上必须装了OFFICE。