150分来解决一个问题也没有人理吗??这个问题应该没这么复杂吧!(关于试题库!)(50分)

  • 主题发起人 主题发起人 zrj
  • 开始时间 开始时间
Z

zrj

Unregistered / Unconfirmed
GUEST, unregistred user!
悬赏200大洋了!!!!!!!!!!!!!


气死我了!我给了100分来回答问题没有人反应,又加了50还是没有人要,这个问题应该不是太难吧!
我作的是一个试题库,问题是这样的:我已经把试题输入blob字段,question,把问题附带的
图片放入blob字段,pic,从试题库中抽题实现图文混排排版时我想把它输入到word里面
可是老是出错,思路是这样的
把dbrichedit1的内容.select all;copytoclipboard;
worddocument.getlastpaste;
思路就是这样子的,可是老是有时候正常,有时候不正常,各位有没有更好的办法阿!!
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=502761拿剩下的150分!
另外这个问题解决者,本人再送50,这样可是200分了!!!!


悬赏200大洋了!!!!!!!!!!!!!
思路1:用网页形式抽题(主要是实现图文混排).
思路2:用支持jpg的richedit,
思路3:先创建流a,每个题都生成流b,然后加a流到b流中,最后把流a存成word文件然后
用word打开.
思路4.这个就是我用的,把blob字段内容放入dbrichedit,然后copy到剪贴板,然后
worddocument1.paragraph.lastpaste.
不过这个方法为啥抽题抽出几道以后就不行了,有时候页能完全正常,

(提示信息:命令失败)


言者无罪,请大家看看吧!!作过题库的人很多了吧!
看看吧!!

 
是不是剪贴板的内容没完全清掉;
 
同意楼上的
 
干吗要通过剪贴板呢?直接塞进去不行吗?
 
to 左轻侯:
给点代码吧@急阿,大哥,快救命了!
 
现成的代码我也没有,你可以参考VBA
我在VBA中找到了在word中添加图形的代码,如果你了解VBA的用法是很容易理解的。

AddShape 方法


本方法创建一个自选图形并返回一个 Shape 对象,该对象代表新增的自选图形。

语法

expression.AddShape(Type, Left, Top, Width, Height, Anchor)

expression 必需。该表达式返回一个 Shapes 集合。

Type Long 类型,必需。指定要创建的自选图形的类型。其值可取任意的
MsoAutoShapeType 常量。

Left, Top Single 类型,必需。自选图形边框左上角与锁定标记的相对位置
(以磅为单位)。

Width, Height Single 类型,必需。自选图形边框的宽度和高度,以磅为单位。

Anchor Variant 类型,可选。Range 对象,代表该自选图形所连接的文本。
如果指定了 Anchor,则锁定标记将出现在锁定区域第一段的开头。如果忽略
此参数,则 Word 将自动选定锁定区域,而自选图形将参照页面的上边界和
左边界定位。

说明

要改变所添加的自选图形的类型,可为其设置 AutoShapeType 属性。

AddShape 方法示例

本示例向新文档添加一个矩形。

Set myDocument = Documents.Add
myDocument.Shapes.AddShape msoShapeRectangle, 50, 50, 100, 200

你再给这个返回的图形对象赋值,应该不是大问题吧。


 
不好意思阿,本人没有用过vba,只是知道用server控件板上的word控件,况且时间紧迫.
我也没有可能先懂vba,再学这个东西了,5.10就要交设计了!!!!我想能不能修改我的程序
使这个抽题成功,要不然大家费点心思写出点代码,以后也好给初学者参考,
我查了以前关与blob,word和图文混排的一直没有结果.


请大家帮忙了!我出了200大洋了,不够还可以再加的!!!!!
procedure Tautoselectform.insertword;
var Template,NewTemplate,ItemIndex:OleVariant;
begin
try
Template := EmptyParam;
NewTemplate := True;
ItemIndex := 1;
try
Wordapplication.Connect;
except
MessageDlg('请先安装Microsoft Word再运行本软件', mtError, [mbOk], 0);
result:=false;
Abort;
end;
Wordapplication.Visible:=true;
WordApplication.Caption :=title.text;
Template := EmptyParam;
NewTemplate := False;
WordApplication.Documents.Add(Template, NewTemplate);
WordDocument.ConnectTo(WordApplication.Documents.Item(ItemIndex));
WordApplication.Documents.Add(Template, NewTemplate);
WordDocument1.ConnectTo(WordApplication.Documents.Item(ItemIndex));
WordApplication.Options.CheckSpellingAsYouType := False;
WordApplication.Options.CheckGrammarAsYouType := False;
WordDocument1.Range.InsertAfter(' ' + #13);
except
on E: Exception do
begin
ShowMessage(E.Message);
WordApplication.Disconnect;
end;
end;
quedit.SelectAll;//quedit为dbrichedit控件
quedit.CopyToClipboard;
WordDocument.Sentences.Last.Paste;
clipboard.clear;
WordDocument.Range.InsertAfter(' ' + #13);
anedit.SelectAll;//anedit为dbrichedit控件
anedit.CopyToClipboard;
WordDocument1.Sentences.Last.Paste;
clipboard.clear;
WordDocument1.Range.InsertAfter(' ' + #13);
if dm.questionTable.FieldByName('pic').asstring<>'无' then
begin
WordDocument.Range.InsertAfter(' ' + #13);
WordDocument.Range.InsertAfter(' ' + #13);
qupic.CopyToClipboard;//qupic为dbimage控件
WordDocument.Sentences.Last.Paste;
clipboard.clear;
end;
if dm.questionTable.FieldByName('anpic').asstring<>'无' then
begin
WordDocument.Range.InsertAfter(' ' + #13);
WordDocument.Range.InsertAfter(' ' + #13);
anpic.CopyToClipboard;//anpic为dbimage控件
WordDocument1.Sentences.Last.Paste;
clipboard.clear;
WordDocument1.Range.InsertAfter(' ' + #13);
end;

end;






悬赏200分了!@!!!!!!!!!!!!!!!!!!!!!!!
 
建议你用替换的方法好些,或者用bookmark。
var
wordapp:olevariant;
worddoc:olevariant;
FileName:string;

var
findtext1,replace1 matchcase, matchwholeword, matchwildcards, matchsoundslike,
matchallwordforms, forward, wrap, format, replace: olevariant;
begin
wordapp:=CreateOleObject('word.Application');
WordDoc:=CreateOleObject('Word.Document');
filename:='d:/mail/baoguo.doc';
wordApp.Visible:=true; //以可见方式打开
WordDoc:=WordApp.Documents.Add(filename,false);
findtext1:='A';
matchcase := false;
matchwholeword := true;
matchwildcards := false;
matchsoundslike := false;
matchallwordforms := false;
forward := true;
wrap := wdfindcontinue;
format := false;
replacewith1 :=edit1.text;
replace := true;
worddoc.range.find.execute( findtext1, matchcase, matchwholeword,
matchwildcards, matchsoundslike, matchallwordforms, forward,
wrap, format, replacewith1, replace );
 
这个替换对我有啥帮助呢???我还是不能了解阿,
问题关键:1.打开两个word文档,添加数据,这个我用上边代码也正常了,
2.从blob字段取问题内容,显示到word文档1里面,如果这个问题带图片,则从blob
的image字段取图片添加的word文档1里面
3.从blob字段取答案内容,显示到文档2中,如果答案带图片,从blob
的image1字段取图片添加的word文档2里面
4 while not table1.eof then
table1.next
继续抽题添加进去.

先解决这个问题的本人再给100大洋了!,已经300了!!!

 
我查资料,剪贴板有五种格式,cf_text,cf_picture,cf_bitmap,cf_object,cf_metafile,
我的dbimage格式是jpg的文件,而且每次都是把文字copytoclipbord,然后pastefromclipbord
再把dbimage,copytoclipbord,pastefromclipbord后再把文字格式的blob字段copytoclipbord
然后再pastefromclipbord 提示!:::无效命令!!
我想问题就在这儿,个位想想这儿的办法也可以阿,
这个应该简单一点,我要求不高,数据显示到word里就可以
排版可以用人工的@
 
try:
DBImg.CopyToClipboard;
WordDocument.Sentences.Last.Paste;
爽了吧,呵呵!
 
呵呵,忘了说,文字也一样。
 
可怜的孩子,我有图文混排的VBA代码,不过还有些BUG,我现在没有时间修改了,你拿去
作作参考吧,我可以发到你的邮箱。不过新版的DFW好像看不到你的邮件地址
 
谢谢各位,我的另外150分还有阿,大家自己去阿,我马上要结束这些问题了,
今天中午我连打包程序一并做好了!谢谢各位支持,没有分的就自己去我的另
两个问题哦,我那两个问题是空的,到了马上加分!
谢谢
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部