如何在Delphi上检查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

A我有一个关于Delphi和组件RichView的问题

如何检查RichView是否为空?

我需要知道用户是否在RichView组件中键入了什么或插入了什么


谢谢大家!

试试这个功能,我希望它能帮助你:

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,我做了一个测试,但不幸的是它对我不起作用。这个函数在我的程序中总是返回零。