Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi nicht nur erstes Vorkommnis in Memo markieren (https://www.delphipraxis.net/10365-nicht-nur-erstes-vorkommnis-memo-markieren.html)

lkz633 17. Okt 2003 12:41

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

Christian Seehase 17. Okt 2003 12:58

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:
Memo1.SelLength := iSearchLen;
mal die Zeile

Delphi-Quellcode:
RichEdit1.SelAttributes.Color := clRed;
eintragen (alle Memo1 natürlich gegen RichEdit1 austauschen).
Dann würden alle Fundstellen durch rote Schrift markiert.

Dann noch die '9' durch #00 ersetzen, und die Zuweisung
Delphi-Quellcode:
Memo1.Lines.Text := sText;
weglassen.

Bei einem RichEdit könntest Du allerdings statt so einer Routine auch FindText nehmen, wie weiter oben schon gesagt.

lkz633 17. Okt 2003 13:24

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

Christian Seehase 17. Okt 2003 13:40

Re: nicht nur erstes Vorkommnis in Memo markieren
 
Moin lkz,

Zitat:

Zitat von lkz633
sind bei mehreren Vorkommnissen doch um mehrere Stellen verrutscht.

:shock:

das hatte ich soweit schon getestet...

Kannst Du mal einen Beispieltext anhängen, bei dem es nicht geht?

lkz633 17. Okt 2003 13:50

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

Christian Seehase 17. Okt 2003 14:18

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.

lkz633 17. Okt 2003 14:25

Re: nicht nur erstes Vorkommnis in Memo markieren
 
Zitat:

Zitat von Christian Seehase
Wenn ein anderes Element ausgewählt werden solltest Du die Markierung des zuletzt gewählten wieder zurücksetzen.

:-D siehe vorhergegangene Frage bzw Kommentar im Code :-D

Weisst du auch dafuer eine Loesung?

Zitat:

Zitat von Christian Seehase
noch nicht

Da hab ich ja den richtigen erwischt :-D, danke!

Gruss lkz633

Christian Seehase 17. Okt 2003 14:35

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 ;-))

Christian Seehase 17. Okt 2003 15:02

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;

lkz633 17. Okt 2003 15:27

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.
Seite 2 von 2     12   

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