Solved

Search and Select the Picture inside RxRichEdit

Posted on 2004-04-16
9
472 Views
Last Modified: 2011-09-20
I wanted to select at runtime the image inside a TRxRichEdit
How do i do this?

example:
some data
some data

[image] <-- this will be selected and replace it with something else.

some data
some data

 Thanks
0
Comment
Question by:dopors
9 Comments
 
LVL 11

Expert Comment

by:shaneholmes
ID: 10849214
I dont believe that functionality exists (i.e. select an image (or aby object) at runtime).

Howevern you can test for selection type

if (stObject in SelectionType) then


SHane
0
 
LVL 12

Accepted Solution

by:
esoftbg earned 200 total points
ID: 10850962
download a working example:                http://www.geocities.com/esoftbg/ee/Q_20957296.zip
i tested it only with this picture
emil
0
 

Author Comment

by:dopors
ID: 10855726
esoftbg: I can't download it. The link is broke.
Any body how to extract the images inside an RTF Stream. I am using RxRichEdit

0
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

 
LVL 12

Expert Comment

by:esoftbg
ID: 10856498
The Q_20957296.zip is only 12 Kbytes.It downloads so fast and seems like the link is broke, but it isn't. I just verifyed it.
0
 
LVL 12

Expert Comment

by:esoftbg
ID: 10860240
procedure TForm1.Replace_Rtf_Image(Rtf_Name: string);
var
  B:      Boolean;
  I:      Integer;
  P:      Integer;
  S:      string;
  StrList:TStringList;
begin
  B := False;
  StrList := TStringList.Create;
  try
    for I := 0 to Memo.Lines.Count-1 do
    begin
      S := Memo.Lines[I];
      P := Pos('\object\objemb{\*\objclass Paint.Picture}', S);
      if (B or (P>0)) then
      begin
        if not B then
        begin
          B := True;
          S := Copy(S, 1, P-1);
          StrList.Add(S);
        end
        else
        begin
          P := Pos('}}}\par', S);
          if (P>0) then
          begin
            B := False;
            Delete(S, P, 2);
            P := Pos('\par', S);
            if (P>0) then
              Delete(S, P, 4);
            S := S + 'Here can be inserted new text';
            StrList.Add(S);
            StrList.Add('\par');
          end;
        end;
      end
      else
        StrList.Add(Memo.Lines[I]);
    end;
  finally
    RichEdit.Clear;
    Memo.Lines.Assign(StrList);
    Memo.Lines.SaveToFile(Rtf_Name+'_.rtf');
    RichEdit.Lines.LoadFromFile(Rtf_Name+'_.rtf');
    StrList.Destroy;
  end;
end;
0
 
LVL 4

Expert Comment

by:Daniellus83
ID: 11851948
Dopors:

I do not program Delphi... I had the same problem with VB.NET... I try to explain how you could do it in Delphi:

> Make a for-loop from n to the length of the box
> in the for-loop: check if this selection is an OBJECT (in stead of text)
> when this is the picture, you should be able to do a replacement

Look at the vb.net code below to see the full idea.


Succes! Daniël


--(here is the VB.NET code; there must be some sort in Delphi!)---------------------------------------------------------------------------------------------------

        Dim n As Integer
        Dim text As String

        For n = 0 To RichTextBox1.TextLength

            'Select piece by piece
            RichTextBox1.Select(n, 1)  

            'Check is this an Object
            If RichTextBox1.SelectionType = RichTextBoxSelectionTypes.Object Then

                    RichTextBox1.Cut  '<<Cut it out!

            End If

        Next
----------------------------------------------
0

Featured Post

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
In my programming career I have only very rarely run into situations where operator overloading would be of any use in my work.  Normally those situations involved math with either overly large numbers (hundreds of thousands of digits or accuracy re…
This Micro Tutorial will give you a basic overview how to record your screen with Microsoft Expression Encoder. This program is still free and open for the public to download. This will be demonstrated using Microsoft Expression Encoder 4.
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.

803 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question