有没有办法从richedit获取RTF数据而不使用savetostream
strStream := TStringStream.Create('') ;
try
RichEdit.Lines.SaveToStream(strStream);
Text := strStream.DataString;
strStream.CleanupInstance;
finally
strStream.Free
Run Code Online (Sandbox Code Playgroud) 我创建一个新的应用程序,放在TRichedit上并将PlainText属性设置为true.然后我运行应用程序并将一些格式丰富的文本粘贴到RichEdit中.
我希望它显示为纯文本,但它显示格式的内容.
任何人都知道如何使用TRichedit作为纯文本(而不是使用备忘录:))
我有一个Richedit,允许我的用户格式化和查看我的应用程序中显示的错误消息.
我现在需要能够将文本(无格式化)导出到他们的故障单系统使用的另一个数据库.
我已经尝试了我能想到的所有PlainText组合,而且我总是得到rtf格式.
我怎样才能获得文字?
(抱歉我疯狂的英语)我想用RTF格式的Rich Edit中的所有文本,而不是变量的纯文本.我尝试使用EM_STREAMOUT将SendMessage()直接写入Rich Edit到文件,但我无法将内容保存到特定变量,例如LPWSTR.请记住,只有Win API,而不是MFC.谢谢你的帮助!
所以这是设置:
OnClick处理程序中添加Button1.Caption := RichEdit1.Text;,并将其设置Font.Charset为刚安装的输入语言的字符集(GREEK_CHARSET如果我们坚持这个例子).运行应用程序,切换到新的(希腊语)输入语言,在RichEdit中键入几个字母并按下按钮 - 按钮的标题现在有????符号而不是希腊字符.
现在,如果您将非Unicode程序的默认语言设置为希腊语(需要重新启动Windows),则此问题将消失 - 希腊字符将正确显示.将非Unicode程序的默认语言设置回原来的状态,然后又出现问题.
所以我猜想TRichEdit在内部使用Unicode,因为更改它的Font.Charset值永远不会改变任何东西 - RichEdit正确接受任何已安装的输入语言,如果你安装了两种使用不同字符集的非拉丁语言(希腊/ GREEK_CHARSET/和俄语/ RUSSIAN_CHARSET/例如)它会接受它们而不改变它的Font.Charset.
我还猜想当你得到TRichEdit 的.Text(或.Lines[i])值时,它会根据Windws的非Unicode程序的默认语言将其内部Unicode文本转换为ANSI .
此外,将.Text值分配给WideString或UnicodeString也无法正常工作(文本再次出现????而不是正确的字符),它不仅在您将其分配给String(AnsiString)时.
所以这就是问题:
我希望能够根据我选择的字符集正确地将RichEdit的文本转换为字符串(ANSI),而不是系统的非Unicode程序的默认语言.我怎样才能做到这一点?我更喜欢不涉及第三方组件的解决方案,当然,如果不可能的话 - 任何事情都可以.
谢谢!
PS:切换到Delphi 2009或更高版本是不可接受的解决方案.
我需要像RichEdit这样的免费组件,但也可以在里面显示图片.我使用的是Delphi 7.不幸的是RichEdit无法显示图片,而且很少有组件可以免费使用.
有没有人知道如何在TRichEdit控件中获取文本的宽度和高度,就像在TCanvas上使用TextWidth和TextHeight一样?
我需要知道这样做的原因是我在一个不可见的表单上有一个RichEdit,我使用Richedit.Perform(EM_FORMATRANGE,...)将内容复制到画布.问题是EM_FORMATRANGE需要一个TFormatRange类型的参数,其中指定了目标rect,但我不知道rect应该是什么,因为我事先并不知道RichEdit中内容的大小.希望有道理.
有没有办法改变像素中的插入位置?
每当我移动鼠标鼠标时,我想移动护理pos.
喜欢:
Onmousemove:MoveCaretPos(X,Y);
我在全 JSF 平台上使用 Rich Editor 作为用户输入文本框。我试图避免对此文本字段的 XSS 攻击。
要求是
<显示<,所以问题是,由于我们必须正确显示值,所以我们输入escape=false了输出文本,但它随后变得容易受到 XSS 攻击。
我尝试使用 jsoup 来过滤 HTML 标签,但似乎输入会自动编码并且无法使用 jsoup 。
所以我的问题如下。
escape=false?我正在尝试在 RichEdit 中保存然后恢复垂直滚动位置。
用于存储滚动位置的全局变量:
SI: TScrollInfo;
Run Code Online (Sandbox Code Playgroud)
此代码保存滚动位置:
FillChar( SI, SizeOf(SI), #0 );
SI.cbSize := SizeOf(SI);
SI.fMask := SIF_POS;
GetScrollInfo( RichEdit1.Handle, SB_VERT, SI );
Run Code Online (Sandbox Code Playgroud)
此代码尝试恢复它:
RichEdit1.Perform( WM_VSCROLL, MakeLong(SB_THUMBTRACK, SI.nPos), 0 );
Run Code Online (Sandbox Code Playgroud)
RichEdit 中的文本恢复其旧位置 OK。问题是垂直滚动条不会跳转到旧位置。
我的系统:Win 7 64,Delphi 2009
我究竟做错了什么?
richedit ×10
delphi ×8
components ×1
delphi-2007 ×1
delphi-7 ×1
image ×1
java ×1
jsf ×1
plaintext ×1
richtextbox ×1
rtf ×1
scroll ×1
security ×1
winapi ×1
xss ×1