![]() |
[Lazarus] Kleiner Editor ohne SynEdit selbst programmieren ?
Hi,
ich möchte mit Lazarus einen kleinen Editor für Linux und Windows schreiben, der Syntaxhighlighting unterstützt. Hat sich damit schonmal jemand befasst ? Mein Problem ist, dass es kein RichEdit gibt und die mir Messages für WM_PAINT bei einer Ableitung von TMemo extremen Ärger bereiten. Ich habe mir zum Ziel gesetzt keine Fremdkomponenten einzubinden, da ich mit SynEdit dann nichts mehr zu tun hätte und somit den Editor praktisch zu 2% selbst gemacht hätte. |
Re: [Lazarus] Kleiner Editor ohne SynEdit selbst programmier
Wenn du es richtig schnucklig aufziehen willst würde ich von TCustomControl ableiten und den Text etc. alles selbst auf die Canvas bringen.
|
Re: [Lazarus] Kleiner Editor ohne SynEdit selbst programmier
So ein Ziel habe ich mir auch schon gesetzt. Was ich mit meiner GUI auch erreichen werden.
Also ich wollte dabei so vorgehen: Jeder Buchstabe ist ein Object ! Diese Object hat die Eigenschaften: brush, Pen, Font, Sel, Text z.b. Allerdings ist das gar nicht mal so einfach. Nehmen wir z.b. ein Memo. Mein Ziel ist es jetzt ein Komplettsets Memo selbst zu erstellt. So weit auch kein Thema. Man muss nur viel beachten dabei. z.b. beim Zeichnen, beim klicken. Das Higleiten wollte ich dann in etwa so löschen: bei SynEdit ist es ja so das bei jedem Wort sofort geschaut wird was ist nun ist. Bei mir soll er das erst machen wenn ich das Wort Fertig geschrieben habe und z.b. ein Symbol(Leerzeichen, und sowas) gedrückt habe. erst dann soll er Highleiten. Lustig wird es aber wenn es: A) mehrer Higleiter geben soll, also verschiedene Sprachen B) Coding Folding C) Code Explorer für verschiedene Sprachen D) Ich möchte wenn es möglich ist, nicht für jede Sprache eine eigene Klasse erstellen sondern eine eigene Datei. Wo der aufbau der Sprache Denfiert wird ! Im Editor könnte es eine Eigenschaft geben, wo alle verfügbaren Dateien aufgelistet werden. um sie später z.b. in einer ComboBox anzuzeigen im OI Beispielweise. ach ja und die Suchfunktion sollte alles mit einem Gelben Hintergrund versehen wenn es was gefunden hat bzw. nur die Fundstellen natürlich. im Prinzip ist es wie du siehst "nur Zeitaufwendig" und haarig ! hast du schon angefangen bzw. wie weit bis du damit ? Wenn es nur ein Higleiter werden soll, müsste nicht umbedingt Buchstabe = objekt sein. nur ich habe mir noch andere ziele gesetzt. |
Re: [Lazarus] Kleiner Editor ohne SynEdit selbst programmier
Zitat:
Im übrigen ist das Synedit-Modell gar nicht mal schlecht, den dort wird mit Attributen gearbeitet und einer Art "Pointer-Technik". Das ist recht schnell und benötigt nur unwesentlich wenig Speicherplatz. |
Re: [Lazarus] Kleiner Editor ohne SynEdit selbst programmier
ich wollte das schon so änlich machen.
wie du es vorgeschlagen hast ! Mit dem speicher hast du recht: ich/wir müssen da aufpassen. |
Re: [Lazarus] Kleiner Editor ohne SynEdit selbst programmier
Du musst nicht jedes Zeichen einzeln behandeln.
Du kannst dir Bereiche abstecken, die in bestimmten Attributen von den Standardwerten, der Editorinstanz abweichen. Die Attribute selbst werden nur pro Range abgelegt, nicht pro Zeichen. |
Re: [Lazarus] Kleiner Editor ohne SynEdit selbst programmier
Ja ! das habe ich schon Probiert ! Moment:
Es gibt z.b. eine Liste mit den Attributten ! Jetzt gibt der User einen Neuen Text ein, Jetzt wird der zuletzte Wählte Eintrag genommen. Aber es gibt da nur ein Problem: Ich müsste mir ja irgendwie merken, welches Zeichen welches Attributte hat. z.b. das Buchstabe A das Attribute 4 hat... oder wie genau hast du dir das Vorgestellt ? ich habe schon verschiedne Wege Probiert: eine TSTringlist und so das jeder Add ein anders Aussehen haben kann. Problem hierbei wahr wenn sich das Buchstaben aussehen verändert hat. Das einfachste ist es: Jeder Buchstabe ist ein Object. Alles anders ist im Grund das gleiche oder nicht ? Ich müsste mir auf jedenfalls eine Liste anlegen wo drin steht welcher Buchstabe welchen Rang oder wie auch immer hat. Einer hat vorschlagen das als Baum zu machen.... hat da jemand eine Idee ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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 by Thomas Breitkreuz