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

BullsEye 9. Feb 2009 15:06


RichEdit VS SynEdit
 
Welche der beiden Komponenten ist besser bzw was sind Vor und Nachteile?
Oder sollte man ganz auf eine andere Komponente umsteigen?

toms 9. Feb 2009 15:07

Re: RichEdit VS SynEdit
 
Hallo

Es kommt darauf an, was du damit machen möchtest.
Jede dieser Komponente hat seine Vorteile und Nachteile.

BullsEye 9. Feb 2009 15:08

Re: RichEdit VS SynEdit
 
Eig so als Texteditor.

Syntax Highlighting etc das ganze drum herum.

toms 9. Feb 2009 15:11

Re: RichEdit VS SynEdit
 
Dann ist SynEdit sicher die bessere Wahl.
Mit TRichEdit kannst du u.a. rtf-Text darstellen.

BullsEye 9. Feb 2009 15:14

Re: RichEdit VS SynEdit
 
Eigentlich geht es nur um normale "*.txt" Dokumente bzw später vllt ein eigenes Format. Soll kein "High End" Texteditor werden. Nur sowas in Richtung Notepad.
Nur so als Übung halt.

Ich hab gerade mal die Synedit Komponenten installiert. Allerdings muss ich jetzt jede Unit mit in den Projekt Ordner kopieren, damit ich das Programm starten kann. Sonst erhalte ich folgende Meldung:

Zitat:

[Fataler Fehler] Unit1.pas(7): Datei nicht gefunden: 'SynEdit.dcu'

RWarnecke 9. Feb 2009 15:25

Re: RichEdit VS SynEdit
 
Trage den Pfad zu den Sourcen von SynEdit mal in den Suchpfad von Delphi ein. Dann wird auch Dein Programm ohne kopieren funktionieren.

BullsEye 9. Feb 2009 15:44

Re: RichEdit VS SynEdit
 
Zitat:

Zitat von RWarnecke
Trage den Pfad zu den Sourcen von SynEdit mal in den Suchpfad von Delphi ein. Dann wird auch Dein Programm ohne kopieren funktionieren.


Die Pfade werden ja eig alle richtig angezeigt. Hab Delphi 7. Wo genau muss ich das denn Eintragen?

RWarnecke 9. Feb 2009 15:56

Re: RichEdit VS SynEdit
 
Tools-->Options-->Library Win32, so heißt es unter RAD Studio 2007.

Jakob Ullmann 9. Feb 2009 16:48

Re: RichEdit VS SynEdit
 
Tools -> Umgebungsoptionen -> Bibliothek -> Bibliothekspfad
dort ; und anschließend SynEdit-Verzeichnis hinzufügen

so gehts bei D7. Alternative: Alle SynEdit Dateien in <DelphiVerzeichnis>\Lib kopieren. Ist aber nicht zu empfehlen.

BullsEye 9. Feb 2009 16:52

Re: RichEdit VS SynEdit
 
-.- War nur nen kleiner "Tippfehler" Aber trotzdem Danke! ;)

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 08:06 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