So erstellt man einen einfachen Texteditor (1.Teil)

    • VB.NET

    Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Fillure.

      So erstellt man einen einfachen Texteditor (1.Teil)

      Hallo und willkommen zu meinem Tutorial:
      So erstellt man einen einfachen Texteditor

      1. Einleitung
      In diesem Tutorial wollen wir uns damit befassen, einen einfachen Texteditor zu erstellen.
      Unsere Überlegungen:

      - Man soll selbstverständlich die Texte speichern und auch wieder öffnen, ein neues Dokument erstellen und das Dokument unter einen neuen Namen
      abspeichern können
      - Standard Funktionen wie Rückgängig, Wiederholen, Ausschneiden, Kopieren, Einfügen und Alles Makrieren gehören natürlich dazu
      - Man soll die Schriftfarbe, Schriftart, Schriftschnitt und auch die Schriftgröße wenn möglichst über einen Dialog rerändern können
      - Der Benutzer soll möglichst eine benutzerfreundliche Oberfläche bekommen (GUI, Graphical User Interface)
      - Es soll eine Extrafunktion wie "Aktuelle Uhrzeit und Datum einfügen" dabei sein.

      2. "Zutaten"
      - 1 x RichTextBox (das wohl am wichtigsten Objekt)
      - 1 x MenuStrip (mit Datei, Bearbeiten, Extras und Hilfe)
      - 1 x StatusStrip (dort soll das Datum angezeigt werden)
      - 1 x OpenFileDialog
      - 1 x SaveFileDialog
      - 1 x FontDialog (Eigenschaft "ShowColor = True")
      - Die Form nennen wir "Textverarbeitung"

      3. Die Anordnung
      - Die RichTextBox möglichst in die Mitte ziehen
      - Den Rest wie MenuStrip und Statusstrip wird ja automatisch angeordnet)

      4. Funktionalität
      Beginnen wir mit dem MenuStrip "Datei".
      Fügen Sie dazu 5 neue Einträge hinzu und 2 Separator
      Der erste Eintrag bekommt den Text "Neu", der zweite "Öffnen", dann kommt ein Separator, dann einmal " Speichern" und "Speichern unter".
      Zu guterletzt kommt wieder ein Separator und darunter der Eintrag "Beenden".
      Aus allererstes System.IO importieren (Imports System.IO, soll komplett gleich am anfang stehen)
      Was passiert, wenn man auf "Neu" klickt?

      Folgendes soll passieren: Als erster soll ein SaveFileDialog mit den Titel "Speicherort des neuen Dokumentes festlegen" erscheinen.
      Dazu folgender Code:

      Quellcode

      1. RichTextBox1.Clear() ' Die Textbox wird geleert
      2. SaveDialog1.Title = "Speicherort des neuen Dokumentes festlegen" ' Der Titel des SaveFileDialogs wird geändert
      3. SaveDialog1.ShowDialog() ' Der SaveDialog erscheint
      4. Dim writer As New StreamWriter(savedialog.FileName) ' Jetzt geht's los mit dem Speichern!
      5. If Not (writer Is Nothing) Then ' Wenn der Streamwriter nicht "nichts ist" dann soll ausgeführt werden
      6. writer.Write(RichTextBox1.Text) ' Text aus der RichTextBox wird gespeichert
      7. writer.Close() ' Der STreamWriter wird beendent
      8. End If
      9. Me.Text = "Textverarbeitung (" & savedialog.FileName & ")" ' Der Name der Form wird verändert

      Folgendes Problem habe ich noch: Die festgelegte Schriftart, Schriftfarbe und Schriftschnitt und Schriftgröße wird nicht gespeichert, doch darum kümmern
      wir uns im 2. Teil.

      Was passiert, wenn man auf "Öffnen" klickt?
      Folgende Sachen sollen sich dann abspielen: Die RichtTextBox soll geleert werden und dann aber auch wieder mit geöffneten Text befüllt werden.
      Das machen wir am besten so:

      Quellcode

      1. If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then 'Wenn auf OK geklickt wird, dann aoll ausgeführt werden
      2. Dim reader As New StreamReader(OpenFileDialog1.FileName) ' Neuer Streamreader
      3. Dim dateiinhalt As String = reader.ReadToEnd
      4. reader.Close()
      5. Me.Text = "Textverarbeitung (" & OpenFileDialog1.FileName & ")" ' Text wird verändert
      6. RichTextBox1.Clear() ' Die RichTextBox1 soll geleert werden
      7. RichTextBox1.Text = dateiinhalt ' RichtextBox1.Text = Der geöffnete Text
      8. End If

      Wie oben schon gesagt: Die festgelegte Schriftart, Schriftfarbe und Schriftschnitt und Schriftgröße werden nicht geöffnet, darum kümmeren wir uns
      im 2. Teil

      Was passiert, wenn man auf "Speichern" klickt?
      Folgendes soll sich abspielen: Der aktuelle Inhalt soll gespeichert werden
      Das machen wir so:

      Quellcode

      1. Dim writer As New StreamWriter(savedialog.FileName) ' Neuer Writer... Wie üblich, halt.
      2. SaveFileDialog1.Title = "Speichern" ' Der Name des SaveFileDialogas wird geändert
      3. If Not (writer Is Nothing) Then
      4. writer.Write(RichTextBox1.Text)
      5. writer.Close()

      Am besten legt ihr am Anfang schon einen Pfad fest, indem der Text gespeichert werden soll, sonst gibt's Probleme...

      Was passiert, wenn man auf "Speichern unter" klickt?
      Folgendes soll sich abspielen: Der Text soll unter einem anderen Namen gespeichert werden

      Quellcode

      1. If savedialog.ShowDialog = Windows.Forms.DialogResult.OK Then
      2. SaveFileDialog1.Title = "Speichern unter..."
      3. Dim writer As New StreamWriter(savedialog.FileName)
      4. If Not (writer Is Nothing) Then
      5. writer.Write(RichTextBox1.Text)
      6. writer.Close()
      7. End If
      8. Me.Text = "Textverarbeitung (" & savedialog.FileName & ")"
      9. End If

      Folgendes Problem habe ich noch: Die festgelegte Schriftart, Schriftfarbe und Schriftschnitt und Schriftgröße wird nicht gespeichert, doch darum kümmern
      wir uns im 2. Teil.

      Was passiert, wenn man auf "Beenden" klickt?
      Ganz einfach: Das Programm soll beendet werden:

      Quellcode

      1. Me.Close()


      Nun sind wir im Menü "Bearbeiten"
      1. Menü: Rückgängig
      2. Menü: Wiederholen
      Seperator
      3. Menü: Kopieren
      4. Menü: Einfügen
      Seperator
      5. Menü Ausschneiden
      Seperator
      6. Menü: Alle Markieren

      Was passiert, wenn man auf "Rückgängig" klickt?
      Die Aktion in der RichTextBox soll "Rückgängig" gemacht werden. Dazu einen ganz einfachen Code:

      Quellcode

      1. RichTextBox1.Undo()


      Was passiert, wenn man auf "Wiederholen" klickt?
      Die Aktion in der RichTextBox soll "Wiederholt" werden. Dazu einen ganz einfachen Code:

      Quellcode

      1. RichTextBox1.Redo()


      Was passiert, wenn man auf "Kopieren" klickt?
      Der selektierte Text in der RichTextBOx soll ind die Zwischenablage verschoben werden.

      Quellcode

      1. If Not RichTextBox1.SelectedText = Nothing Then
      2. My.Computer.Clipboard.SetText(RichTextBox1.SelectedText)
      3. End If


      Was passiert, wenn man auf "Einfügen" klickt?
      Der aktuelle Text in der Zwischenablage soll eingefügt werden, Bilder werden im TextEditor nicht unterstüzt. (Wie bei Editor)

      Quellcode

      1. RichTextBox1.SelectedText = My.Computer.Clipboard.GetText


      Was passiert, wenn man auf "Ausschneiden" klickt?
      Erst soll der markierte Text in die Zwischenablage verschoben werden und dann gelöscht werden. Dazu folgender Code:

      Quellcode

      1. If Not RichTextBox1.SelectedText = Nothing Then
      2. My.Computer.Clipboard.SetText(RichTextBox1.SelectedText)
      3. RichTextBox1.SelectedText = ""
      4. End If


      Was passiert, wenn man auf "Alles Markieren" klickt?
      Der ganze Text in der RichTextBox soll selektiert werden.
      Der Code ist "easy":

      Quellcode

      1. RichTextBox1.SelectAll


      Nun zu "Extras":
      1. Menü: "Aktuelles Datum und Uhrzeit einfügen"
      2. Menü: "Schriftmenü"

      Was passiert, wenn man auf "Aktuelles Datum und Uhrzeit einfügen" klickt?
      Das aktuelle Datum und die Uhrzeit soll eingefügt werden.

      Quellcode

      1. RichTextBxo2.SelectedText = Now


      Was passiert, wenn man auf Schriftmenü" klickt?
      Das Schriftmenü (ShowColor = True) wird angezeigt und man kann bei den selektierten Text viel ändern)

      Quellcode

      1. FontDialog1.ShowDialog()
      2. RichTextBox1.SelectionFont = FontDialog1.Font ' Ausgewählte Schriftart mit Schriftgröße, Schrifteffekt und Schriftschnitt eird gesetzt
      3. RichTextBox1.SelectionColor = FontDialog1.Color
      ' Die gewünschte Schriftfarbe wird gesetzt

      5. Ein kleines Extra...
      Im Statusstrip soll nun auch das Datum und die Uhrzeit eingefügt werden.
      Geht ganz einfach:

      Quellcode

      1. StatusStrip.Items.Add(now)


      6. Zum Schluss
      Das Programm hat noch ein paar Bugs, die im 2. Teil behoben werden.

      Ich hoffe, das Tutorial hat euch gefallen und Sie erweitern ihren TextEditor um ein paar tolle Funktionen!

      Gruß
      Tobi :thumbsup:

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Tobiiii“ ()

      VB-Mannn schrieb:

      ich habe jetzt alles in eine txt datei gepackt um es mal auszuprobieren , doch unter was soll ich es speichern um es zu aktivieren?
      und muss ich bestimmte "Funktionen" in nur eine datei packen oder alles in eine?
      http://www.microsoft.com/germany/Express/product/vb.aspx

      .vb, aber ohne einen compiler wird dir das nicht viel nützen
      Ist gut nur das das mit dem Datum unsinig ist meiner meinung nach.. Vllt solltest du noch erklären wie man Zeichenanzahl und Zeilenanzahl in der Statusbar anzeigen kann

      VB.NET-Quellcode

      1. Dim writer As New StreamWriter(savedialog.FileName) ' Jetzt geht's los mit dem Speichern!
      2. If Not (writer Is Nothing) Then ' Wenn der Streamwriter nicht "nichts ist" dann soll ausgeführt werden
      3. writer.Write(RichTextBox1.Text) ' Text aus der RichTextBox wird gespeichert
      4. writer.Close() ' Der STreamWriter wird beendent
      5. End If
      Warum so umständlich? Warum prüfst du überhaupt ob der Streamwriter "nicht nichts ist"!?

      VB.NET-Quellcode

      1. RichTextBox1.SaveFile(savedialog.FileName, RichTextBoxStreamType.PlainText)


      Und beim Öffnen einer Datei kannst du auch RichTextBox1.LoadFile() nutzen.
      Hi.
      Es gibt eine Funktion im Control, die heißt Save(). Also einfach <RTBName>.Save(parameter) benutzen.
      Ein zweiter Teil wird wohl nicht kommen, da der Benutzer gelöscht wurde.

      Gruß
      To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

      At some point in time, you recognize that knowing more does not necessarily make you more happy.