• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 423
  • Last Modified:

How do I override TRichEdit.Lines.Add ?

I need to override TRichEdit.Lines.Add in order to do some processing there, before adding the text in the RichEdit. How can I do that? Can I do that directly?
0
cubic77
Asked:
cubic77
  • 3
  • 3
1 Solution
 
Ephraim WangoyaCommented:

Not exactly, the TStrings.Add method itself can be overriden but TRichEdit is not structured in such a way to allow you to do that easily

you can go around it by using the code as follows in your form unit
type
  TRichEdit = class(ComCtrls.TRichEdit)
  public
    function Add(const AString: string): Integer; 
  end;
  
  TForm1 = class(TForm)
    ............
  end;

implementation

function TRichEdit.Add(const AString: string): Integer;
var
  NewString: string;
begin
  //do something with the string and assign the new value to NewString
  Result := Lines.Add(NewString);
end;

Open in new window

0
 
Ephraim WangoyaCommented:
So instead of using
  RichEdit1.lines.Add(xxx)

you will use
  RichEdit1.Add(xxxxx)
0
 
cubic77Author Commented:
Thanks, but I already implemented exactly the same thing. Until I get the answer to my original question, this solution is acceptable but far from good. Why I don't consider it a GOOD solution? Because I have to remember that I have to use the exception (RichEdit.Add) instead of the normal method.

So, probably in 3-4 months I will accidentally use RichEdit.Lines.Add and I will start to wonder why my RichEdit is not working as expected.
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
cubic77Author Commented:
Actually this solution will became GOOD if the is a way to make the original method (lines.add) not to work anymore. In this case obviously I will see the error message while trying to use it and I will probably remember to use the new method.
0
 
Ephraim WangoyaCommented:
In that case you will have to encapsulate the TRichEdit in a new control, then expose the public methods of TRichEdit and install that control in your component palette.

Then replace all your TRichEdit controls with the new one.

I can show you how to do that, but right now I'm working on something
0
 
cubic77Author Commented:
> I can show you how to do that, but right now I'm working on something
No. I got it. Thanks.

I also had that idea. What I actually wanted was to see if there is any way to override (for real) the Add method.
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now