Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Syntax-Highlighting mit einem Richedit?
Palmetshofer - Fr 09.08.02 14:09
Titel: Syntax-Highlighting mit einem Richedit?
Ich habe einen Editor für eine Programmiersprache geschrieben und möchte eine Syntaxhighlightfunktion einbauen. Das heist wenn ich zum Beispiel { eingebe soll das dann blau sein aber nur das zeichen!
Gibts eventuell auch eine Komponente dafür??
Danke im Voraus für eure Hilfe!
Palmetshofer - Fr 09.08.02 14:33
HHm kann ich da meine eigene Syntax mit eigenen farben und den zu erkennenden zeichen einstellen??? Hab nämlich einen Editor für Macromedia Flash MX ActionScript programmiert bzw. programmiere daran. Ist erst v 1.0 und die nächste version sollte dann Syntaxhighlight beherschen!!
Mfg Matthias
Tino - Fr 09.08.02 17:32
| Palmetshofer hat folgendes geschrieben: |
| HHm kann ich da meine eigene Syntax mit eigenen farben und den zu erkennenden zeichen einstellen |
Ja! Du musst dafür aber eine Ableitung von
TSynCustomHighlighter erstellen. Schau Dir am besten vorher einmal die mitgelieferten Highlighter-Klassen (für Pascal, C++, ...) an.
Gruß
TINO
Palmetshofer - Fr 09.08.02 21:09
Hmm die sind ziemlich schwierig aufgebaut. Gibts da nichts einfacheres wo man die keywords einstallen kann und die Farbe dazu ?
mfg matthias
MathiasH - Fr 09.08.02 21:49
selber bauen :wink:
es ist zwar ne ganze menge QT den du da schreiben musst, aber besonder kompliziert müsste er wohl ich nicht sein, er liefert Stellen die dann im Richedit umgefärbt werden müssen, du musst dich halt mit der Unit "StrUtils" und ähnlichem auskennen..... :wink:
MathiasH
Palmetshofer - Sa 10.08.02 09:30
Hab erst angefangen delphi zu programmieren. Einfache sachen bekomm ich ja hi aber wenns dann schwierig wird wie sowas da komm ich nicht mehr mit!!
MathiasH - Sa 10.08.02 09:43
also die schlüsselwörter uä lassen sich über nen simplen such alog finden, und fett (oder sonst was) machen, das schwierige wären wohl die (und auch string) Kommentar-Umfärbungen, da diese auch über mehrere Zeilen gehen können
Mal schaun, vielleicht poste ich mal ein bisschen code dazu...*denk*
MathiasH
MathiasH - Sa 10.08.02 10:38
so da binn ich wieder
ich hab ein kleines Progi gebaut das keywords fett darstellt, af dieser basis müsstast du den rest selbst schaffen
hier also die zentrale procedure:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure searchkeywords; var k: integer; Foundpos: integer; begin with Form1 do begin for k := 0 to Memo1.Lines.Count do begin
Foundpos := RichEdit1.FindText(memo1.Lines[k], 0, Length(RichEdit1.Text), [stMatchCase]);
while foundpos <> -1 do begin
//keyword gefunden RichEdit1.selstart := Foundpos; RichEdit1.SelLength := Length(Memo1.Lines[k]); Richedit1.SelAttributes.Style := [fsBold]; Foundpos := RichEdit1.FindText(memo1.Lines[k], Richedit1.SelStart+1, Length(RichEdit1.Text), [stMatchCase]); end;
end; end; end; |
in Memo1 stehen untereinander die keywords und in Richedit1 steht der QT
Viel Spaß damit, ich hoffe ich konnte dir helfen :wink:
MathiasH
MathiasH - So 11.08.02 10:36
Da ich heut gut drauf bin gibts das mit den Klammern auch noch dazu!:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| procedure searchchains(char1, char2: Char); var Foundposopen, Foundposclose: integer; begin with Form1 do begin
Foundposopen := RichEdit1.FindText(Char1, 0, Length(RichEdit1.Text), [stMatchCase]); if Foundposopen <> -1 then begin Foundposclose := Richedit1.FindText(Char2, Foundposopen, Length(Richedit1.Text), [stMatchCase]) end; while foundposopen <> -1 do begin
//keyword gefunden RichEdit1.selstart := Foundposopen; RichEdit1.SelLength := Foundposclose-Foundposopen+1; Richedit1.SelAttributes.Style := [fsItalic]; Richedit1.SelAttributes.Color := clGreen; Foundposopen := RichEdit1.FindText(Char1, Richedit1.SelStart+Richedit1.SelLength+1, Length(RichEdit1.Text), [stMatchCase]); if Foundposopen <> -1 then begin Foundposclose := Richedit1.FindText(Char2, Foundposopen, Length(Richedit1.Text), [stMatchCase]) end; end;
end; end; |
Char1 und 2 sind die Anfangs-und end-Zeichen
MathiasH
Palmetshofer - So 11.08.02 12:00
Herzlichen dank!!! Werd mich mit deinem code ein bisschen auseinandersetzen!!! danke!!
MathiasH - So 11.08.02 15:56
Wenn du was mit dem Actionscript nicht formatiert bekommst, poste gleich wieder hier, Ich konnte das an Flsh nicht anpassen weil ich davon keinen Schimmer hab :oops:
Mathaish
MrKnogge - Sa 14.12.02 19:26
Hi
Was ist eigentlich der Unterschied zwischen
SynEdit und SynMemo ?
Könnte mir jemand ein Beispiel zeigen
wie man einen Quelltext dann ausdruckt ?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!