好友
阅读权限40
听众
最后登录1970-1-1
|
本帖最后由 冥界3大法王 于 2024-12-28 23:46 编辑
原控件地址:https://www.trichview.com/download/
本以为这个功能实现起来很容易,没想到绕了很多的弯路才实现。
如果用的是原生Delphi自带的 RichEdit那么下面的代码就能满足你
[Delphi] 纯文本查看 复制代码
var
XYZ: TMemoryStream;
RichEdit: TMemo;
begin
RichEdit := TMemo.Create(Self);
RichEdit.Parent := Self;
RichEdit.Visible := False;
RichEdit.PasteFromClipboard;
XYZ := TMemoryStream.Create;
try
RichEdit.Lines.SaveToStream(XYZ);
XYZ.Position := 0;
RichEdit.Lines.LoadFromStream(XYZ);
Clipboard.AsText := RichEdit.Text;
RichEdit1.PasteFromClipboard;
finally
XYZ.Free;
end;
end;
如图所示, 5-5.控件得到信息类 这个文字 后面我们输入 888就会带有前面的富文本
这在上面呢,并不影响
如果你用的确实是RichEdit
RichEdit.PlainText:=False;
有个这个属性,如用Memo就可以少一句这个了。
如果你用的是 上面链接中的这个RichViewEdit控件
就你会发现 用同样的代码(也有上面这个问题)似乎咋改都不好使,那我们剪贴板中富文本转换成纯文本的功能就跟没写一样了。
帮助中是这样告诉你的
你要是真这么用的话,那你原来Ctrl+V也就只能粘来纯文本了。。
这当然是我们不希望的。
(我们希望既能粘纯文本,又能粘富文本)
后来又经过了很多次不懈的折腾。。。
// RVStyle1.TextStyles[0].FontName := '微软雅黑';
// RVStyle1.TextStyles[0].Color := clBlack;
// RVStyle1.TextStyles[0].BackColor := clWhite;
// RVStyle1.TextBackgroundKind := rvtbkSimple;
// RVStyle1.CleanupInstance;
// RichViewEdit1.Font.Name := '微软雅黑';
// RichViewEdit1.Font.Size := 50;
// RVStyle1.AddTextStyle;
// RichViewEdit1.ReformatAll;
// RVStyle1.TextStyles.Clear;
with RVStyle1.TextStyles.Add do
begin
StyleName := 'Title Text';
Size := 14;
Style := [fsBold];
end;
with RVStyle1.TextStyles[1] do
begin
Color := clRed;
FontName := 'Verdana';
end;
with RVStyle1.ParaStyles[1] do
begin
Alignment := rvaLeft;
end;
RichViewEdit1.Reformat;
end;
// RichViewEdit1.Style.StyleTemplates[0].TextStyle.Color := clRed;
// RichViewEdit1.ApplyStyleTemplate(0);
比如修改前景色 ,背景色,格式清除啊。。
// RichViewEdit1.DeleteSelection; 什么前面删除啊,
// RVStyle1.TextStyles.Clear;
// RichViewEdit1.InsertText(' ', True);
// keybd_event(VK_BACK, 0, 0, 0); // 按下 Backspace 键
// keybd_event(VK_BACK, 0, KEYEVENTF_KEYUP, 0); // 释放 Backspace 键
// RichViewEdit1.delete
// RichViewEdit1.DeleteItems(1, -1);
// RichViewEdit1.ClearLeft[1];
统统不达标。。。
。。。。
最后最后。。。我先添加一个不带格式的,看不到的空格,0就代表风格号,-1代表段落不换行(反正就是参数啦)
RichViewEdit1.AddNL(' ', 0, -1); //成功方法,先插入一个空格字符串充掉那个原来的格式
RichViewEdit1.SelectCurrentWord; //选中当前的那个单词,其实呢选中不了这样就无形中向左移动了光标
RichViewEdit1.PasteText; //最后再把剪贴板中转换后的那字符串粘来
估计吧,可能还有其他的方法吧,贴出来大家参考下吧。
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|