Q
QianQi
Unregistered / Unconfirmed
GUEST, unregistred user!
1.关于记录的修改:如果窗体上有一个Table,一个DataSource,一个DBRichEdit.设置相应的属性后将表格中的Memo字段导入DBRichEdit.
此时再加一个DBNavigator,可以浏览表格中的所有memo字段了.如果要修改memo字段,可以单击DBNavigator上的修改按钮,将Table设置为修改状态,然后进行修改,最后Post就可以了.
这种状态是在知道将要进行修改的情况下:Table1.Edit
对数据进行修改
Table1.Post
现在memo字段以DBTreeView形式表现出来,用户随机浏览memo字段,随机进行修改,
此时如何将用户的修改进行保存.我想具体问题是否是如下:怎样获取用户正在浏览的记录,进行监视.
如果用户修改了DBRichEdit中memo字段的内容,就进行修改的保存,否则不操作.
2.还有一个问题请教:当改变的不是memo的内容,而是其格式,例如改变了字体,字大小,粗体等格式.该如何进行保存.
我曾经试着改变了一个记录的memo的格式,但其它记录的memo的格式也作相应改变,该如何是好?
3.还有一个问题请教:为什么我的超文本编辑器的对齐,字体格式等功能不能自适应.
例如,编辑器中有三行内容,光标在第一行,点击工具条的居中图标,此时第一行内容居中了,
但是当我将光标移到第二行时,还是居中图标是馅下去的,按照我的意思应该居左图标馅下去,就是所谓的不能自适应.
我已将三个对齐图标的grouped属性都改为True了.
4."$"符号到底是什么作用,例如:$000F、 $1101等。
5.看以下代码:
procedure TAddForm.AddRecord;
var
bs:TBlobStream;
begin
bs:=nil;
try
DM1.Table1.Insert;
DM1.Table1['Category']:=AddCategory.Text;
DM1.Table1['Author']:=AddName.Text;
DM1.Table1['Title']:=AddTitle.Text;
bs:=TBlobStream.Create(TBlobField(DM1.Table1.FieldByName('Content')),bmWrite);
AddRE.PlainText:=False;
AddRE.Lines.SaveToStream(bs);
DM1.Table1.Post;
finally
bs.Free;
end;
end;
第一次能添加成功,但是当进行第二次添加是会报错"BLOB not open",光标指向bs:=TBlobStream.Create(TBlobField(DM1.Table1.FieldByName('Content')),bmWrite);
从Delphi帮助中找到如下:
To use a BLOB stream, create an instance of TBlobStream,
use the methods of the stream to read or write the data,
and then free the BLOB stream.
Do not use the same instance of TBlobStream to access data from more than one record.
Instead, create a new TBlobStream object every time you need to read or write BLOB data on a new record.
意思是不要企图用相同的TBlobStream访问多条记录,每次要创建一个新的TBlobStream对象。
我就搞不懂了,上面是一个记录添加的过程,按理说每次调用完后,bs被Free了,
然后第二次不就是一个新的TBlobStream对象了吗,为什么老是"BLOB not open",请各位高手指教。
此时再加一个DBNavigator,可以浏览表格中的所有memo字段了.如果要修改memo字段,可以单击DBNavigator上的修改按钮,将Table设置为修改状态,然后进行修改,最后Post就可以了.
这种状态是在知道将要进行修改的情况下:Table1.Edit
对数据进行修改
Table1.Post
现在memo字段以DBTreeView形式表现出来,用户随机浏览memo字段,随机进行修改,
此时如何将用户的修改进行保存.我想具体问题是否是如下:怎样获取用户正在浏览的记录,进行监视.
如果用户修改了DBRichEdit中memo字段的内容,就进行修改的保存,否则不操作.
2.还有一个问题请教:当改变的不是memo的内容,而是其格式,例如改变了字体,字大小,粗体等格式.该如何进行保存.
我曾经试着改变了一个记录的memo的格式,但其它记录的memo的格式也作相应改变,该如何是好?
3.还有一个问题请教:为什么我的超文本编辑器的对齐,字体格式等功能不能自适应.
例如,编辑器中有三行内容,光标在第一行,点击工具条的居中图标,此时第一行内容居中了,
但是当我将光标移到第二行时,还是居中图标是馅下去的,按照我的意思应该居左图标馅下去,就是所谓的不能自适应.
我已将三个对齐图标的grouped属性都改为True了.
4."$"符号到底是什么作用,例如:$000F、 $1101等。
5.看以下代码:
procedure TAddForm.AddRecord;
var
bs:TBlobStream;
begin
bs:=nil;
try
DM1.Table1.Insert;
DM1.Table1['Category']:=AddCategory.Text;
DM1.Table1['Author']:=AddName.Text;
DM1.Table1['Title']:=AddTitle.Text;
bs:=TBlobStream.Create(TBlobField(DM1.Table1.FieldByName('Content')),bmWrite);
AddRE.PlainText:=False;
AddRE.Lines.SaveToStream(bs);
DM1.Table1.Post;
finally
bs.Free;
end;
end;
第一次能添加成功,但是当进行第二次添加是会报错"BLOB not open",光标指向bs:=TBlobStream.Create(TBlobField(DM1.Table1.FieldByName('Content')),bmWrite);
从Delphi帮助中找到如下:
To use a BLOB stream, create an instance of TBlobStream,
use the methods of the stream to read or write the data,
and then free the BLOB stream.
Do not use the same instance of TBlobStream to access data from more than one record.
Instead, create a new TBlobStream object every time you need to read or write BLOB data on a new record.
意思是不要企图用相同的TBlobStream访问多条记录,每次要创建一个新的TBlobStream对象。
我就搞不懂了,上面是一个记录添加的过程,按理说每次调用完后,bs被Free了,
然后第二次不就是一个新的TBlobStream对象了吗,为什么老是"BLOB not open",请各位高手指教。