-1

德尔福 v7

我还有另一个补救问题。

使用TColorBox我想更改 4 个 RichEdit 控件中每个控件的字体颜色。我正在使用OnClick彩盒的事件。

此过程适用于一个丰富的编辑控件。

    procedure TForm1.cmbFColorClick(Sender: TObject);
    begin

     reProc.SelAttributes.Color := cmbFColor.Selected;

    end;

如果我尝试为每个richedit 控件编写相同的代码,它将同时更改所有richedit 控件中的字体颜色。

示例:我选择并更改了一个richedit 控件上的文本颜色,然后我更改了另一个控件上的文本颜色,两个richedit 控件上的文本颜色同时更改。

例子

 procedure TForm1.cmbFColorClick(Sender: TObject);
     begin

      reProc.SelAttributes.Color := cmbFColor.Selected;
      reApp.SelAttributes.Color := cmbFColor.Selected;
      reServ.SelAttributes.Color := cmbFColor.Selected;

     end;

这个程序根本不起作用

procedure TForm1.cmbFColorClick(Sender: TObject);
 begin
  if ActiveControl is TDBRichEdit then
   with ActiveControl as TDBRichEdit do
    SelAttributes.Color := cmbFColor.Selected;

  end;

有没有办法可以在不影响任何其他控件的情况下更改所有 Richedit 控件上的文本颜色?

4

3 回答 3

0

我认为活动控件是您的 TColorBox 而不是richeditboxes,因为只有一个控件可以是活动控件。如果我没记错的话,这个控件有焦点。

所以你必须实现这样的过程。你已经通过代码记住了,这是最后一个活跃的 Richedit。

程序changeColor(编辑:Trichedit);开始

procedure changeColor(edit:Trichedit); 
begin
     edit.SelAttributes.Color := cmbFColor.Selected;
end;

亲切的问候

于 2013-01-14T18:24:23.057 回答
0

问题解决了。在 PageControl OnChange 事件中,我将每个富编辑控件的 RichEdit SelLength 设置为“0”。

感谢您的帮助。它给了我这个想法。

于 2013-01-14T21:06:38.600 回答
0

我正在将这个问题、你的最后一个问题、对这些问题的评论以及你对这些问题的答案拼凑起来。

您要做的是修改SelAttributes.Color单个丰富的编辑控件。问题在于确定要对哪个富编辑控件进行操作。

让我们假设您有以下可用功能:

function ActiveRichEdit: TRichEdit;

然后你可以简单地写:

ActiveRichEdit.SelAttributes.Color := NewColor;

或者,如果有可能没有激活丰富的编辑控件:

if ActiveRichEdit<>nil then
  ActiveRichEdit.SelAttributes.Color := NewColor;

那么,我们如何实现ActiveRichEdit呢?好吧,您似乎有一个包含多个页面的控件,每个页面都包含一个独特的富编辑。对我来说,这听起来很像一个页面控件。

我将假设您的页面控件被调用PageControl,标签页被调用TabSheet1TabSheet2等等,丰富的编辑控件被命名RichEdit1RichEdit2等等。但是如果你的名字不同,那么你需要修改这个代码。

function TForm1.ActiveRichEdit: TRichEdit;
begin
  if PageControl.ActivePage=TabSheet1 then
    Result := RichEdit1
  else if PageControl.ActivePage=TabSheet2 then
    Result := RichEdit2
  else if PageControl.ActivePage=TabSheet3 then
    Result := RichEdit3
  // etc. etc.
  else
    Result := nil;
end;

现在,还有其他方法可以做到这一点。您可以制作一组丰富的编辑引用,这些引用可以由PageControl.ActivePageIndex. 而且确实还有更多可能的解决方案。

但关键是使用页面控件的ActivePage或属性来确定操作哪个富编辑控件。ActivePageIndex

于 2013-01-14T23:16:46.580 回答