![]() |
Memo Text ersetzen (ohne verschieben)
Moinsen!
Ich stehe hier vor einem problem zu dem ich keine einzige lösung gefunden habe. Ich möchte einen bestimmtes wort in einer memo ersetzen ohne die darauf folgenden chars zu verschieben! Beispiel: (in der memo steht) "Guten tag </name/> und so weiter" - </name/> wird durch den text der in einer edit steht ersetzt! wenn ich jetzt z.b. in der edit "Klaus Mustermann" stehen habe soll der </name/> dadurch ersetzt werden und das "und so weiter" überschrieben werden und NICHT vorgerückt werden. quasi wie der einfügemodus. im netz und usenet habe ich eine routine gefunden und im onchange von der memo angewendet, allerdings funtioniert dieser code nur wenn man direkt in die memo schreibt und nicht wenn man per replaceall bestimmte tags ersetzen lässt!
Delphi-Quellcode:
Ich bin für jede hilfe dankbar!
procedure TForm1.Memo1Change(Sender: TObject);
begin if (Sender is TCustomEdit) and Odd(GetKeyState(VK_INSERT)) then with TCustomEdit(Sender) do if SelLength = 0 then begin SelLength := 1; if (SelLength > 0) and (SelText[1] = #13) then SelLength := 2; end; end; procedure TForm1.Button2Click(Sender: TObject); begin Memo1.Text := StringReplace(Memo1.Text ,'</name/>',edit1.Text,[rfReplaceAll]); end; :cat: M.f.G Honk! [edit=Sakura]Text formatiert[/edit] [edit=Daniel B]Delphi-Tags gesetzt. MfG Daniel B.[/edit] |
Hallo,
also bei mir Funkt der Code nur, wenn ich </name/> ins Memo schreibe, und danach mit dem Button 'Button2Click' ausführe, das ist auch O.K. so. lt. OH wird onChange nur aktiv wenn der Text im Memo verändert wird, d.h. Du kannst nicht zugleich den Text vom Edit ändern und im Memo auf onChange warten, oder verstehe ich etwas falsch ? |
weiss nicht ob dieses geht (oder deinen Wünschen entspricht) :
Delphi-Quellcode:
procedure TMainForm.ButtonReplaceClick(Sender: TObject);
var s : String; p : Integer; t : String; const r = '</name/>'; begin s := EditReplaceText.Text; t := Memo.Lines.Text; p := Pos(r,t); if p > 0 then begin Delete(t,p,length(s)+1); Insert(s,t,p); Memo.Lines.Text := t; end; end; |
Alles klar,
hab wohl etwas übersehen :oops: Zitat:
sollte aber mit Mirilin's Ansatz gelöst sein, oder? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz