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控件的文本颜色?
答案 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
,而名为TabSheet1
,TabSheet2
等的标签页和富编辑控件名为{{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.ActivePageIndex
或ActivePage
属性来确定要操作的丰富编辑控件。