如何在Delphi上检查RichView是否为空?
A我有一个关于Delphi和组件RichView的问题 如何检查RichView是否为空? 我需要知道用户是否在RichView组件中键入了什么或插入了什么如何在Delphi上检查RichView是否为空?,delphi,delphi-7,Delphi,Delphi 7,A我有一个关于Delphi和组件RichView的问题 如何检查RichView是否为空? 我需要知道用户是否在RichView组件中键入了什么或插入了什么 谢谢大家! 试试这个功能,我希望它能帮助你: function TRichViewEditFrame.isEmpty: boolean; var AStream: TMemoryStream; begin Result := false; if TRichViewEdit(RichEditEntete).ItemCount = 0
谢谢大家! 试试这个功能,我希望它能帮助你:
function TRichViewEditFrame.isEmpty: boolean;
var AStream: TMemoryStream;
begin
Result := false;
if TRichViewEdit(RichEditEntete).ItemCount = 0 then exit;
AStream:= TMemoryStream.Create;
try
TRichViewEdit(RichEditEntete).SaveTextToStream('', AStream, 0, false, true);
AStream.Position:= 0;
Result:= AStream.Size = 0;
finally
AStream.free;
end;
end;
尝试此功能,我希望这将有助于您:
function TRichViewEditFrame.isEmpty: boolean;
var AStream: TMemoryStream;
begin
Result := false;
if TRichViewEdit(RichEditEntete).ItemCount = 0 then exit;
AStream:= TMemoryStream.Create;
try
TRichViewEdit(RichEditEntete).SaveTextToStream('', AStream, 0, false, true);
AStream.Position:= 0;
Result:= AStream.Size = 0;
finally
AStream.free;
end;
end;
谢谢大家,@BMS回答对我有用 我必须使你的函数适应我的程序,因为函数ItemCount对我不起作用,所以我将函数改为这个,并且工作得很好:
function MyProgram.isEmpty(RView: TbsRichView): boolean;
var AStream: TMemoryStream;
begin
AStream:= TMemoryStream.Create;
try
RView.Editor.SaveTextToStream('', AStream, 0, false, true);
AStream.Position:= 0;
Result:= AStream.Size = 0;
finally
AStream.free;
end;
end;
在这个函数中,我只是检查结果是否为0。如果它等于0,则表示用户没有键入任何内容,也没有删除以前写入的内容。因此我可以检查RichText是否为空。在我的程序中,RichText不能为空以保存表单。谢谢大家,@BMS-answer为我工作 我必须使你的函数适应我的程序,因为函数ItemCount对我不起作用,所以我将函数改为这个,并且工作得很好:
function MyProgram.isEmpty(RView: TbsRichView): boolean;
var AStream: TMemoryStream;
begin
AStream:= TMemoryStream.Create;
try
RView.Editor.SaveTextToStream('', AStream, 0, false, true);
AStream.Position:= 0;
Result:= AStream.Size = 0;
finally
AStream.free;
end;
end;
在这个函数中,我只是检查结果是否为0。如果它等于0,则表示用户没有键入任何内容,也没有删除以前写入的内容。因此我可以检查RichText是否为空。在我的程序中,RichText不能为空以保存表单。您可以尝试使用以下方法:
这是因为它以自己的方式处理消息,所以我相信(没有测试,只是检查了源代码),这就足够了(有rvflCanProcessGetText标志会阻止获取文本长度,但在创建控件时会包含该标志)。您可以尝试使用以下方法:
这是因为它以自己的方式处理消息,所以我相信(还没有测试,只是检查了源代码),这就足够了(有rvflCanProcessGetText标志会阻止获取文本长度,但在创建控件时会包括该标志).对此我不确定,但我想您可以通过检查Rich View的LineCount和ObjectCount属性的值来实现这一点。只需使用
修改的属性。@Tom,但是如果用户输入了某个内容并在之后将其删除怎么办?或者程序开始时控件不是空的?谢谢@Victoria的“挑战”。我故意做空,因为我第一次想看看OP是否对更好的解决方案感兴趣。最重要的问题是如何检查RichView是否为空?可以通过将插入符号移动到文档末尾并检查偏移量来检测。这与可怕的流线型练习的目的相同,只是简单得多。添加和删除将触发“错误”检查修改标志,我承认,我个人想检查修改。Modified
标志将正确检测添加(如键入内容或插入任何内容)。哦,还有一个小细节,如果加载文件会触发Modified
标志,则可以将其重置,加载后。我不确定这一点,但我想您可以通过检查Rich视图的LineCount和ObjectCount属性的值来实现。只需使用Modified
属性。@Tom,但是如果用户输入某个内容并在之后将其删除,该怎么办?或者程序开始时控件不是空的?谢谢@Victoria的“挑战”。我故意做空,因为我第一次想看看OP是否对更好的解决方案感兴趣。最重要的问题是如何检查RichView是否为空?可以通过将插入符号移动到文档末尾并检查偏移量来检测。这与可怕的流线型练习的目的相同,只是简单得多。添加和删除将触发“错误”检查修改标志,我承认,我个人想检查修改。Modified
标志将正确检测添加(如键入内容或插入任何内容)。哦,还有一个小细节,如果加载文件会触发Modified
标志,则可以在加载后重置。为什么代码如此笨拙?只需使用Modified
属性。为什么代码如此笨拙?只需使用Modified
属性。那么GetTextLen=0
没有吗?@Victoria,我做了一个测试,但不幸的是它对我不起作用。这个函数在我的程序中总是返回零。所以GetTextLen=0
没有?Victoria,我做了一个测试,但不幸的是它对我不起作用。这个函数在我的程序中总是返回零。