pre-Alpha Text Editor Komponente Version: 00.00.00

Vorstellungen von Programmen, welche mit Lazarus erstellt wurden.
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)

pre-Alpha Text Editor Komponente Version: 00.00.00

Beitrag von pluto »

Hallo,
wie versprochen stelle ich hier meine Editor Projekt vor. Im Moment nur als Ausführbare Linux Anwendung.
Wenn Intresse besteht werde ich auch noch eine Windows Anwendung Komplieren.
Den Soruce Code gibt es aus verschiedenen gründen noch nicht.
Das ist eine sehr sehr sehr frühe Anfangst Version. Aber ich dachte mir da sie schon recht weit ist, wollte ich sie
euch mal vorstellen.

ICH BITTE EUCH NUR ANTWORTEN WENN IHR ES ERNST MEINT. Mir ist diese Komponente eigentlich sehr wichtig, auch wenn ich es als Spielerei bezeichne. Ich möchte schon diese Komponente eines Tages nutzen können.

Es ist eine sehr früher Anfangs Version der Editor Klasse. Ich habe viele versuche gemacht. Dieser Ansatzt finde ich von allen am besten. Die TObjectListen die ich im Moment nutze werde ich später austauschen, das ist recht leicht.

Im Moment gehen folgende dinge
Texte laden
Es wird einfach nur eine einfache Text Datei direct beim Start geladen. Den Text habe ich aus einem Forum.
Texte da stellen.
TextCursor steuern mit
Pfeiltasten
Pos 1
End
Strg+Pos1
Strg+End
Strg+Linke Pfeiltaste
Strg+Rechte Pfeiltaste
Texte abspeichern mit F3
es wird eine tmp Datei erzeugt im gleichen verzeichnis wie sich die andere Text Datei befindet
Texte Eingeben und Bearbeiten
Lösch Tasten(beide)
Enter
Normale Zeichne ohne Umlaute und Unicode Zeichen, hier muss ich schauen wie das bei SynEdit gemacht wurde.

Hintergrund, Vordergrund, Rand Farbe
kann Direct von der Oberfläche aus geändert werden
Es gibt 4 Verschiedene Hintergrund arten:TI_GradientHori,TI_GradientVerti, TI_Rect, TI_FillRect

Überschreiben mit der Insertaste(Einfg)

Diese sachen gehen leider noch nicht:
- Cursor mit der Maus setzten
- Markieren
- Scrollen
- Undo/Redo
Hier habe ich auch keine Idee wie ich das machen könnte

Im Anhang befindet sich ein ScreenShot der Beispiel Anwendung, und einmal ein gepacktes Zip Archiv mit dem Beispiel Programm.

Die Weitere Entwicklung Stelle ich mir im Moment so vor:
Erstmal die Komponente so weit bekommen das sie mit einem einfachen Memo vergleichbar ist.
D.H. folgende Funktionen möchte ich noch hinzufügen:
Scrollen, Markieren, Undo/Redo, Suchen/Ersetzten, drucken

Sobald das alles Fertig ist möchte ich eine RichEdit ähnliche Komponente machen.
D.h. Farben sollen im Text Geändert werden können. Dafür ist schon vorgesorgt. Im Moment fällt einfach nur eine weitere Klasse dafür.

Wenn ich das so weit habe möchte ich noch eine art SynEdit Komponente drauß machen. D.H. Ich möchte Soruce higleiten können wobei ich versuchen möchte au UniSyn zurückzugreifen, die können immerhin über 300 Sprachen verstehen.

Wenn ich das soweit habe möchte ich eine weitere Komponente erstellen die mit der RichEdit Komponente von Delphi kompatibel ist.

Wie weit ich kommen werde weiß ich nicht. Ich versuche schon zimlich lange so eine Komponente zu erstellen.
Dieser Ansatzt ist jetzt MEIN vielversprechender Ansatzt den ich je gehabt habe.
Bis jetzt konnte ich fast alle Probleme gut lösen.

Es gibt aber leider noch einige Da Stellungs Probleme. Die ich in den nächsten Tagen wohl in den Griff bekommen werde.

Bei jedem neuen Hochladen wird sich die letzte stelle der Version ändern.

Viel Spaß beim Testen. Gespeichert wird eigentlich nix. Es sei den ihr drückt auf F3 dann wird der Text abgespeichert in einer Extra Datei also nicht in der gleichen.

Die Einstellungen werden noch nicht gespeichert. Werde ich aber evlt. hinzufügen.

Ich hoffe ich bekomme von euch Vorschläge, Tipps, und natürlich ernst gemeinte Kritik.
Wenn ihr was über den aufbau der Komponente wissen möchtet, müsst ihr es nur sagen.

Dann lade ich den Soruce Code hoch, und erkläre wie der Editor Intern arbeitet. Es ist nur ein Versuch. Aber ein Versuch der Spaß macht. Ich denke das ist das wichtiges ein Projekt muss Spaß machen und es muss immer weiter gehen. Sonst schläft es ein.

Edit00: Dienstag, 08.April.2008
Titel nach dem Vorschlag von theo angepasst !

Edit01: Montag, 12.Mai.2008
Da ich Probleme mit dem Scrollen habe, habe ich ein kleines Test Projekt vorbereitet, wegen dem Scrollen.
Ich hoffe das einer von euch sich überwinden kann dort die Scroll Funktion einzubauen.
Das währe richtig Toll. Denn die gleiche Technik könnte ich auch bei meiner Listbox hinzufügen.

Es würde auch reichen erstmal nur Vertikales Scrollen oder Horizontales Scrollen. oder halt beides, je nach dem.

Ich möchte gerne so ein Scorll Verhalten haben wie die SynEdit Komponenten und wie z.b. der Windows Editor Notepad oder der Linux Editor GEdit haben.
Mein Problem dabei ist das anpassen der Scrollbalken, sobald die Cursor Position gesetzt wird(der Blickende Strich den man bewegen kann mit den Pfeiltasten und der Maus).

Diese Bitte habe ich auch heute im DelphiGL Forum gepostet:
http://www.delphigl.com/forum/viewtopic ... 2453#62453" onclick="window.open(this.href);return false;
Ich dachte mir da soviel zeit verstrichen ist, kann das nicht schaden. Und sobald sich jemand meldet werde ich es dort in meinem Ersten Beitrag posten.

Edit02, Dienstag den 06.Januar.2009
Habe das Projekt ende letzten Jahres komplett neu angefangen. Hier einige Gründe die zu diesem Entschloss geführt haben:
01 - Code zu unsauber
02 - Schlechte Einteilung. >> Das Kern Projekt war nicht OOP Kompatibel
03 - Viele zu viele "Baustellen". Ich hatte die Übersicht darüber verloren was jetzt geht und was nicht
04 - "Baustellen/Bereiche" Angefangen die noch gar nicht dran sind.
04 - Textverwaltung.

Das neue Projekt ist zwar noch nicht so weit wie das alte aber immerhin, gibt es Fortschritte.
Diese 05 Gründe haben dazu geführt das ich das Projekt neu angefangen habe. Ich denke es hat sich gelohnt:
Das Projekt ist im Moment in drei Units aufteilt. Es gibt Pro Unit eine Klasse.
01. - uPLEdit / TPLEdit
Hauptklasse. Sie leitet die User Anfragen weiter. Mit dieser Klasse wird der User es "nur" noch zu tun haben. TPLEdit ist direkt von TCustomControl abgeleitet.
02. - uPLEdit_TextBuffer_Base / TPLEdit_TextBuffer_Base
Eine Absracte Bases Klasse für den "TextBuffer". Diese Klasse enthält Buchstäblich alle Methoden die mit dem TextBuffer zu tun haben. Ein kleiner Auszug aus dem Code:

Code: Alles auswählen

 
 procedure Move_Caret_Left(aShift:TShiftState); Virtual; Abstract;
    procedure Move_Caret_Right(aShift:TShiftState); Virtual; Abstract;
    procedure Move_Caret_Top(aShift:TShiftState); Virtual; Abstract;
    procedure Move_Caret_Bottom(aShift:TShiftState); Virtual; Abstract;
    procedure Move_Caret_LineEnd(aShift:TShiftState); Virtual; Abstract;
    procedure Move_Caret_LinePos1(aShift:TShiftState); Virtual; Abstract;
 
    procedure Move_Caret_PageLineDown(aShift:TShiftState); Virtual; Abstract;
    procedure Move_Caret_PageLineUP(aShift:TShiftState); Virtual; Abstract;
    procedure Sel_All; Virtual; Abstract;
 
    procedure Edit_InsertChar(const aKey:TUTF8Char); Virtual; Abstract;
 
    procedure Edit_BackChar(aShift:TShiftState); Virtual; Abstract;
    procedure Edit_DeletetChar(aShift:TShiftState); Virtual; Abstract;
    procedure Edit_NewLine; Virtual; Abstract;
 
    procedure Edit_Copy(const aStrList:TStrings=nil); Virtual; Abstract;
    procedure Edit_Cut; Virtual; Abstract;
    procedure Edit_Paste Virtual; Abstract;                                       
 
Ich denke die Namen sind selbsterklärend.

03. - uPLEdit_TextBuffer_StringList / TPLEdit_TextBuffer_StringList
Eine TextBuffer Klasse die von "TPLEdit_TextBuffer_Base" abgeleitet ist und eine StringList beinhaltet.

Das sind die drei Hauptklassen. Es werde noch weitere Units/Klassen folgen.
Diese Aufteilung den Primären Vorteil das ich verschiedene TextBuffer Klassen einbauen kann mit der Zeit. Z.B. meine PLLineList. Die es ermöglich Bunten Formatierten Text verwalten und auch Zeichen kann. Z.B. Währe es auch denkbar das der nächste TextBuffer mit Unterschiedlich große Buchstaben(Chars) umgehen kann.

Ich habe mir eine "aufgaben" liste erstellen um die Übersicht zu behalten was geht und was noch nicht geht. In der Liste sind über 35 Verschiedene Aufgaben. Mein Primäres Ziel ist es ersteinmal eine Standard Editor Komponente zu Entwickeln. Vergleichbar mit dem Memo. Im nächsten schritt lege ich die Grundlagen für den dritten Schritt.

Die Aufgabenliste ist in Phasen aufgeteilt. Da das Projekt nach sehr früh am Anfang ist gibt es noch nichts vorzuweisen. Außer das viele Aufgaben aus der ersten Phase schon eigentlich ganz gut Funktionieren.

Noch einmal meine Gründe für das Projekt:
01 - Weil ich dazu in der Lage bin.
02 - Weil ich z.b. viele Möglichkeiten einbauen möchte mit den man den Text Hintergrund gestalten kann. Z.B. ein Farbverlauf, eine Hintergrund Grafik,...
03 - Weil ich schon lange(Mehrer Jahre) den Wunsch habe so eine Komponente zu erstellen
04 - Weil es in Lazarus noch nicht viele Allativen gibt. Schaut euch mal im Editor Bereich in Delphi um. Dort gibt es recht viele....
05 - Weil es unter anderem auch Spaß macht. Warum schreibt jemand ein Snake Clone ? Davon gibt doch schon zig Tausende ? Genauso wie ein Supermario Clone, warum schreibt jemand seine eigene Programmiersprache ? Es gibt mehr als genug aus den man eine wählen kann/könnte

Ich denke jeder von uns hat seine eigenen Interessen beim Programmieren. Egal was er oder sie auch schreibt. Der eine schreibt lieber Spiele der andere lieber normale Anwender Software. Außerdem schreiben glaube ich die wenigsten die Programme 1 zu 1 genauso wie es das Vorbild tut. Es werden immer kleine Erweiterungen eingebaut, kleine oder große sachen die sich verändert haben. Die den wünschen des Entwicklers entsprechen.
Sonst würde es keine Hobby Programmier geben. Da es ja schon für jede Aufgabe mind. ein Programm gibt. Meistens sonder noch viel mehr. Als man Überblicken kann.

Ich denke das jeder von uns sich Projekt Themen auswählt die einem Intrisieren. Neben den Wunsch eine Editor Komponente zu schreiben, habe ich aber noch andere Bereiche z.b. die Spiele Entwicklung. Früher Primär mit Canvas. Inzwischen versuche ich mich in SDL/OpenGL/Andorra einzuarbeiten. Oder auch der Audio/Video Bereich. Es gibt einige Bereiche die mich sehr Intrisieren. Ich denke da sind wir alle gleich, oder ?

Ich nehme das verhalten von Gedit und das Verhalten von SynEdit mit in meinem Projekt auf.Z.b. ist mir dadurch aufgefallen das bei SynEdit STRG+ENTF(VK_DELETE) nicht geht. Aber STRG+BACK(VK_BACK) geht. Das ist Wortweise Löschen.

Zur Zeit versuche ich die Grundlagen Funktionen einzubauen. Ich hoffe mit dieser neuen Strategie bin ich in der Lage das Projekt soweit Fertig zu stellen das wir es nutzen können bzw. das es für un einen brauchbaren nutzen hat.

Ob das Projekt dann jemand nutzt oder nicht Spielt für mich keine Rolle. Ich denke für ein Vorhaben muss jeder selbst entscheiden welche Komponenten dafür geeignet sind. Jemehr es gibt desto schwieriger wird es natürlich. Aber auch desto Interessanter wird es.

Wenn ihr noch wünsche habt die ihr bei SynEdit/Memo vermisst und ich in der Lage bin diese Wünsche aufzunehmen werde ich es Natürlich versuchen.
Es kann auch gut sein das ich eure Wünsche ebenfalls schon einplane aber noch nicht erwähnt habe.
Eine Grobe Übersicht über geplante aufgaben:
Gatter
01 - Zeilenanzeige
02 - Sprungmarken Anzeige
03 - Codefolding
04 - Änderungen anzeigen(So wie neuerdings in SynEdit)

Tastenmanger
Der User soll über ein Config Dialog alle Funktionen mit einer Tasteversehen können. Es soll Tastenschmen geben.

Configdialog
Ein Standard Konfiguierungs Dialog, über das der User bequem die Möglichkeit hat die Komponente anzupassen. In den ersten Versionen soll es hauptsächlich der Optische Teile sein später auch noch andere z.b. der Tatenmanger soll hierdrin sein. Es soll Skinbar sein

Drucken
Es soll umfassende Möglichkeit geben einen geladenen Text auszudrucken.

Syntax Hervorhebung
Hier möchte ich wie schon oft erwähnt versuchen auf die uniSynEdit(Heißen die so) Dateien zu zurückzugreifen die XML Dateien habe ich schon in meinem Projekt Verzeichnis. So währe ich in der Lage auf einem Schlag über 300 Sprachen zu unterstützen.

Suchen, Ersetzen
Neben den Standard Funktionen, soll es auch möglich sein mit "reguläre Ausdrücke" zu suchen und zu ersetzten.

Ausführbare Anwendungen, den Soruce-Code, ein Screenshot sowie den Entwicklungsplan(Die Aufgabenliste) gibt es zu einem späteren Zeitpunkt oder auf Nachfrage.

Edit03: Freitag den 09.Januar.2009
Im Anhang findet ihr eine PDF Datei mit meinen Aufgaben die ich hier lösen möchte. Ich habe mir bevor ich neu angefangen habe eine Komplette Aufgaben Liste erstellen bzw, komplett ist sie noch lange nicht aber mit den Grundlagen aufgaben. Die Aufgaben sind in Phasen unterteilt. Jede Phase enthält jetzt ein Aufgaben Set.

In Jeder Aufgabe steht jetzt auch der Aufgaben Name, der Status und soweiter drin. So habe ich eine Übersicht über das was Fertig ist und was noch nicht. Weil sowas gerät schnell in Vergessenheit. Die Liste ist noch lange nicht "Fertig" aber schonmal ein kleiner Anfang würde ich sagen.

Wenn ihr noch Vorschläge habt für Aufgaben die in "Phase 1 - Grundlagen" rein gehören könnt ihr sie gerne Posten. Auch wenn ihr nicht ganz sicher seit.

Welche Aufgaben in "Phase 2" kommen und wie "Phase 2" heißt bzw. welchen Schwerpunkt setzt weiß ich noch nicht. Da "Phase 1" noch nicht Fertig ist. Ich gehe jetzt auch anders an das Projekt ran: Erstmal wirklich "nur" die WICHTIGEN Aufgaben. Die Wirklich an der Reihe sind.

Ich glaube mit dieser Taktik könnte ich es wirklich schaffen. Da es hier im Moment das Thema UTF8 und CO sehr "IN" ist, werde ich natürlich den Code entsprechen anpassen sobald die Themen "Abgeschlossen" sind . Im Code verwende ich eigentlich nur "WideString"

Edit04, Mittwoch der 28.Januar.2009
Das Projekt kommt gut voran. Das Markieren ist zu 95% Fertig, genau so wie die Undo und Reundo Funktion. Jeweils auch zu 95%. Die letzten 5% sind nicht so einfach hinzubekommen. Außerdem gibt es eine Doppeltklick Funktion für Wörter.
"Phase 1", nähert sich langsam aber sicher zum Ende. Es werden täglich immer weniger Aufgaben. Bevor ich den Soruce-Code hochlade möchte ich jedoch die Komponente ausreichend Testen um Fehler und Bugs zu aufzuspüren und zu elemenieren. Ich denke mit diesem Konzept müsste ich es eigentlich schaffen.

Mein Ziel zu erreichen. Hoffe ich. Bald gibt es auch ein Aktualisieren Entwicklungs Plan.
Dateianhänge
plana.pdf
Aufgaben Planung's Liste Version 1.0
(38.81 KiB) 111-mal heruntergeladen
Bild von der Beispiel Anwendung
Bild von der Beispiel Anwendung
Archiv.zip
Beispiel Anwendung nur für Linux. Version 00.00.00
(1008.48 KiB) 114-mal heruntergeladen
Zuletzt geändert von pluto am Mi 28. Jan 2009, 18:04, insgesamt 9-mal geändert.
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10925
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Ist ja schön, wenn du Spass hast, aber ich weiss nicht genau, welches Problem du damit lösen willst.
Im Moment geht's ja eher in Richtung TMemo mit fixem Font welches noch fast nichts kann. Synedit existiert und funktioniert.

Zum Titel: Das würde man eher als pre-Alpha bezeichnen, da eine Beta-Version den vollen Funktionsumfang grösstenteils bereits implementiert hat.
Siehe: http://de.wikipedia.org/wiki/Entwicklungsstadium_(Software" onclick="window.open(this.href);return false;)

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)

Beitrag von pluto »

m Moment geht's ja eher in Richtung TMemo mit fixem Font
Ja das ist auch erstmal mein Ziel. Es ist aber schon vorgesorgt das es auch unterschiedliche Farben geben kann bzw. Schrift Größen und auch andere sachen.

Jeder Buchstabe hat im Moment ein Pointer auf StyleDefault.
Darum sehen die alle gleich aus. Mein Ziel ist es sobald alles läuft,
eine weitere Liste hinzuzufügen:
Der User möchte jetzt ein Wort in Rot da stellen, das Word wird Markiert und in der Liste wird geschaut ob es schon den Eintrag Rot gibt. Wenn ja wird nur ein Pointer gesetzt, wenn nein wird der Eintrag hinzugefügt und ein Pointer gesetzt.

So die Idee. Aber diese Klasse/Funktion muss ich noch hinzufügen. So eine Komponente braucht halt seine zeit.
Synedit existiert und funktioniert.
Ja das ist wohl war, ich finde SynEdit auch richtig toll. Es ist aber kein RichEdit. Genau so eine Komponente möchte erstellen.

Es gibt zwar noch ein kleinen Da Stellungs Fehler der Auftritt wenn die Pfeiltasten gedrückt werden(Nach unten oder Oben) aber das ist nur eine frage der Zeit.

Ich hatte doch etwas andere antworten erwartet naja... mal abwarten. Ich finde diese Klasse schonmal nicht schlecht und es ist ein Anfang. Ich hoffe auch sehr das die anderen kern Funktionen bald hinzukommen.
Wie halt Scrollen und das Markieren.
Zum Titel: Das würde man eher als pre-Alpha bezeichnen
Danke für den Hinweis. Die bezeichnet Pre habe ich auch erst kürzlich in eine Zeitschrift gesehen, und dachte mir das es sowas wie Frühe Anfangst Version bedeuteten könnte. Da es gut klang habe ich es übernommen.

Den Link schaue ich mir gleich mal an.

Wer mitmachen möchte kann dies gerne tun. Dann lade ich die Sorucen doch noch hoch. Im Beispiel Programm verwende ich zwei weitere Komponenten die ich erstellt habe aber noch nicht veröffentlichen möchte, weil sie noch nicht Fertig sind und wie ich gestern gesehen haben auch noch Fehler enthalten.

Ist ja schön, wenn du Spass hast, aber ich weiss nicht genau, welches Problem du damit lösen willst.
Die ziele sollten jetzt eigentlich klar sein !
MFG
Michael Springwald

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)

Beitrag von pluto »

Es ist einige Zeit vergangen und ich wollte einfach mal eben berichten was ich in der Zeit gemacht habe, also:
01 - Markieren
Ein Text kann mit der Tastertur schon recht gut Markiert werden

02 - Scrollen
Das Scrollen habe ich erst in den Letzten tagen angefangen, aber es sieht schon recht gut aus.
Für das Scrollen habe ich meine Klasse Extra von TScrollingWinControl abgleitet.

03 - UTF-Unterstützung
Durch das UTF8KeyPress Event habe ich auch endlich UTF Unterstützung.
Und somit werden auch endlich umlaute richtig anzeigt. *G*

Evlt. war das ein Fehler, aber bisher hatte ich damit kaum Probleme.
Beim Scrollen wird auch nicht der Buffer vergrößert sondern nur eine Variable entsprechend hochgezählt.

Sonst habe ich nur kleiner BUGS entfernt und "Spielereien" eingebaut.

Ich denke eine neue Version könnte es Anfang nächster bzw. Ende nächster Woche geben.
Ich finde aber die Entwicklung schon recht gut und das ist mein bestes Ergebnis seit langen, habe ja viele viele versuche hinter mir um eine Editor Komponente zu erstellen die mit dem Memo vergleichbar ist, auch wenn meine wirklichen Ziele viel viel höher liegen.

Ich denke der Weg ist schon nicht schlecht. Die TObjectListen werden später durch eine Doppelt Verkette Liste ausgetauscht, da hatte ich mal eine Klasse erstellt die allerdings noch einige Fehler beim löschen glaube ich aufweist darum nehme ich auch erstmal nur TObjectListen.

So Viel dazu. Aber bis die Komponenten wirklich Fertig ist und sie für den Altag was taugt wird noch einige Zeit vergehen. Wenn alles gut geht ende dieses Jahres evlt. oder auch schon Führer oder Später je nach dem *G*.

Wenn jemand mit Erfahrung von euch mithelfen möchte braucht mir nur eine PM zu senden oder hier zu antworten. Dann lade ich die aktuellen Sorucen hoch, der Code ist aber nicht einfach zu lesen/verstehen.

Das Prinzip ist zwar eigentlich recht simpel aber es macht auch alles viel Komplizierter...
Und anfälliger für Fehler. Die Häufigste Fehler Meldung ist allerdings das der Index irgendeiner Liste entweder -1 oder höher als die Anzahl ist. Dabei prüfe ich schon überall ob der Index richtig ist. Naja. mit der Zeit werden auch die letzten Fehler behoben sein.

Ich baue erst mal nur die Tastertur Funktionen ein, sobald das alles klappt kommen die Maus Funktionen dran.
MFG
Michael Springwald

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)

Beitrag von pluto »

(Letzten Beitrag noch was hinzugefügt 03 UTF8)
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10925
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Bevor du dich zu sehr abrackerst: Ich bin auch an sowas dran.
Meins sieht im Moment so aus:
http://www.theo.ch/lazarus/wopr.png" onclick="window.open(this.href);return false;
Das ist die mit der Komponente geschriebene "Bedienungsanleitung" auf GTK2.

Das Ding heisst WOPR, von "Word Processor" und in der Mitte steht auch das OP für Object Pascal, wie bei OPBitmap.

Der Editor an sich ist langsam brauchbar.
Aber es gibt noch viel zu tun. z.B. Drucken, verschiedene Formate lesen und schreiben, ein anständiges Komponenten Interface, partielles Rendering für sehr lange Texte etc.
Ich weiss nicht ob das jemals fertig wird. Ein paar Monate werde ich aber mindestens noch brauchen bis ich das auf die Menschheit loslassen kann.

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)

Beitrag von pluto »

Oh ! Sieht nicht schlecht aus, ich sehe mein Editor nur als Versuch an.

Ich sehe auf dem Bild Scrollbalken ist das eine TScrollbox ? oder sind das TScrollbars ?

Denn mir ist ein Problem aufgefallen, wenn ich die Cursor Position Setzte müsste ich eigentlich berechnen wo und ob gescrollt werden soll.

Im Moment geht das nur von 0 bis zum ende.

Wie machst das du das mit der Verwaltung der Buchstaben ? das die Unterschiedlich aussehen ?

solange wir keinen Soruce-Code von unseren Editoren hochladen kann auch keiner mithelfen *G*...

Aber wie gesagt meiner ist auch schon recht weit.
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10925
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

pluto hat geschrieben: Ich sehe auf dem Bild Scrollbalken ist das eine TScrollbox ? oder sind das TScrollbars ?
Weder noch, das ist wie in Synedit gelöst. Ein TCustomControl welches via CreateParams Scrollbars verpasst kriegt.
pluto hat geschrieben: Wie machst das du das mit der Verwaltung der Buchstaben ? das die Unterschiedlich aussehen ?
Hatten wir alles schon:
http://www.lazarusforum.de/viewtopic.php?p=5773#5773" onclick="window.open(this.href);return false;

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)

Beitrag von pluto »

Das mit den Scrollen verstehe ich jetzt aber nicht. Ich schaue mir gerade selbst das Scrollen bei SynEdit an, aber noch steige ich da nicht durch. Zur Zeit habe ich das Problem beim Cursor setzten das da hingescrollt werden soll, sobald der Cursor gesetzt wird.
MFG
Michael Springwald

Aleks36
Beiträge: 11
Registriert: Di 22. Apr 2008, 11:12
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Beitrag von Aleks36 »

Ich schreibe auch gerade an einem eigenen Editor, allerdings unter Delphi. Dabei hat mir die Seite
http://www.catch22.net/tuts/
viel geholfen. Dort gibt es ein Tutorial, wie man mit C/C++ einen Editor unter Windows bastelt.
Du kannst wahrscheinlich nicht alles direkt übernehmen, aber die Ideen sind sehr gut. Da wird auch das Scrollen ausführlich erläutert.

Ich wünsche Dir noch viel Spass mit Deinem eigenen Editor!

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)

Beitrag von pluto »

Vielen Dank ! Danke für den Link.

Mit meinem Editor komme ich eigentlich recht gut vorran nur das Scrollen macht mir seit Tagen Probleme. Ich möchte gerne die Scroll Position berechnet wird, beim setzten des Cursors. Weil alles andere ist ja mist.

Naja, ich Wette wenn du keine WinApi Funktionen verwendest könntet wir deinen Editor anpassen für Lazarus. Wenn du möchtest. Weil das meiste von Delphi gibt es ja auch für Lazarus.

Edit01: Es zwar Englisch, aber evlt. verstehe ich ja trotzdem was. wer weiß.
Edit02: Leider ist das englisch noch zu Hoch. Das zu lesen würde zu lange dauern für mich. Aber ich werde es Trotzdem versuchen. Kennst du evlt. eine Seite auf Deutsch ? Weil sowas mit Google übersetzten zu lassen währe ja sinnlos(leider).
MFG
Michael Springwald

Aleks36
Beiträge: 11
Registriert: Di 22. Apr 2008, 11:12
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Beitrag von Aleks36 »

Leider kenne ich keine Seite auf Deutsch. Ich war schon glücklich, überhaupt eine Seite zu dem ganzen Thema zu finden!

Danke, aber im Moment möchte ich den Editor noch nicht portieren. Ich bin auch erst gerade im Alpha-Stadium und will zuerst dieses Projekt abschliessen, bevor ich mich an Portierungen etc. wage.

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)

Beitrag von pluto »

Ich habe große Probleme mit dem Scrollen. Alle meine Idee gehen nicht. Hast du evlt. eine ?
ich nehme die Scrollbalken. Wenn ich die Balken mit der Maus verschiebe geht ja auch alles.
Aber ich möchte ja sobald sich eine Cursor Position verändert das dann gescrollt wird. Und das bekomme ich einfach nicht hin.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Wie viele Leute wolln denn noch mit sowas anfangen, bin eigentlich ziemlich unglücklich darüber das Theo das unbedingt allein machen will. Seine Komponente ist schon sehr brauchbar (durft vor nem Jahr mal probiern).
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

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)

Beitrag von pluto »

Solange es kein Soruce gibt muss halt jeder seinen eigenen Schreiben. So ist das halt.

Ich denke die meisten dürften das auch wohl aus eigenen Interesse machen.
Wobei es natürlich besser sein dürfte sowas im Team zu machen als alleine.
MFG
Michael Springwald

Antworten