AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi RichEdit , Text ersetzen aber Formate erhalten
Thema durchsuchen
Ansicht
Themen-Optionen

RichEdit , Text ersetzen aber Formate erhalten

Ein Thema von JoelH · begonnen am 17. Jul 2003 · letzter Beitrag vom 26. Nov 2019
Antwort Antwort
Seite 1 von 2  1 2      
JoelH
(Gast)

n/a Beiträge
 
#1

RichEdit , Text ersetzen aber Formate erhalten

  Alt 17. Jul 2003, 11:30
Kann mir jemand einen Tip geben wie man in einem RTF-Text am einfachsten Wörter ersetzt ohne das die Formatierung des restlichen Textes zerstört wird ?

Konkretes Problem, ichhabe eine Wordvorlage mit Makro, das will ich komplett ersetzen indem ich das File als RTF abspeichere und dann Delphi die Sachen ersezten lasse die vorher das Wordmakro ersetzt hat,
zB. einfach '<<Adresse1>>' durch 'Jonas' ersetzen.

Wie mach ich dass am besten ?
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#2

Re: RichEdit , Text ersetzen aber Formate erhalten

  Alt 17. Jul 2003, 11:57
ich hab mal hier einen Versuch gestartet
Delphi-Quellcode:
procedure Tform2.ersetzeText(bildschirmrtf:TRichEdit;finden,ersetzen:String);
var position, lf, le : integer;
    helprtf : TRichEdit;
begin
  helprtf := TRichEdit.Create(self);
  helprtf.parent := bildschirmrtf.Parent;
  lf := length(finden);
  le := length(ersetzen);
  helprtf.Text := ersetzen;
  helprtf.SelStart := pos(ersetzen,helprtf.text)-1;
  helprtf.SelLength := le;
  helprtf.CutToClipboard;
  bildschirmrtf.SelStart := pos(finden,bildschirmrtf.text)-1;
  bildschirmrtf.SelLength := lf;
  bildschirmrtf.PasteFromClipboard;
  helprtf.destroy;
end;
Ersetzen tut er es aber leider ist der neu Text nicht im selben Format wie der ersetzte.
Wie kann ich die diese Formatatribute am besten zwischenspeichern und dann wieder zurückschreiben ? Vor allem weil ja die Textlängen verschieden sein können !
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: RichEdit , Text ersetzen aber Formate erhalten

  Alt 17. Jul 2003, 12:16
Moin Joel,

hast Du auch mal versucht SelAttributes zu speichern und wiederherzustellen?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#4

Re: RichEdit , Text ersetzen aber Formate erhalten

  Alt 17. Jul 2003, 12:23
ich lauf gerade in die richtung aber irgendwie hab ich mich wohl verzettelt
momentaner Codestand
Delphi-Quellcode:
procedure Tform2.ersetzeText(bildschirmrtf:TRichEdit;finden,ersetzen:String);
var position, lf, le : integer;
    helprtf : TRichEdit;
    attrib : TTextattributes;
begin
  helprtf := TRichEdit.Create(self);
  helprtf.parent := bildschirmrtf.Parent;
  lf := length(finden);
  le := length(ersetzen);
  bildschirmrtf.SelStart := pos(finden,bildschirmrtf.text)-1;
  bildschirmrtf.SelLength := lf;
  attrib := bildschirmrtf.DefAttributes;
  helprtf.Text := ersetzen;
  helprtf.SelStart := pos(ersetzen,helprtf.text)-1;
  helprtf.SelLength := le;
  helprtf.SelAttributes := attrib;
  helprtf.CutToClipboard;
  bildschirmrtf.DefAttributes := attrib;
  bildschirmrtf.PasteFromClipboard;
  bildschirmrtf.SelStart := pos(ersetzen,bildschirmrtf.text)-1;
  bildschirmrtf.SelLength := le;
  
  helprtf.destroy;
end;
Irgendwie verwechsle ich da was
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: RichEdit , Text ersetzen aber Formate erhalten

  Alt 17. Jul 2003, 12:25
Moin Joel,

warum nimmst Du denn hier DefAttributes?

attrib := bildschirmrtf.DefAttributes;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#6

Re: RichEdit , Text ersetzen aber Formate erhalten

  Alt 17. Jul 2003, 12:45
Weil ich gerne die Attribute des selektierten Textes haben will.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: RichEdit , Text ersetzen aber Formate erhalten

  Alt 17. Jul 2003, 12:46
Moin Joel,

deshalb ja auch SelAttributes und nicht DefAttributes.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#8

hmm,

  Alt 17. Jul 2003, 13:31
aber selattributes ist doch zu setzen da oder verstehe ich die Hilfe falsch ? Aber wie auch immer auch dies brigt irgendwie nix
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#9

hmm,

  Alt 17. Jul 2003, 14:05
Jipee,

es geht jetzt, ich dacht schon ich bin doof. Hatte mich wohl etas mit dem Def und Sel verzettelt. Die OnlineHilfe dazu ist aber auch mau.

Delphi-Quellcode:
procedure Tform2.ersetzeText(bildschirmrtf:TRichEdit;finden,ersetzen:String);
var position, lf, le : integer;
    helprtf : TRichEdit;
    attrib : TTextattributes;
begin
  helprtf := TRichEdit.Create(self);
  helprtf.parent := bildschirmrtf.Parent;
  lf := length(finden);
  le := length(ersetzen);
  helprtf.Clear;
  bildschirmrtf.SelStart := pos(finden,bildschirmrtf.text)-1;
  bildschirmrtf.SelLength := lf;
  attrib := bildschirmrtf.SelAttributes;
  helprtf.Lines.add(ersetzen);
  helprtf.SelAttributes := attrib;
  helprtf.SelStart := pos(ersetzen,helprtf.text)-1;
  helprtf.SelLength := le;
  helprtf.SelAttributes.Size := attrib.size;
  helprtf.SelAttributes.Name := attrib.Name;
  helprtf.CopyToClipboard;
  bildschirmrtf.PasteFromClipboard;
  bildschirmrtf.SelStart := pos(ersetzen,bildschirmrtf.text)-1;
  bildschirmrtf.SelLength := le;
  bildschirmrtf.SelAttributes := attrib;
  helprtf.destroy;
end;
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: RichEdit , Text ersetzen aber Formate erhalten

  Alt 17. Jul 2003, 14:57
Moin Joel,

mir ist im Moment nicht ganz klar, wozu Du ein zweites RichEdit brauchst, wenn Du sowieso Text und Attribute getrennt sicherst.
Ausserdem halte ich es für nicht besonders sauber den Austausch über das Clipboard vorzunehmen.

Eine Anwendung die mir ungefragt den Inhalt des ClipBoards zerschiesst hätte auf meinem Rechner keine grosse Überlebenschance
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:48 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