我需要一些基本的CMS功能和丰富的文本编辑.在堆栈溢出时,有一个常规的textarea编辑控件,支持Markdown样式语法格式.那将超出我的用户,所以我想要一些像你可以在网站上输入的丰富的编辑控件.我知道这是可能的,因为大量的网站都这样做,但我不知道从哪里开始.
(如果你能更好地理解和定义我的问题,有人会编辑标题.)
我遇到的问题是RichEdit的样式格式化"恢复"回到默认的"无" [],然后回到我设置的任何内容,例如粗体或斜体.
有问题的东西 - 我认为,因为我不知道它是如何破坏的 - 是一个程序(REMainLinesCheck),它检查RichEdit中的行数并删除第一个直到达到某个点(显示一次最多14行)像这样:
while REMain.Lines.Count > 14 do
REMain.Lines.Delete(0);
Run Code Online (Sandbox Code Playgroud)
我在其他过程中有6次出现上述过程,这些过程向RichEdit添加了行,但是没有RichEdit.SelAttributes.Style一行更改而只有一行,它只添加了一条粗线,如下所示:
REMain.SelAttributes.Style := [fsBold];
REMain.Lines.Add('something');
REMainLinesCheck;
Run Code Online (Sandbox Code Playgroud)
所以我已经删除了除了那个之外的所有事件,并且开始四处寻找,没过多久就看到它实际上工作正常,常规和粗体线正常添加和多余的线被删除 - 没有问题.但是,只要我将REMainLinesCheck程序重新引入另一个程序(为了清楚起见,我们称之为Proc3Lines,因为它的作用是:添加3行,然后调用多余的行检查),此Proc3Lines之后的每一行都应该是Bold不是......从我在这里经历的看来,似乎REMainLinesCheck在Proc3Lines中做了一些事情,因为没有它一切都很好.
显然,这不是一个相互调用的程序圈,但代码的其他部分与此RichEdit无关,更不用说RichEdit.SelAttributes.Style除了我已经显示的一个地方之外我没有改变任何地方,有另一个RichEdit在同一个单元中,我确实改变了它的线条样式,但这不可能以任何方式相关......是吗?(不,它没有,我只是检查.)
基本上:德尔福到底是什么?它不能比这更简单,我仍然设法失败,有人可以解释和/或解决这个问题吗?提出问题,如果不清楚,我会尽可能详细说明.
我有一个richedit包含使用不同字体,样式,语言等的行.
我正在画一个阴沟.我想在与相应行相同的y像素位置开始绘图.
当RichEdit控件成为其他控件的父文件时,它会停止绘制文本.
这是一个功能还是一个bug?是否有可能使RichEdit成为其他控件的父级?
看看下一个应用:
- Form1.dfm ---
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 282
ClientWidth = 418
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 24
Top = 8
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 0
OnClick = Button1Click
end
object RichEdit1: TRichEdit
Left …Run Code Online (Sandbox Code Playgroud) 我希望我的RichEdit处理超链接,所以我按照以下说明操作:http://delphi.about.com/od/vclusing/l/aa111803a.htm
以下是我对代码所做的更改:
interface
type
TProgCorner = class(TForm)
RichEdit2: TRichEdit;
RichEdit1: TRichEdit;
RichEdit3: TRichEdit;
RichEdit4: TRichEdit;
procedure FormCreate(Sender: TObject);
private
procedure InitRichEditURLDetection(RE: TRichEdit);
protected
procedure WndProc(var Msg: TMessage); override;
end;
implementation
{$R *.DFM}
uses
ShellAPI, RichEdit;
const
AURL_ENABLEURL = 1;
AURL_ENABLEEAURLS = 8;
procedure TProgCorner.InitRichEditURLDetection(RE: TRichEdit);
var
mask: LResult;
begin
mask := SendMessage(RE.Handle, EM_GETEVENTMASK, 0, 0);
//In the debugger mask is always 1, for all 4 Richedits.
SendMessage(RE.Handle, EM_SETEVENTMASK, 0, mask or ENM_LINK);
//returns 67108865
SendMessage(RE.Handle, EM_AUTOURLDETECT, AURL_ENABLEURL, …Run Code Online (Sandbox Code Playgroud) 我正在使用tRichEdit组件并使用tSpinedit使用trichedit.oncreate事件确定制表符间距,以生成一系列制表符位置.这工作正常,我生成的每个新段落都使用定义的制表符间距.但是,当使用SpinEdit1 Change事件时,我可以更改放置光标的文本段的制表符间距,但它不会在整个richedit文本中执行.
有没有办法在richedit文档中的所有段落中应用新的tabstop设置?
当我使用tForm1.SpinEdit1Change更改选项卡设置时,选项卡会更改当前段落和后续段落,但之前的段落保持不变.有没有办法迭代richedit1内容中的段落来改变'for'循环中的所有段落?我没有在属性中找到任何数组或列表.是否有用于在运行时全局设置选项卡的属性或另一种可以实现此目的的方法?
我正在为TRichEdit添加行如何将注意力集中在刚刚添加的行上?
For Idx := 1 to 1000 do
RichEdit.Lines.add(IntToStr(Idx));
Run Code Online (Sandbox Code Playgroud)
编辑
我只是丰富的底线显示刚刚添加的内容和所有其他行向上滚动
我有函数返回一个字符的索引GetCharFromPos(Pt:TPoint):整数;
现在我想得到那个位置的特征.比如GetCharByIndex(Index:Integer):Char;
我想将win32程序中的richedit控件的字体更改为Consolas.当我尝试执行以下操作时:
CHARFORMAT2 cformat;
cformat.dwMask = CFM_FACE;
cformat.cbSize = sizeof(cformat);
cformat.szFaceName = "Consolas";
Run Code Online (Sandbox Code Playgroud)
在最后一行它说
表达式必须是可修改的值
这里有什么问题?
问候,
Devjeet
我为编辑和richedit做了这个确切的事情但是对于后者存在访问冲突,为什么?当tabctrl完成时也会发生同样的事情.我究竟做错了什么?我怎样才能让它发挥作用?
WNDPROC OriginalProc;
LRESULT CALLBACK MyProc(HWND h, UINT m, WPARAM w, LPARAM p)
{
return OriginalProc (h, m, w, p);// access violation for common controls
}
// elsewhere
HWND h = CreateWindow(....)
OriginalProc = (WNDPROC)SetWindowLong(h, GWL_WNDPROC, (LONG)MyProc);
Run Code Online (Sandbox Code Playgroud)
我正在使用vc ++ 6.
提前致谢.
如果我将 TRichedit 放在表单上,我将无法在控件中粘贴带有图像的 RTF。据我了解,这是由于 Delphi 2007 使用旧版本的 Richedit 控件所致。有没有一种简单的方法可以在 Delphi 2007 的窗体上使用最新的 Richedit 控件?
richedit ×11
delphi ×8
winapi ×2
c ×1
c++ ×1
char ×1
delphi-2007 ×1
delphi-xe5 ×1
hyperlink ×1
line ×1
message ×1
position ×1
richtextbox ×1
styles ×1
subclassing ×1
trichedit ×1