如何在Delphi上检查RichView是否为空?

时间:2018-05-23 14:20:55

标签: delphi delphi-7

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

如何检查RichView是否为空?

我需要知道用户是否在RichView组件中键入了某些内容或插入了任何内容。

谢谢!

3 个答案:

答案 0 :(得分:4)

您可以尝试使用GetTextLen方法:

function IsRichViewEmpty(Control: TCustomRichView): Boolean;
begin
  Result := Control.GetTextLen = 0;
end;

这是因为TRichView以自己的方式处理WM_GETTEXTLENGTH消息,所以我相信(尚未测试,只检查了源代码),这已经足够了(有 rvflCanProcessGetText 标志会阻止获取文本长度,但在创建TRichView控件时包含该文本长度。

答案 1 :(得分: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;

答案 2 :(得分:0)

谢谢大家,@ 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无法保存表单。