Umfassende Editor Komponente erstellen

Rund um die LCL und andere Komponenten
pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Umfassende Editor Komponente erstellen

Beitrag von pluto »

Ich habe diesen Thread mal wieder rauß ausgegraben*schaufel bei seit legen*:
Also das Projekt habe ich komplett neu angefangen vor ein Paar Tagen. Das Projekt kommt gut voran. Ich habe es PlEditor genannt.
Die Struktur hat sich auch komplett geändert. Nicht mehr jeder Buchstabe ist ein Objekt sondern "nur" noch zusammenhänge Formatierungen oder eine Leerzeile. Also jede Zeile besteht aus mind. ein Objekt. Im Moment.

Die Struktur ist folgendermaßen aufgebaut.
Ich habe

Das Wetter ist morgen aber schön
Zeile eins währe jetzt zwei Objekte, Zeile zwei ein Objekt und die letzte Zeile währe drei Objekte.
Jede Zeile besteht aus einer TObjectList. Alle Zeilen werden in einer TObjectList zusammen gefasst. Die TPLTextList verwaltet all diese Zeilen. Sie nennen sich TPLTextLine, diese Klasse wiederum verwaltet TPLTextItem. Die Klasse hat im Moment eine "echte" instant" von TPLTextStyle, diese Klasse beschreibt ein Objekt. Später sollen alle TextStyle in einer Gobalen klasse gespeichert werden, wo bei jedem hinzufügen eines neuen Styles erst rein geschaut wird, wenn vorhanden setzte Pointer, wenn unbekannt, füge hinzu und setzte dann Pointer. So hoffe ich Speicher zu sparen.

Die TPLEditorTextBuffer Klasse ist die Klasse die User Anfragen verarbeitet. Die Klasse TPLEditor ist von TCustomControl abgeleitet und sie leitet die Events einfach nur weiter. Später kommt hier noch ein Tastenmanger rein der schon so gut wie Fertig ist. Über den soll der User alle unterstützten Tasten schnell und einfach Verändern können oder in einer Datei speichern bzw. Laden können.

Im Moment konzentriere ich mich auf die Primären Grundlagen. Das Speicherformat kommen erst später dran. Aber es wird erst ein binäres geben, weil ich glaube das es am schnellsten geladen werden kann, gegenüber einem XML Basieren. Natürlich soll es verschiedene Speicher Formate geben. Neben dem Binären soll es noch ein XML Basiertes geben und evlt. sollen auch noch Fremde Datei Formate unterstützt werden. Aber welche weiß ich noch nicht. Im Prinzip könnte ich jedes nehmen, aber nur Schreibend. Also eine Entsprechende Exportier Funktion. Ich glaube eine Lese Funktion für RTF oder HTML ist einfach zu kompliziert im Moment. Ich überlege auch diese Funktion auszulagern in eine externe Datei. Die mit einer Script Sprache verarbeitet wird, was meint ihr dazu ?

Das ganze Projekt sehe ich als Experiment an. Es ist zwar für mich schon relativ weit, aber es fehlen noch wichtige bereiche wie das Markieren und das Scrollen und auch noch einige Tasten. Aber es kommt gut voran.

Das einfüge von Buchstaben, habe ich so gemacht wie es bei OpenOffice der Fall ist, nicht so wie es bei RichEdit der Fall ist. Aber ich bin am überlegen ob und wie ich am besten ein schalter dazwischen Packen sollte so das es mehrer Moden gibt. Beim markieren das gleiche.

Es gibt zwar noch Viele Probleme, aber die anzahl minimiert sich ständig. Wenn ich "durchhalte" könnt ihr davon ausgehen das ich das Projekt Fertig stellen werde. Ich habe ein klares Ziel vor Augen und ich mache auch nur noch kleine und relevante schritte. Bei meinem PLEDIT hat dies zum erfolg geführt. Das Projekt steht kurz vor dem Fertig stellen in der ersten Version. PLEDIT <> PLEDITOR.

ich werde bei Gelegenheit auch noch ein Schau Bild von der Struktur hochladen. Wenn ihr wünsche habt oder ähnliche anliegen habt, nur her damit. Ich freue mich über jede Fachgerechte Antwort die sich auf das Projekt besieht.
MFG
Michael Springwald

Antworten