使用TColorBox更改字体颜色

时间:2013-01-14 16:44:18

标签: delphi

Delphi 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控件的文本颜色?

3 个答案:

答案 0 :(得分:0)

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

所以你必须实现这样的程序。 并且你已经记住了代码,这是最后一个活跃的richedit。

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

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

亲切的问候

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

我正在从这个问题,你的最后一个问题,对这些问题的评论以及你对这些问题的回答中拼凑出一些东西。

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

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

function ActiveRichEdit: TRichEdit;

然后你可以简单地写:

ActiveRichEdit.SelAttributes.Color := NewColor;

或者,如果有可能没有富编辑控件处于活动状态:

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

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

我将假设您的页面控件名为PageControl,而名为TabSheet1TabSheet2等的标签页和富编辑控件名为{{1} },RichEdit1等。但如果您的名字不同,那么您需要调整此代码。

RichEdit2

现在,还有其他方法可以做到这一点。您可以创建一系列可由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.ActivePageIndexActivePage属性来确定要操作的丰富编辑控件。