有一个关于Delphi和组件RichView的问题。
如何检查RichView是否为空?
我需要知道用户是否在RichView组件中键入了某些内容或插入了任何内容。
谢谢!
答案 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无法保存表单。