比较少见的问题——哪位高手知道从一个窗体用剪切板粘贴到另一个窗体的rxrichedit中??? (25分)

  • 主题发起人 主题发起人 小欧
  • 开始时间 开始时间

小欧

Unregistered / Unconfirmed
GUEST, unregistred user!
if not fieldbyname('题图').IsNull then
begin
stream1:=CreateBlobStream(fieldbyname('题图'), bmRead);
Pict := TPicture.Create;
try
Pict.LoadFromstream(stream1);
Clipboard.Assign(Pict);
chajuan.RxRichEdit1.PasteFromClipboard;
finally
Pict.Free;
end;
‘题图’是access库中的一个‘ole对象’类型的字段,存入图片时用的是
TBlobField(FieldbyName('题图')).LoadFromStream(MS3);已成功存入,
现在想将这个字段加载到rxrichedit中。上面这段代码编译时报错——
Pict.LoadFromstream(stream1);这句的loadfromstream未定义!!!!
这个用法不对吗?????????
 
picture没有这个方法
 
如果是bmp图,将TPicture换成TBitmap
如果是jpg图,将TPicture换成TJpegImage
 
stream1:=CreateBlobStream(fieldbyname('题图'), bmRead);
bitmap := TBitmap.Create;
try
bitmap.LoadFromstream(stream1);
Clipboard.Assign(bitmap);
chajuan.RxRichEdit1.PasteFromClipboard;
finally
bitmap.Free;
end;
改成这样,编译时没报错,运行时,图片显不出来,rxrichedit1中没有图片!!!!!!
 
RXrichedit只能从openpicturedialog中加入图片吗??
不能从数据库中读入???????????

我的数据库中的图片都是通过stream方式存入——
TBlobField(FieldbyName('题图')).LoadFromStream(MS3);

难道就不能以stream方式读出这个字段到rxrichedit中/?????
 
保存——
procedure Txgshijuan.SpeedButton2Click(Sender: TObject);
var MS3: TMemoryStream;
begin
MS3:=TMemoryStream.create;
rxrichedit1.Lines.SaveToStream(MS3);
MS3.Position:=0;
with datamodule1.xtjieguoTable do
begin
open;
insert;
TBlobField(FieldbyName('题图')).LoadFromStream(MS3);
post;
end;
end;
读出——
procedure Txgshijuan.SpeedButton3Click(Sender: TObject);
var stream1:TStream;
begin
with datamodule1.xtjieguoTable do
begin
open;
stream1:=CreateBlobStream(fieldbyname('题图'), bmRead);
chajuan.RxRichEdit1.Lines.LoadFromStream(stream1);
end;
end;
这么写能读出!

现在的问题是我怎么将读出的内容放到指定位置????
比如,从试题库中读出一道题,这道题可能含有图片,如果rxrichedit1为空白就能把它
加进去,并显示图片。但是如果在这道题前已经有内容,比如在第3题后加入一道带图的题,就不能正常显示,全是乱码,而且其他的能容全没了。
真是奇怪!!!!!
 
简单的说,就是怎么在当前行中读入图片
RxRichEdit1.Lines.LoadFromStream(stream1);
不行,它使整个rxricheditedit1.lines都为stream内容了
 
procedure TForm1.Button1Click(Sender: TObject);
var
Stream : TMemoryStream;
Bitmap : TBitmap;
begin
Stream := TMemoryStream.Create ;
Bitmap := TBitmap.Create ;
try
Stream.LoadFromFile('F:/athena.bmp');
Bitmap.LoadFromStream(Stream);
ClipBoard.Assign(Bitmap);
rxrichEdit1.SetSelection(9,9,True);//在第九个字符处插入图片
rxRichEdit1.PasteFromClipboard ;
finally
Stream.Free ;
Bitmap.Free;
end;
end;
 
我是这样写的——
chajuan.rxrichedit1.lines.append(inttostr(i)+'.'+fieldbyname('内容').asstring);
chajuan.rxrichedit2.lines.append(inttostr(i)+'.'+fieldbyname('答案').asstring);
if not fieldbyname('题图').IsNull then
begin
stream1:=CreateBlobStream(fieldbyname('题图'), bmRead);
bitmap := Tbitmap.Create;
try
bitmap.LoadFromStream(stream1);
Clipboard.Assign(bitmap);
chajuan.RxRichEdit1.seetSelection(50,50,True);//在第九个字符处插入图片
chajuan.RxRichEdit1.PasteFromClipboard;
finally
bitmap.Free;
end;
end;
可运行时还是不能显示图片!!!!!!!!!
 
是不是和这句有关???
chajuan.rxrichedit1.lines.append(inttostr(i)+'.'+fieldbyname('内容').asstring);
 
下个断点在单步执行(f7)
Clipboard.Assign(bitmap)
以后你看一下剪贴半上有没有图象
我感觉是图象没有读出来。
 
我用一个image1,
Image1.Picture.Bitmap.LoadFromStream(stream1);这样能在image1中显出图片
 
用的是ado还是bde连接?
 
又测试了一次我的可以,不知道是不是rxlib的问题。我的是rx2。75
 
ado

是不是剪切板只能在当前窗体中的rxrichedit中好使??
我是向另一个窗体的rxrichedit粘贴
 
我用的也是2.75阿

哪我可不可以先将数据库中读出的图片保存为文件,然后用你的方法呢????
 
ado+access,图片字段为‘ole对象’类型

存入——
MS3:=TMemoryStream.create; /////////////////存入题图
Image1.Picture.Bitmap.SaveToStream(MS3);
MS3.Position:=0;
TBlobField(FieldbyName('题图')).LoadFromStream(MS3);

能成功存入,并且用dbimage也能正常显示
现在问题是不能将它加载到rxrichedit中

郁闷!!!!!!!!!!!
 
我找到问题的所在了
我在当前窗体中加了一个rxrichedit1,并在这个rxrichedit1中显示,这样好使
可是怎么才能使clipboard到别的窗体中也好使???
 
比如,在form1中对form2中的rxrichedit1使用clipboard
如何写呢?? 是不是先得限制一下clipboard??????????
 
realLearing,在线吗,怎么不回贴啦?
 
后退
顶部