Delphi-PRAXiS

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 SynEdit Highlighter (https://www.delphipraxis.net/96937-synedit-highlighter.html)

Störtebeker 1. Aug 2007 23:43


SynEdit Highlighter
 
Ich arbeite für meinen HTML-Editor mit SynEdit und einem HTMl Highlighter. Soweit so gut. Nun ist es aber so, dass SynEdit immer nur einen Highlighter anzeigt. Also entweder HTML oder JavaScript.

Zum einen, ist das richtig, dass SynEdit nur einen Highleiter zulässt?
Und zweitens, dachte ich, dem Benutzer die Möglichkeit zu geben, zwischen verschiedenen Highlightern zu wählen.

Dafür würde ich die verschiedenen Highlighter in eine ComboBox laden und je nach Auswahl verändert sich der Text "farblich"

Leider, habe ich keine Idee, wie ich das (wenn es überhaupt möglich ist) realisieren könnte. Wäre nett, wenn ihr mir da helfen könntet.

Danke im Voraus.

P.S.: TSynWebSyn habe ich schon probiert. Nur, falls einer von euch einen Tipp in diese Richtung geben wollte.

uwewo 2. Aug 2007 07:18

Re: SynEdit Highlighter
 
Hi,

so ganz verstehe ich Dein Problem nicht!
Du musst doch nur zur Laufzeit SynEdit einen neuen Highlighter zuweisen, und diese vorher in die ComboBox laden.

z.Bsp.

Delphi-Quellcode:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
   case ComboBox1.ItemIndex of
    0 : SynEdit.HighLighter :=
    1 : SynEdit.HighLighter :=
    ...
   end;
end;

hincapie 2. Aug 2007 07:19

Re: SynEdit Highlighter
 
Du kannst den entsprechenden Highlighter doch auch dynamisch zuweisen.
Liste einfach alle gewünschten Highlighter in der ComboBox auf und bei der Auswahl wird der entsprechende dann zugewiesen, z. B. so:
Delphi-Quellcode:
ComboBox1Change(Sender: TObject)
begin
  if ComboBox1.Items.IndexOf('JavaScript') > -1
    then SynEdit1.Highlighter := SynJScriptSyn1;
  ...
end;

Die Muhkuh 2. Aug 2007 09:43

Re: SynEdit Highlighter
 
Zitat:

Zitat von Störtebeker
Zum einen, ist das richtig, dass SynEdit nur einen Highleiter zulässt?
Und zweitens, dachte ich, dem Benutzer die Möglichkeit zu geben, zwischen verschiedenen Highlightern zu wählen.

Zum ersten: Nein, ist falsch. SynEdit ist in der Lage, mehrere Highlighter zu verwenden. Stichwort hierbei ist TSynMultiSyn. Mit dem funktioniert das. ;-)

Zum zweiten:

Aufbau der Combobox (Items)
HTML
PHP
JavaScript


Delphi-Quellcode:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  if (SynEdit1.Highlighter <> nil) then
    SynEdit1.Highlighter.Free;

  case Combobox1.ItemIndex of
    0: SynEdit1.Highlighter := TSynHTMLSyn.Create(SynEdit1);
    1: SynEdit1.Highlighter := TSynPHPSyn.Create(SynEdit1);
    2: SynEdit1.Highlighter := TSynJScriptSyn.Create(SynEdit1);
  end;
end;
Dazu die entsprechenden Uses:
Delphi-Quellcode:
SynEdit,
  {Highlighters}
  SynEditHighlighter, SynHighlighterHtml, SynHighlighterPHP,
  SynHighlighterJScript;


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 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