![]() |
Re: nicht nur erstes Vorkommnis in Memo markieren
Hi,
verstehje leider gerade nur Bahnhof. Wiso kann ich in einem Memo nichts markieren? Was bedeuten die Kommentare "nur um zu zeigen dass es geht". Also bei mir wird jetzt gar nichts markeirt. Gruss lkz633 |
Re: nicht nur erstes Vorkommnis in Memo markieren
Moin lkz,
in dem Beispiel ersetze ich alle Fundstellen, durch 9en, um diese kenntlich zu machen, da man in einem Memo nichts markieren kann. In einem Memo kann man nicht mit verschiedenen Farben arbeiten. Deshalb der Kommentar. Nimmst Du statt eines Memos ein RichEdit, könntest Du hinter dieser Zeile:
Delphi-Quellcode:
mal die Zeile
Memo1.SelLength := iSearchLen;
Delphi-Quellcode:
eintragen (alle Memo1 natürlich gegen RichEdit1 austauschen).
RichEdit1.SelAttributes.Color := clRed;
Dann würden alle Fundstellen durch rote Schrift markiert. Dann noch die '9' durch #00 ersetzen, und die Zuweisung
Delphi-Quellcode:
weglassen.
Memo1.Lines.Text := sText;
Bei einem RichEdit könntest Du allerdings statt so einer Routine auch FindText nehmen, wie weiter oben schon gesagt. |
Re: nicht nur erstes Vorkommnis in Memo markieren
Super, danke fuer deine Hilfe.
Der Code funktioiert noch nicht so 100%, sind bei mehreren Vorkommnissen doch um mehrere Stellen verrutscht. Sehe aber den Fehler nicht, kann jemand helfen? Welchen Befehl muss ich ausserdem benutzen, um alle Markierungen wieder aufzuheben? Herzlichen Dank und Gruss lkz633 |
Re: nicht nur erstes Vorkommnis in Memo markieren
Moin lkz,
Zitat:
das hatte ich soweit schon getestet... Kannst Du mal einen Beispieltext anhängen, bei dem es nicht geht? |
Re: nicht nur erstes Vorkommnis in Memo markieren
Liste der Anhänge anzeigen (Anzahl: 1)
Jup, hier ist der gesamte Quellcode+php-Datei zum Testen, manchmal wird anscheinend "willkuerlich" byw um mehrere <Stellen falsch markiert
Danke fuer deine Hilfe lkz633 |
Re: nicht nur erstes Vorkommnis in Memo markieren
Moin lkz,
danke für den Source. Das liegt an den Tabulatoren in der Datei. Wenn ich die testeshalber mal durch #32 (Blank) ersetze, klappt's. Wieso das passiert, bzw. wie das zu berücksichtigen ist, weiss ich allerdings (noch) nicht :? Übrigens nur so als Idee: Wenn ein anderes Element ausgewählt werden solltest Du die Markierung des zuletzt gewählten wieder zurücksetzen. |
Re: nicht nur erstes Vorkommnis in Memo markieren
Zitat:
Weisst du auch dafuer eine Loesung? Zitat:
Gruss lkz633 |
Re: nicht nur erstes Vorkommnis in Memo markieren
Moin lkz,
für das Zurücksetzen der Markierungen fallen mir zwei Wege ein. Entweder Du merkst Dir, was zuletzt ausgewählt wurde (beim ersten durchlauf eben nichts), und durchläufst die Schleife zweimal, das erste Mal mit dem alten Begriff, wobei die Markierungsfarbe auf schwarz gesetzt, oder Du markierst alles mit SelectAll und setzt die Farbe global auf schwarz zurück. Mit einem BeginUpdate/EndUpdate sieht man auch nichts von der Markierung ;-) Nur das mit den Tabulatoren macht mir Kopfzerbrechen (noch ;-)) |
Re: nicht nur erstes Vorkommnis in Memo markieren
Moin lkz,
ich hab' ja gleich gesagt: FindText ;-)
Delphi-Quellcode:
if not node.HasChildren then begin
Memo.Lines.BeginUpdate; try Memo.SelectAll; Memo.SelAttributes.Color := clBlack; sSearch := node.Text; iSearchLen := length(sSearch); iLen := length(Memo.Lines.Text); iPos := Memo.FindText(node.Text,1,iLen,[]); while iPos <> -1 do begin Memo.SelStart := iPos; Memo.SelLength := iSearchLen; Memo.SelAttributes.Color:= clred; iPos := Memo.FindText(node.Text,iPos+iSearchLen,iLen,[]); end; finally Memo.SelLength := 0; Memo.Lines.EndUpdate; end; |
Re: nicht nur erstes Vorkommnis in Memo markieren
Vielen vielen Dank fuer die tolle Unterstuetzung, so klappt es einwandfrei :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:55 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