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 RichEdit VS SynEdit (https://www.delphipraxis.net/128919-richedit-vs-synedit.html)

BullsEye 9. Feb 2009 18:25

Re: RichEdit VS SynEdit
 
Liste der Anhänge anzeigen (Anzahl: 1)
Kann man bei dem SynEdit eig auch vorne die Zeilennummer anzeigen lassen?
(s. Anhang)

Die Muhkuh 9. Feb 2009 18:33

Re: RichEdit VS SynEdit
 
Schaust im OI unter Gutter, da ist das drin.

Für SynEdit würd ich Dir empfehlen einfach mal damit rumzuspielen, dadurch findet Du das meiste.

BullsEye 9. Feb 2009 18:46

Re: RichEdit VS SynEdit
 
Besten Dank! Habs gefunden.

Ja, iwie muss ich das vorhin übersehen haben..

Mal so als Frage, welche Erfahrungen habt Ihr zum Thema "Syntax Highlighting beim RichEdit"?

RWarnecke 9. Feb 2009 19:06

Re: RichEdit VS SynEdit
 
Das ich lieber SynEdit nehme :mrgreen: Aber nun Spass beiseite. Beim SynEdit habe ich die Möglichkeit das Highlighting selber zu definieren über den Highlighter Manager oder die fertigen Highlighter mir so einzustellen, wie ich möchte. Bei einem TRichEdit müsstest Du das alles selber machen.

Die Muhkuh 9. Feb 2009 19:07

Re: RichEdit VS SynEdit
 
Und bei großen Mengen wird das im RichEdit auch nicht gerade performant sein.

Das SynEdit ist einfach dafür da.

BullsEye 9. Feb 2009 19:21

Re: RichEdit VS SynEdit
 
Liste der Anhänge anzeigen (Anzahl: 1)
Taugen die vorgefertigten Highlighter denn was? Ich mein, ich kenn jetzt nicht jede Programmiersprache bzw die Tags etc. Also von daher würde das schon einiges an Arbeit abnehmen.

EDIT: hm der PHP Highlighter taugt iwie so gut wie nichts. Noch weniger! Wie kann ich den manuell bearbeiten?

Ich hab mal nen Demo Programm angehängt. Wobei es hier mehr um die Funktion als um die Optik etc geht.

Mr Source:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, SynHighlighterPHP, SynHighlighterHtml,
  SynEditHighlighter, SynHighlighterCSS, SynEdit, SynHighlighterIni,
  SynHighlighterSQL, SynHighlighterUNIXShellScript, SynHighlighterPython,
  SynHighlighterPerl, SynHighlighterBat, SynHighlighterXML,
  SynHighlighterVBScript, SynHighlighterJScript, SynHighlighterCpp,
  SynHighlighterCS, SynHighlighterVB, SynHighlighterPas, SynHighlighterJava;

type
  TForm1 = class(TForm)
    SynEdit1: TSynEdit;
    css: TSynCssSyn;
    html: TSynHTMLSyn;
    php: TSynPHPSyn;
    Button1: TButton;
    ComboBox1: TComboBox;
    OpenDialog1: TOpenDialog;
    Button2: TButton;
    Button3: TButton;
    SaveDialog1: TSaveDialog;
    java: TSynJavaSyn;
    pas: TSynPasSyn;
    vb: TSynVBSyn;
    c: TSynCSSyn;
    cpp: TSynCppSyn;
    js: TSynJScriptSyn;
    vbs: TSynVBScriptSyn;
    xml: TSynXMLSyn;
    bat: TSynBatSyn;
    perl: TSynPerlSyn;
    python: TSynPythonSyn;
    unix: TSynUNIXShellScriptSyn;
    sql: TSynSQLSyn;
    ini: TSynIniSyn;
    procedure ComboBox1Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  IF ComboBox1.ItemIndex = 0 THEN Synedit1.Highlighter := css;
  IF ComboBox1.ItemIndex = 1 THEN Synedit1.Highlighter := html;
  IF ComboBox1.ItemIndex = 2 THEN Synedit1.Highlighter := php;
  IF ComboBox1.ItemIndex = 3 THEN Synedit1.Highlighter := java;
  IF ComboBox1.ItemIndex = 4 THEN Synedit1.Highlighter := pas;
  IF ComboBox1.ItemIndex = 5 THEN Synedit1.Highlighter := vb;
  IF ComboBox1.ItemIndex = 6 THEN Synedit1.Highlighter := c;
  IF ComboBox1.ItemIndex = 7 THEN Synedit1.Highlighter := cpp;
  IF ComboBox1.ItemIndex = 8 THEN Synedit1.Highlighter := js;
  IF ComboBox1.ItemIndex = 9 THEN Synedit1.Highlighter := vbs;
  IF ComboBox1.ItemIndex = 10 THEN Synedit1.Highlighter := xml;
  IF ComboBox1.ItemIndex = 11 THEN Synedit1.Highlighter := bat;
  IF ComboBox1.ItemIndex = 12 THEN Synedit1.Highlighter := perl;
  IF ComboBox1.ItemIndex = 13 THEN Synedit1.Highlighter := python;
  IF ComboBox1.ItemIndex = 14 THEN Synedit1.Highlighter := unix;
  IF ComboBox1.ItemIndex = 15 THEN Synedit1.Highlighter := sql;
  IF ComboBox1.ItemIndex = 16 THEN Synedit1.Highlighter := ini;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  IF OpenDialog1.Execute THEN
    SynEdit1.Lines.LoadFromFile(OpenDialog1.FileName);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  SynEdit1.Lines.SaveToFile(SaveDialog1.FileName);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  close;
end;

end.

Die Muhkuh 9. Feb 2009 20:31

Re: RichEdit VS SynEdit
 
Die Highlighter sind alle nicht mehr auf dem Stand der Zeit.

Bearbeiten kannst Du ihn: Entweder komplett neu mit den SynGen machen oder die vorhandene Unit ändern.

DeddyH 9. Feb 2009 20:35

Re: RichEdit VS SynEdit
 
Zitat:

Delphi-Quellcode:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  IF ComboBox1.ItemIndex = 0 THEN Synedit1.Highlighter := css;
  IF ComboBox1.ItemIndex = 1 THEN Synedit1.Highlighter := html;
  IF ComboBox1.ItemIndex = 2 THEN Synedit1.Highlighter := php;
  IF ComboBox1.ItemIndex = 3 THEN Synedit1.Highlighter := java;
  IF ComboBox1.ItemIndex = 4 THEN Synedit1.Highlighter := pas;
  IF ComboBox1.ItemIndex = 5 THEN Synedit1.Highlighter := vb;
  IF ComboBox1.ItemIndex = 6 THEN Synedit1.Highlighter := c;
  IF ComboBox1.ItemIndex = 7 THEN Synedit1.Highlighter := cpp;
  IF ComboBox1.ItemIndex = 8 THEN Synedit1.Highlighter := js;
  IF ComboBox1.ItemIndex = 9 THEN Synedit1.Highlighter := vbs;
  IF ComboBox1.ItemIndex = 10 THEN Synedit1.Highlighter := xml;
  IF ComboBox1.ItemIndex = 11 THEN Synedit1.Highlighter := bat;
  IF ComboBox1.ItemIndex = 12 THEN Synedit1.Highlighter := perl;
  IF ComboBox1.ItemIndex = 13 THEN Synedit1.Highlighter := python;
  IF ComboBox1.ItemIndex = 14 THEN Synedit1.Highlighter := unix;
  IF ComboBox1.ItemIndex = 15 THEN Synedit1.Highlighter := sql;
  IF ComboBox1.ItemIndex = 16 THEN Synedit1.Highlighter := ini;
end;

Wäre da ein case nicht angebrachter?

BullsEye 9. Feb 2009 21:42

Re: RichEdit VS SynEdit
 
Zitat:

Zitat von Die Muhkuh
Die Highlighter sind alle nicht mehr auf dem Stand der Zeit.

Bearbeiten kannst Du ihn: Entweder komplett neu mit den SynGen machen oder die vorhandene Unit ändern.

Hab ich auch germerkt ;) Ich denke, ich werde, sobald ich ein wenig mehr Zeit habe, einmal ein paar Units überarbeiten!



Delphi-Quellcode:
function sprache(sprache: TSynCustomHighlighter; name : TMenuItem) : String;
BEGIN
  frmEdit.mText.Highlighter := sprache;
  if not (frmEdit.mText.Highlighter = sprache) then
  begin
    name.Checked := false;
  end else begin
    name.Checked := true;
  end;
  frmEdit.sbStatus.Panels[1].Text := name.Caption;
END;

procedure TfrmEdit.INI1Click(Sender: TObject);
begin
  sprache(ini, ini1);
end;

procedure TfrmEdit.Java1Click(Sender: TObject);
begin
  sprache(java, Java1);
end;
Erst wähle ich Ini1 aus, das wird auch, wie gewollt, gecheckt/ markiert/ abgehackt, wie auch immer. Dann wähle ich Java1 aus. Wird auch gecheckt/ markiert/ abgehackt allerdings beleibt INI1 dann auch gecheckt. !?


Zitat:

Zitat von DeddyH
Wäre da ein case nicht angebrachter?

Wäre sinnvoller, ja ;)
Ist aber auch nur ne "quick % dirty" Demo.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:36 Uhr.
Seite 2 von 2     12   

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