![]() |
replace-modalform schreiben
Liste der Anhänge anzeigen (Anzahl: 1)
hallo,
was der anhang mal werden soll, ist ein modal-dialog, der substring-vorkommnisse in einem string ersetzt. die funktionen sind alle noch nicht geschrieben, momentan hänge ich an der routine, die ausgeführt wird, sobald 'weiter' gedrückt wird... wenn das formular gezeigt wird, wird das erste vorkommnis von old ausgewählt, so weit so gut wenn dann weiter gedrückt wird, sollte automatisch das nächste ausgewählt werden, doch das tut's eigenartigerweise nicht, seht ihr vllt warum? schaut mal bitte rein, is ganz wenig code! danke, martin |
Re: replace-modalform schreiben
Warum verwendest du nichr StringReplace ?
|
Re: replace-modalform schreiben
Zitat:
Das Problem ist einfach nur, dass das Selektieren des 2. Vorkommens in diesem TntMemo-Feld nicht funktioniert, obwohl ich es genauso mache, wie bei der OnShow-Funktion..wie du siehst, wird's ja beim ersten Mal noch korrekt ausgewählt Das Ersetzen ist erstmal nebensächlich, der Benutzer soll ja erstmal gefragt werden, ob er auch wirklich ersetzen will...! |
Re: replace-modalform schreiben
Zitat:
|
Re: replace-modalform schreiben
Zitat:
Es wird nur einfach nicht ausgewählt. Führ's einfach mal aus; Bei Oncreate wird das erste Vorkommen des Strings ausgewählt. Klickst du auf "Weiter" 'soll' das nächste ausgewählt werden (schau dir mal den Code an, der ausgeführt wird, sobald auf "Weiter" geklickt wird..ist ziemlich ersichtlich was ich da erreichen will (denke ich mal) danke, martin |
Re: replace-modalform schreiben
Ist new genauso lang wie old? Sonst wirst du deinem Ansatz sowieso Probleme bekommen.
|
Re: replace-modalform schreiben
Zitat:
Schau mal auf
Delphi-Quellcode:
Da wird das erste Vorkommen ausgewählt mit
procedure TReplaceDialog.FormShow(Sender: TObject);
Delphi-Quellcode:
In
i := WidePosEx(old, self.TntMemo1.Text, self.index);
self.TntMemo1.SelStart := i - 1; self.TntMemo1.SelLength := Length(self.old); self.TntButton2.Enabled := true; self.index := i + Length(self.old);
Delphi-Quellcode:
soll das nächste Vorkommen von old ausgewählt werden mit
procedure TReplaceDialog.TntButton2Click(Sender: TObject);
Delphi-Quellcode:
Also quasi genau der gleich Code wir oben. Wenn ich auch noch ein ShowMessage einfüge (Kommentar), dann sehe ich, dass auch das nächste Vorkommen richtig gefunden wurde, aber eigenartigerweise das mit dem Auswählen im Memo nicht klappt...Darum geht's
i := WidePosEx(old, self.TntMemo1.Text, self.index);
//ShowMessage(IntToStr(i)); self.TntMemo1.SelStart := i - 1; self.TntMemo1.SelLength := Length(self.old); self.TntButton2.Enabled := true; self.index := i + Length(self.old); |
Re: replace-modalform schreiben
Solange du keine Ersetzungen machst, wenn aber (und die Länge differiert) bekommst du Probleme.
|
Re: replace-modalform schreiben
Zitat:
Änder mal
Delphi-Quellcode:
ab:
procedure TReplaceDialog.FormShow(Sender: TObject);
Delphi-Quellcode:
Das mit dem Ersetzen geht dann alles ganz einfach. Das Problem ist das Auswählen.
i := WidePosEx(old, self.TntMemo1.Text, self.index);
self.TntMemo1.SelStart := i - 1; self.TntMemo1.SelLength := Length(self.old); self.TntMemo1.SelText := '1234'; self.TntButton2.Enabled := true; self.index := i + Length(self.old); edit: PS: Habs grad raus: Vor dem zweiten
Delphi-Quellcode:
muss noch ein
self.TntMemo1.SelStart := i - 1;
Delphi-Quellcode:
self.TntMemo1.SetFocus();
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:59 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 by Thomas Breitkreuz