Solved

Search and Select the Picture inside RxRichEdit

Posted on 2004-04-16
9
484 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
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
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

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
delphi exception 7 68
Drag & Drop... Data from one grid to another 2 40
DBCtrlGrid, Delphi, Scroll 7 24
How to save the image in the .cds File ClientDataSet? 1 22
This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
Creating an auto free TStringList The TStringList is a basic and frequently used object in Delphi. On many occasions, you may want to create a temporary list, process some items in the list and be done with the list. In such cases, you have to…
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

789 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