AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wörter farbig markieren

Ein Thema von ByteLord · begonnen am 19. Aug 2003 · letzter Beitrag vom 19. Aug 2003
Antwort Antwort
ByteLord

Registriert seit: 13. Jul 2003
40 Beiträge
 
Delphi 6 Personal
 
#1

Wörter farbig markieren

  Alt 19. Aug 2003, 14:55
Hallo Leute,
weiß jemand wie ich folgendes realisieren kann:
Wenn ich eine Datei in ein Rechedit lade, sollen alle Buchstaben und Zeichen die zwischen < und > stehen rot markiert werden.
z.B.:
Folgendes:

Homepage

soll dann so:

Homepage

aussehen.

Ich würd mich sehr über eure Hilfe freuen.

Cya
ByteLord
  Mit Zitat antworten Zitat
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Wörter farbig markieren

  Alt 19. Aug 2003, 15:18
Hi,

zunächst musst du wissen an welchen Stellen die von dir gewünschten Zeichen stehen. Da ist eigentlich das schwierigste daran. Es gibt da Methoden wie FindFirst und FindNext (glaube ich), aber damit habe ich noch nie gearbeitet. Ich gehe den Text (anstatt Richedit.Lines etc. findest du in Richedit.Text einen zusammenhängenden String der den gesamten Text im Richedit darstellt) mit ner Schleife durch, also bspw einer for-to-do Schleife, bei der ich i von 1 bis length(Richedit.Text) laufen lasse. Wo genau du anfangen und aufhören musst zu suchen, müsstest du dann deinen Bedürfnissen anpassen.

Mit so einer Schleife hast du die Möglichkeit, dir jedes einzelne Zeichen des Textes anzugucken. Zusätzlich brauchst du noch zwei Integer- Variablen. In der einen speicherst du dir die Position vom Startzeichen (<), und in der anderen die von dem Stopzeichen (>).

Da du ja in der Schleife jedes Zeichen vom Anfang bis zum Ende durchgehen kannst, musst du nur noch wissen, was an der aktuellen Stelle steht.
Das geht per Richedit.Text[i]. Dann guckst du, ob das Zeichen entweder mit "<" oder ">" gleichzusetzen ist und merkst dir dann dementsprechend die i-Werte in einer der beiden Variablen.

Dann hast du alles was du brauchst. Jetzt sagst du dem Richedit, wo die Formatierung, die du durchführen willst, stattfinden soll.
Dafür hat es die Eigenschaften SelStart und SelLength. SelStart musst du dann den Wert der "IndexVariable", die du für "<" gefunden hast geben, SelLength ist dann die Differenz zwischen den beiden Indexvariablen.

Du kannst deine Formatierung dann mit der Eigenschaft Richedit.SelAttributes durchführen. Damit kannst du dann alles einstellen, such in der Delphi- Hilfe mal nach "TTextAttributes". Da kannst du dir angucken, was du mit SelAttributes alles verstellen kannst.

Dann noch gutes Gelingen,

S - tefano
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#3

Re: Wörter farbig markieren

  Alt 19. Aug 2003, 15:24
Das hier sollte genau das richtige für dich sein:
Delphi-Quellcode:
procedure HTMLSyntax(RichEdit: TRichEdit; TextCol, TagCol, DopCol: TColor);
var
  i, iDop: Integer;
  s: string;
  Col: TColor;
  isTag, isDop: Boolean;
begin
  iDop := 0;
  isDop := False;
  isTag := False;
  Col := TextCol;
  RichEdit.SetFocus;

  for i := 0 to Length(RichEdit.Text) do
  begin
    RichEdit.SelStart := i;
    RichEdit.SelLength := 1;
    s := RichEdit.SelText;

    if (s = '<') or (s = '{') then isTag := True;

    if isTag then
      if (s = '"') then
        if not isDop then
        begin
          iDop := 1;
          isDop := True;
        end
        else
          isDop := False;

    if isTag then
      if isDop then
      begin
        if iDop <> 1 then Col := DopCol;
      end
      else
        Col := TagCol
    else
      Col := TextCol;

    RichEdit.SelAttributes.Color := Col;

    iDop := 0;

    if (s = '>') or (s = '}') then isTag := False;
  end;
   
  RichEdit.SelLength := 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  RichEdit1.Lines.BeginUpdate;
  HTMLSyntax(RichEdit1, clBlue, clRed, clGreen);
  RichEdit1.Lines.EndUpdate;
end;
Der code stammt von Ronald Rethfeldt.
Alexander
  Mit Zitat antworten Zitat
ByteLord

Registriert seit: 13. Jul 2003
40 Beiträge
 
Delphi 6 Personal
 
#4

Re: Wörter farbig markieren

  Alt 19. Aug 2003, 15:59
Vielen Dank für den code und die schnelle Antwort.
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:31 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