AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RichEdit Textformatierung

Ein Thema von Christoph · begonnen am 25. Mär 2004 · letzter Beitrag vom 14. Jan 2014
 
Benutzerbild von Christoph
Christoph

Registriert seit: 23. Jan 2004
Ort: Heidelberg
48 Beiträge
 
Delphi 6 Personal
 
#1

RichEdit Textformatierung

  Alt 25. Mär 2004, 17:27
Hallo!

Ich habe ein interessantes Problem, für das ich noch eine Lösung suche.

Ich möchte einen String in einem RichEdit-Element darstellen.
Innerhalb dieses Strings möchte ich bestimmte Worte fett markieren.
Die zu markierenden Worte sind im String mit geschweiften Klammern [Bsp.: '{Wortfett}'] markiert.

Ich habe ein Lösung, mit der ich das Wort inklusive der geschweiften Klammern fett markiert darstellen kann.
Allerdings sollen die fett markierten Worte *ohne* Klammern angezeigt werden.

Im String kommen öfters auch mehrere Worte vor, die markiert werden sollen.
Insgesamt gibt es 30 verschiedene Worte, die - sofern sie im String vorkommen - fett markiert werden sollen.

Bsp. für einen String mit mehreren zu markierenden Worten:
'Accomplished {thief} and {information broker}. Modified by Jabba to be an effective {bounty hunter}.'

Ich habe die 30 Worte in ein array [KeyWords] eingelesen und lasse alle Strings [TextString] auf die dort enthaltenen Worte abprüfen

[Hier mal eine Version zum Copy&Paste mit 3 Worten:]
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, StrUtils;


procedure TForm1.Button1Click(Sender: TObject);
var
  a: integer;
  FettAnfang, FettEnde: integer;
  KeyWords: array[0..2] of string;
  TextString: string;

begin
  KeyWords[0]:='{information broker}';
  KeyWords[1]:='{bounty hunter}';
  KeyWords[2]:='{thief}';

  TextString:='Accomplished {thief} and {information broker}. Modified by Jabba to be an effective {bounty hunter}.';
  RichEdit1.Text:=TextString;
  a:=0;
  while a < High(KeyWords)+1 do
  begin
    if AnsiContainsText(TextString, KeyWords[a]) then
    begin
      FettAnfang:=Pos(KeyWords[a], TextString)-1;
      FettEnde:=FettAnfang+(Length(KeyWords[a])+1);
      RichEdit1.SelStart:=FettAnfang;
      RichEdit1.SelLength:=(FettEnde-1)-FettAnfang;
      RichEdit1.SelAttributes.Style:=[fsBold];
    end;
    inc(a);
  end;
end;

end.
Das Ergebnis sieht so aus:

Accomplished {thief} and {information broker}. Modified by Jabba to be an effective {bounty hunter}.

Ich würde es aber gerne so hinbekommen:

Accomplished thief and information broker. Modified by Jabba to be an effective bounty hunter.

Wenn ich aber mit einer Funktion (z.B. mit AnsiReplaceStr) aus dem Textstring die '{}' herauslösche, denn wird der String kürzer und die Fett-Formatierung stimmt dann nicht mehr.

Bsp.:

Mit dieser Funktion angewendet auf RichEdit1.Text
Delphi-Quellcode:
function ConvertKlammern(s: string): string;
begin
    s:=AnsiReplaceStr(s, '{', '');
    s:=AnsiReplaceStr(s, '}', '');
    result:=s;
end;
kommt das hier heraus:

Accomplished thief and information broker. Modified by Jabba to be an effective bounty hunter.

Wer kann helfen?

Danke und Gruß,
Christoph
'Bist 900 Jahre alt wirst aussehen Du nicht gut!'
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz