ich mache mal ein neuen Thread zum Thema auf. Weil ich habe ein Entwicklung Plan erstellt.
Denn ich hier einfügen möchte. Wenn jemand was dagegen hat kann monta ja diesen Beitrag zum anderen hinzufügen bzw. anfügen. Hier der Plan. Ich hoffe einer von euch list ihn durch
und postet seine Meinung oder Verbesserung oder Erweiterung Vorschläge !
Jeder der mir dabei helfen möchte kann dies tuen:Entwicklungs Plan für die Editor Komponente !
Phase 1:
1.1
Die Kompoente sollte von TCustum Control abgeleitet werden.
und sollte ein TPanel und ein TScrollbox benutzen.
Das Panel zum anzeigen und die TScrollbox zum Scrollen.
1.2
Jetzt kommt die Struktur dran. Wie die Daten einzeln gespeichert werden.
Ich habe mich für so eine Struktur entschieden: Siehe Anhang: uplTypes.pas
1.3
Jetzt kommt das Zeichnen Dran.
1.4
Nun kommt ein Cursor ins Spiel. Dazu brauche ich 5 weitere Variablen.
cx,cy > Aktuelle Zeile und Spalte
mcx, mcy > Aktuelle zeichen Position, wird gebraucht wegen dem Maus Klick
CursorChangeStat > Wurde der Curosr jetzt mit der Maus oder Tastertur verwendet ? wurde
der Cursor Überhaupt verändert ?
Beim Zeichnen wird das alles geprüft und der Cursor wird eingezeichnet einfach eine 2 Pixel Breite
Vertikale Linen.
1.5
Jetzt kommt das Markieren ins Spiel, damit habe ich auch immer wieder Probleme.
Einezle Buchstaben zu Markieren ist kein Problem, aber so ein Standard Markierung Verhalten
hinzubekommen.
Ist gar nicht mal so einfach, es soll ja auch noch schnell Markiert werden.
1.6
Methoden einführen um einen Markierten Text auf eine Bestimmte Style zu setzen.
ein Style umfasst bei mir:
bgColor:TColor; // Hintergrund Farbe
fgColor:TColor; // Vordergrund Farbe
font_size:Integer; // Schrift Größe
font_name:String; // Schrift Name
font_style:TFontStyles; // Schrift style z.b. Fett, Kusiv, oder unterstrichen.
1.7
Nun Kommt das wesentliche was neu an meine Idee ist.
Ein Object Besteht aus drei Punkten:
// ein Buchstabe der mit CHR umgewandelt wird.
c:word
// Ist eigentliche nicht umbedingt erfoderlich, aber vereinfacht das ganze sehr.
// ist das Object(Buchstabe) Markiert oder nicht ?
sel:Boolean
// das Aussehen des Buchstaben
Style:TPlTextStyle;
Ändere ich jetzt von einem Markierten Text ein Style z.b. die Vordergrund Farbe wird auf Rot gesetzt:
Wird zu erst in eine Globale Liste geschaut, ob es so ein Style schon gibt. Damit meine ich.
Gibt es schon Rote Buchstaben, aber nur rot. Wenn ja wird zum Object der Pointer gesetzt.
Ist die liste leer wird auto. eingefügt und ein Pointer gesetzt.
Ich gehe davon aus, das die Meisten evlt. Fett nutzen werden,
aber kaum jemand butte Texte machen möchte.
Wenn doch, kann ich ja eine entsprechende Option einführen,
das es keine Globale Liste gibt. bzw. verwendet wird
Aufgrund dieser Anhame finde ich die Idee gar nicht mal so schlecht:
Weniger Speicher verbrauch z.b.
1.8
Editieren von einem Text.
D.h. ich kann den Text mit der Tastertur verändern:
Buchstaben hinzufügen Buchstaben löschen Zwischenablage benutzen.
1.9
Sprungmarken Unterstützung:
über Strg+G+S+zahl oder Buchstabe soll die Cursor Position gespeichert werden
Über Strg+S+zahl oder Buchstabe soll zu einem gespeicherten Cursor Position hin gesprungen werden
Mehrer Kopiere Stellen:
Normalerweise kann ja nur über Strg+C ein Text Markiert und über Strg+V eingefügt werden.
ich möchte noch einen schrift weitergehen:
Kopieren :Strg+c+zahl oder Buchstabe
Ausschneiden :Strg+x+zahl oder Buchstabe
Einfügen : Strg+v+zahl oder Buchstabe
auf diese Art und weise können sich auch zwei oder drei stellen gespeichert werden oder halt auch mehr.
Diese Funktion habe ich erst einmal in meinen Projekte eingebaut vor einigen Jahren.
Phase 2
2.1
Es soll eine vorgefertigt Leiste geben, die mit dieser Komponente verknüpft werden kann.
und andersherum auch. So könnte der Usr einfach diese Leiste Platzieren anpassen und fertig.
2.2
Es sollen mehrer Such Varianten angeboten werden die alle zusammen arbeiten können:
1. Normales Windows suchen. D.h ich rufe ein Such Dialog über Strg+F beispielsweise auf gibt meinen Text ein
und gehe auf suche, dialog verschwindet und ich kann per F3 oder Strg+L(Delphi Variante) weiter suchen.
2. Linux such Variante(Gedit)
Ich gebe meinem Text im Such Dialog ein. Alle gefunden stellen sollen hervorgehoben werden.
(Die Farben können unter den Einstellungs Möglichkeiten Verändert werden)
3. Delphi/Lazarus Variante
Alle gefunden Stellen sollen in einer ListView oder Listbox angezeigt werden.
Dafür soll es auch wieder was Fertig geben, damit das Verknüpft werden kann. So wie bei punkt 2.1.
Es soll jetzt über F3 Weiter gesucht werden können und über F4 soll die zulesetzt gefunden Such stelle
angesprungen werden.
Das Suchdialog sollte folgende möglichkeiten haben:
Checkbox: Groß Kleinschreibung
Checkbox: Als Wort
Checkbox: Nur im Markierten Teil suchen
Checkbox: Ab Cursor Position suchen.
Combobox: alle such Wörter sollen abgespeichert werden.
Das ersetzen soll die gleichen Möglichkeiten habe.
2.3
In dieser Komponente sollen auch Grafiken angezeigt werden oder andere Objekte.
Die dann mit der Maus verschoben werden können.
Andere Objekte währen z.b. GUI-Elemente oder auch Boxen wie im Forum z.b.
ich schreibe eine Dokumentation und möchte ein Soruce-Code einfügen das könnte in einem Entsprechen box
rein. wo dann ein Higleiter ausgewählt werden könnte.
Andere Objekte könnten auch noch Diagramme sein.
2.4
Gatter wie bei den SynEdit Komponente. Ich möchte Links neben der Kompoente eine Leiste haben.
wo z.b. Zeilennummern angezeigt werden könnten oder aber auch Code-Folding.
Oder auch Halte Punkte oder aber user Definierte Leisten für dise Zeile damit dise Zeile
schneller wieder gefunden werden kann.
2.5
Higleiter. Für die Boxen die ich in punkt 2.3 angesprochen habe soll es natürlich eine Vielzahl von
Fertigen higleiter geben.
Jeder Higleiter soll folgende Attribute unterstützten:
Was sind Schlüsselwörter
Was sind Zeichen ketten ?
Was Sind Symbole ?
Was sind Kometare ? gibt es mehrzeilige Kommentare ? wenn ja wie werden sie defniert ?
Wie Werden Proceduren und Funktionen Definiert
Wie soll der Hintergrund da gestellt werden ? soll evlt. ein Hintergrund-Grafik verwendet werden ?
Welche Dateiendungen sind Typisch ?
Wie Heißt die Sprache ?
Welcher Gattung gehört sie an ?
z.b. Konfiguration wie ini oder xml Dateien Script Sprachen wie z.b. HTML, Perl oder PHP
und soweiter
---------------------------
Zu jeder Sprache sollten auch noch ein Paar Infos zusammen getragen werden:
Von Wem wurde sie erstellt ? zu welchen Zweck ?
Für eine Strg+Leertasten Funktion soll es fertige vorsortiere Listen gibt.
z.b. für Object Pascal lazarus Variante: hier sollen alle Proceduren, Funktionen, Klassen, Datentypen rein
und die Information in welcher Unit sie gespeichert wird.
Drücke ich jetzt Strg+Leertaste bei ShowMessage und weiß nicht welche Unit sie rein gehört.
ist es nicht so schlimm. Da die Strg+Leertasten Funktion diese Unit auto. hinzugefügt werden könnte.
Wenn es sie noch nicht gibt.
Wird jetzt F1 gedrückt bei zb. Showmessage soll sich ein Dialog öffnen mit Varianten von ShowMessage und
mit deren Parameter. und der User soll dort jetzt eine Beschreibung eingeben können und ein oder mehrer Beispiele.
Für ein einfaches Hilfe System. Ich hoffe das ich damit eine umfassende Hilfe eines Tages habe.
Zum Higleiter gehört auch wie werden blöcke gebildet ? das ist wichtig für das Code Folding.
Welche Typische Vorlagen für das Aussehen gibt es für diese Sprache ?
Damit meine ich das aussehn. z.b. könnte jetzt jemand das aussehen eines Higleiter verändern und speichert
dies in einer Vorlage ab.
außer dem möchte ich noch eine Strg+J Funktion einfügen. Wo z.b. Fertige Code-Vorlagen eingefügt werden könnten.
Diese Infos sollen jetzt in eine Text Datei gespeichert werden(ini Datei).
2.6
Wenn ein Higleiter richtig erstellt wurde soll es eine Funktion geben.
Die Listen für die Vervollständigung anlegen kann der jeweiligen Sprachen.
Dazu muss natürlich das basses Verzeichnis angeben werden was bei Delphi schonmal schwer sein wird, wenn
man nur die PE Version hat. Bei Lazarus hingehen dürfte das kein Problem werden.
2.7
Din Funktion. Ich möchte verschiedene Papier-Formate unterstützen.
Ob dies eine extra Komponente werden sollte weiß ich noch nicht genau.
Die seiten sollten in Quer und Hochformate angezeigt werden können.
So das damit auch z.b. Bewerbungen geschrieben werden könnte.
und wenn ich ein Text schreibe gleich weiß wie viele Seiten Papier ich hierfür brauche.
2.8
Druck Vorschau.
2.9
Druck Funktion.
Dies soll ein eigenes Dialog werden. Wo ich versuchen werde,
standart Informationen über den Drucker anzuzeigen.
und was alles ausgedruckt werden soll.
z.b. nur der Markierte Teilel ? oder alles ?
in Farbe oder Schwarz weiß ? Boxen in Farbe Drucken ?
Phase 3
3.1
Tabellen. Ich möchte eine Tabelle schaffen die das kann was sie in OpenOffice kann.
3.2
Feldbefehle.
z.b. füge ich ein Datum ein. Bei jedem öffnen wird dieses Datum nach
dem eingestellt Anzeige Formt geändert bzw. auf das heutige gesetzt.
Oder für die Seiten Nummern bzw. Anzahl. z.b. in Kopf oder Fußzeile.
3.3
ich weiß jetzt nicht wie diese Funktion heißt aber ich beschreibe sie mal kurzt.
ich gebe jetzt z.b. so eine Strucktur an.
01 Text
Weiter Text zu 01
02 Text 2
weitere Text zu 02
und soweiter.
3.4
BMP-Font. Wenn ich ein Dokument weiter gebe und dies soll genau so aussehen wie
auf meinem System was ich verwende. könnte ich von einer Schrift einfach
eine BMP-Font erstellen und dann wird BMP-Font verwendet.
Wie eine normale Schrift art. Nur halt das es die jetzt überall gibt.
weil sie zusammen mit dem Text in einer Datei gespeichert wird.
3.5
Speicherformate:
Ein Bin Format. das Alles Unterstütz.
Verschiedene Export und Import Formate z.b. für Word oder OpenOffice.
oder HTML. oder RTF Dateien. Auch PDF Dateien sollen geladen werden können(wenn es erlaubt ist)
3.6
Frames Unterstützung. Für das anzeigen von HTML Dateien z.b.
oder für eine Dokumentation.
3.7
Es soll die neuste Version von HTML unterstützt werden.
evlt. bekomme ich auch die unterstützung von PHP oder Perl irgendwie hin.
oder aber auch Javascript. aber das ist nicht umbedingt mein ziel.
Währe schön wenn es geht. aber nicht schlimm, wenn es nicht geht.
3.8
Mehrer Sprachen sollen unterstützt werden: Deutsch, Englisch, Französisch und soweiter. oder auch
Japanisch.
3.9
Automatischer Zeilenumbruch
Aufzählung Typen
Deutsche Rechtschreibprüfung wie in Firefox
Zeile Hervorhebung für die Aktuelle zeile
User Definierte Zeilen Hervorhebung um z.b. schnell eine bestimmte Zeile wieder zu finden
Wie ihr jetzt sehen könnt bin ich mir im klaren Darüber wie viel Aufwand es
ist so eine Komponente zu entwickeln.
ich hoffe wenn ich Phase 1 oder 2 abgeschlossen habe, das ich von euch evlt. unterstüzung bekomme.
z.b. im erstellen von Higleitern.
So eine Komponente ist schon sehr lange mein wunsch und ich HOFFE das ich es fertig bekomme.
in dem er Higleiter erstellt wenn es soweit ist.
Vorschläge zum Soruce Code dieser Komponente macht.
Vorschläge zur verwendet Struktur. ich verwende z .b. eine "Doppelt Verkette Liste"
viele meinen zwar eine TList reicht, aber nach einigen versuchen habe ich gemerkt das es doch nicht reicht. Auch wenn es viele nicht glauben wollen. Es ist so. Genauso wie die Erde rund und nicht flach ist.
Edit:
Die Liste ist eigentlich überholt. Ich werde sie mal in laufe Der Zeit einpassen.
Ich habe mir andere Ziele inzwischen gesetzt. Viel einfachere.