AGB  ·  Datenschutz  ·  Impressum  







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

sowas {\bhallo\b} direkt in richedit laden?

Ein Thema von R0BIN · begonnen am 16. Nov 2006 · letzter Beitrag vom 19. Jun 2008
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: sowas {\bhallo\b} direkt in richedit laden?

  Alt 19. Jun 2008, 19:46
Hallo,

ich denke, dir reicht Delphi-Referenz durchsuchenSelAttributes aus. Aus dem Kopf geht das grob so:

Delphi-Quellcode:
RichEdit.SelAttributes.Style := [fsBold];
// Text einfügen und danach die Attribute zurücksetzen
Du kannst das auch immer "invertieren":
Delphi-Quellcode:
RichEdit.SelAttributes.Style := RichEdit.Font.Style + [fsbold];
// Text einfügen
RichEdit.SelAttributes.Style := RichEdit.Font.Style - [fsbold];
Die Schriftfarbe kannst du natürlich analog ändern.

Ich hoffe, das ist das, was du gemeint hast.

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#12

Re: sowas {\bhallo\b} direkt in richedit laden?

  Alt 19. Jun 2008, 19:58
Zitat von Helmi:
Funktioniert das Einfügen von Formatierungen auch bei RichEdit.Lines
oder nur bei SelText?
Bei mir gibt's dann einen "Richedit line insertion Error"

Alternative: RTF Text via EM_STREAMIN einfügen oder wie schon erwähnt mit RichEdit.SelAttributes arbeiten.

Bsp. EM_STREAMIN:

http://www.swissdelphicenter.ch/de/showcode.php?id=1147

http://www.delphidabbler.com/tips/57
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#13

Re: sowas {\bhallo\b} direkt in richedit laden?

  Alt 19. Jun 2008, 20:44
Hallo,

ich werds mal etwas ausgedehnter erklären:

ich habe einen unformatierten RichEdit-Text (Beispiel):
Zitat:
Die Katze ist stohdumm.
Sie, die Katze frisst nur ohne
nachzudenken - die andere Katze
schläft nur.
Nun hab ich zwei StringListen, die gleiche Anzahl
Items beinhalten. Nennen wir sie: Liste_Such und Liste_Tausch

Meine "Machwas"-Routine sucht in dem RichEdit-Text zeilenweise
nach Wörtern die in der Liste_Such drin stehen und ersetzt sie
gegen Wörtern der Liste_Tausch.

In dem Beispiel...
...Inhalt der Liste_Such: Katze
...Inhalt der Liste_Tausch: Maus
(nur ein Item in den Listen)

Das funktioniert soweit.
Der RichEdit-Text würde dann lauten:
Zitat:
Die Maus ist stohdumm.
Sie, die Maus frisst nur ohne
nachzudenken - die andere Maus
schläft nur.
Nun möcht ich aber beim Ersetzen gleichzeitig eine Formatierung
mit angeben. Also das in dem oberen Beispiel das Wort Maus
fett dargestellt wird und nicht unformatiert.

Ich stell mir das so vor, beim Ersetzen bei dem neuen Wort
eine Formatierungsflag mit anzugeben, dass dann automatisch
vom RichEdit als RTF interpretiert wird und dann dementsprechend
formatiert und angezeigt wird.

Also nochmals bei dem Beispiel oben zu bleiben - etwa so:
(\b<Text>\b für Wort in fett)
Zitat:
Die \bMaus\b ist stohdumm.
Sie, die \bMaus\b frisst nur ohne
nachzudenken - die andere \bMaus\b
schläft nur.
Was dann so aussehen sollte:
Die Maus ist stohdumm.
Sie, die Maus frisst nur ohne
nachzudenken - die andere Maus
schläft nur.

Ich hoffe es ist nun verständlicher geworden, was ich machen möchte.
Wär so was möglich?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: sowas {\bhallo\b} direkt in richedit laden?

  Alt 19. Jun 2008, 20:54
Hallo Helmi,

mithilfe der genannten Code-Snippets und dieses Codes aus dem SDC geht es so:

Delphi-Quellcode:
function Search_And_Replace(RichEdit: TRichEdit;
  SearchText, ReplaceText: string): Boolean;
var
  startpos, Position, endpos: integer;
begin
  startpos := 0;
  with RichEdit do
  begin
    endpos := Length(RichEdit.Text);
    Lines.BeginUpdate;
    while FindText(SearchText, startpos, endpos, [stMatchCase])<>-1 do
    begin
      endpos := Length(RichEdit.Text) - startpos;
      Position := FindText(SearchText, startpos, endpos, [stMatchCase]);
      Inc(startpos, Length(SearchText));
      SetFocus;
      SelStart := Position;
      SelLength := Length(SearchText);
      RichEdit.clearselection;

      RichEdit.SelAttributes.Style := [fsBold];
      SelText := ReplaceText;
      RichEdit.SelAttributes.Style := [];
    end;
    Lines.EndUpdate;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Search_And_Replace(Richedit1, 'Katze', 'Maus');
end;
Grüße, Matze
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#15

Re: sowas {\bhallo\b} direkt in richedit laden?

  Alt 19. Jun 2008, 21:00
Hallo Matze,

danke für deine Hilfe.
Nur muss ich dich wieder enttäuschen - es ist nicht das was ich suche/meine.

Dein Code tauscht im kompletten Text - da geht natürlich SelStart/End...

Nur kann ich nur Zeilenweise tauschen (es gibt schon nen Grund dafür)
deswegen auch RichEdit.Lines.Strings

und bei RichEdit.Lines.Strings kann ich ja leider kein SelStart/End anwenden
Deswegen auch meine Frage nach der Möglichkeit zum Einfügen von Flags
vor und nach dem getauschten Wort.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#16

Re: sowas {\bhallo\b} direkt in richedit laden?

  Alt 19. Jun 2008, 22:10
Hallo,

Zitat von Helmi:
... Nur kann ich nur Zeilenweise tauschen (es gibt schon nen Grund dafür) deswegen auch RichEdit.Lines.Strings und bei RichEdit.Lines.Strings kann ich ja leider kein SelStart/End anwenden
in Beitrag #10 behaupte ich schlicht das Gegenteil. Passenden Code findest du indirekt über diesen Beitrag. Beim zeilenweise Verarbeiten der Strings hilft dir vielleicht die Prozedur SelectLine(), die ich weiter oben (#10) verlinkt habe. Einen plausiblen Grund für das zeilenweise Vorgehen hast du aber bisher nicht angeben können.

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#17

Re: sowas {\bhallo\b} direkt in richedit laden?

  Alt 19. Jun 2008, 22:20
Danke für die Hinweise.

Werd ich mir morgen mal anschauen und es mal meinen Wünschen anpassen.

Zitat von marabu:
Einen plausiblen Grund für das zeilenweise Vorgehen hast du aber bisher nicht angeben können.
Ich hab nie behauptet keinen Grund dafür angeben zu können.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 01:05 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