Smallpad reBoot

    • Beta
    • Closed Source

    Es gibt 139 Antworten in diesem Thema. Der letzte Beitrag () ist von chenjung.

      Bleibt jetzt nur noch die Frage, was dieser .ctor Fehler ist?

      Habe nochmal den Quelltext durch geschaut aber ist einfach nix zu finden? Auch in den anderen Formen nicht? Das ist doch sehr merkwürdig.
      Ihr sucht Webspace für eure Projekte? Dann sagt bescheid - kostenfrei und ohne Werbung!
      Welcher Fehler? ctor steht auf jeden Fall für Konstruktor.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      Hi, bei einem Doppelklickt passiert einfach nichts.

      Dies steht im Fenster.


      Instanzen dieses Fehlers (1)

      1.

      Aufrufliste
      ausblenden

      bei
      Microsoft.VisualStudio.Shell.Design.Serialization.CodeDom.CodeDomEventBindingService.ValidateMethodName(String
      methodName)
      bei
      System.ComponentModel.Design.EventBindingService.EventPropertyDescriptor.SetValue(Object
      component, Object value)
      bei
      System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeAttachEventStatement(IDesignerSerializationManager
      manager, CodeAttachEventStatement statement)
      bei
      System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager
      manager, CodeStatement statement)


      PS: kleines Preview :)


      Mit dem nächsten Update folgen dann auch weitere Infso.
      Ihr sucht Webspace für eure Projekte? Dann sagt bescheid - kostenfrei und ohne Werbung!

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

      Also lass bitte das ganze My. Zeug weg.
      Zu dem Quellcode den du oben hast...
      Ich habe mal ein kleines Beispiel erstellt, wie du mit ner Funktion eine Datei öffnen und den aktuellen Text ggf. speichern kannst.
      Hier wird geprüft ob der aktuelle Text abweicht von dem aus der aktuellen Datei und nur dann die Abfrage ob zu speichern ist gewählt.
      Eine Auswahl einer neuen Speicher-Datei wird ebenfalls nur dann aufgerufen, wenn die Datei nicht schon vom letzten Öffnen bekannt ist.
      Der Inhalt wird ebenfalls nur dann ersetzt, wenn alles i.O. ist.
      Spoiler anzeigen

      VB.NET-Quellcode

      1. ​Imports System.IO
      2. Public Class Form1
      3. Private aktuelleDatei As String = ""
      4. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
      5. 'Beispielhafter Aufruf der Funktion
      6. Dim ofd As New OpenFileDialog
      7. If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
      8. If Oeffne_neue_Datei(TextBox1.Text, ofd.FileName, aktuelleDatei) Then
      9. aktuelleDatei = ofd.FileName
      10. End If
      11. End If
      12. End Sub
      13. ''' <summary>
      14. ''' Öffnen einer neuen Datei
      15. ''' </summary>
      16. ''' <param name="inhalt">Inhalt der aktuellen Datei</param>
      17. ''' <param name="dateiNeu">Pfad der neuen Datei</param>
      18. ''' <param name="dateiAktuell">Pfad der aktuellen Datei</param>
      19. ''' <returns>Information ob die Datei korrekt geöffnet wurde</returns>
      20. ''' <remarks></remarks>
      21. Private Function Oeffne_neue_Datei(Optional ByRef inhalt As String = "", Optional ByVal dateiNeu As String = "", Optional ByVal dateiAktuell As String = "") As Boolean
      22. 'Prüfung ob Inhalt gefüllt oder abweichend von aktueller Datei
      23. If (File.Exists(dateiAktuell) AndAlso
      24. inhalt <> System.IO.File.ReadAllText(dateiAktuell, System.Text.Encoding.Default)) OrElse (Not File.Exists(dateiAktuell) AndAlso inhalt <> "") Then
      25. Dim msgResult = MessageBox.Show("Soll ich den Text sichern?", "Text vorhanden, sichern?", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
      26. If msgResult = Windows.Forms.DialogResult.Yes Then
      27. Dim sfd As New SaveFileDialog
      28. If dateiAktuell = "" Then
      29. If sfd.ShowDialog = Windows.Forms.DialogResult.OK Then
      30. dateiAktuell = sfd.FileName
      31. Else
      32. Return False 'Wenn Datei nicht ausgewählt dann abbruch
      33. End If
      34. End If
      35. File.WriteAllText(dateiAktuell, inhalt, System.Text.Encoding.Default)
      36. inhalt = ""
      37. ElseIf msgResult = Windows.Forms.DialogResult.Cancel Then
      38. Return False 'Abbruch weil auf Abbruch gedrückt
      39. End If
      40. End If
      41. If File.Exists(dateiNeu) Then
      42. inhalt = File.ReadAllText(dateiNeu, System.Text.Encoding.Default)
      43. Return True
      44. End If
      45. Return False
      46. End Function
      47. End Class
      Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
      Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
      Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
      ... Nun solltest es selber wissen. :'D
      Danke für deine Hilfe :)

      Bezüglich des Codes, ich bin mir nicht ganz sicher, habe ein bisschen damit getestet.

      Soll es eine Meldung geben, wenn die gespeicherte Datei verändert wurde?
      Ihr sucht Webspace für eure Projekte? Dann sagt bescheid - kostenfrei und ohne Werbung!
      Bei dem Code fragt er nur nach, wenn der Inhalt der Datei <> dem Inhalt der Textbox ist ODER es noch keine Datei gibt und der Inhalt der Textbox nicht leer ist.
      Also dann wenn es etwas zu speichern gibt.

      Und er fragt nur nach einem Speicherpfad, wenn er diesen noch nicht kennt.
      Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
      Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
      Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
      ... Nun solltest es selber wissen. :'D
      Update: Version 1.04 ist nun auf der 1. Seite.

      Folgende Updates:

      - Bei Text in der Textbox fragt SmallPad nun, ob der Texte vor dem Beenden gespeichert werden soll.
      - Selbes beim öffnen einer neuen Datei.
      - Systemmeldungen sind ein.- und ausblendbar.
      - Hinweise und Danke Formen hinzugefügt.
      - Neue Icons für das Rechtsklickmenü und in den anderen Menüs.

      Demnächst wird sich um folgendes gekümmert:
      - Wörter / Buchstaben zählen.
      - Druckerauswahl

      Danke an alle, die so eine geduld mit mir haben :)
      Ihr sucht Webspace für eure Projekte? Dann sagt bescheid - kostenfrei und ohne Werbung!

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „chenjung“ ()

      Hey @chenjung
      Also aufgefallen ist mir folgendes, bzw. das könnte man ausbessern/ändern:

      Dankeform / Versionsform
      • Beide als FixedToolWindow hinterlegen.
      • Da du auf der jeweiligen Form ein "Schliessen"-Button hast könntest du im Designer unter den Properties deiner Form folgendes hinterlegen. (CancelButton.png) Somit würde durch drücken von ESC die Form geschlossen werden. (Sehe das als Standard, mit ESC die Form schließen zu können)
      • Beide durch .ShowDialog aufrufen (Finde ich auch schöner, da man nicht einfach auf die Anwendung zurück kann, bis man das Fenster geschlossen hat ;) )

      Maximieren / Minimieren
      • Evtl. die Bilder austauschen, ich assoziiere die Lupe mit Zoom-Inhalt (Maxi-Minimize.png) :D

      Aber ansonsten, funzt es so, wie es soll. 8-)
      An Projekten kann man wachsen.. Von daher finde ich es gut, das du Dir eine Aufgabe ausgesucht hast.

      Edit:
      Speichern/Speichern unter müsstest du noch anpassen. Momentan bekommt man als Vorschlag den kompletten Pfad zur zuletzt gespeicherten Datei, vielleicht nur auf Dateinamen begrenzen. (Speichern.png)

      Grüße,
      Drahuverar
      Bilder
      • CancelButton.png

        5,28 kB, 366×134, 164 mal angesehen
      • Maxi-Minimize.png

        10 kB, 286×88, 167 mal angesehen
      • Speichern.png

        57,09 kB, 960×540, 191 mal angesehen
      Option Strict On!

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Drahuverar“ ()

      Kleines nettes Gimmick wäre ja noch, dass man eine Datei auf deinen SmallPad ziehen kann und er diese dann öffnet. Ist ja mit Darg & Drop im Handumdrehen erledigt.

      Zudem wäre es vielleicht noch schön die Möglichkeit zu bieten eine Datei mit einer vom User auswählbaren Codierung "neu" zu öffnen und auch zu speichern.
      Denn... was ist, wenn ich mit dem SmallPad eine Datei aufmache die in UTF-8 erstellt wurde...? Sonderzeichen ade! ;D
      Auch das wäre ja recht leicht umzusetzen.
      Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
      Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
      Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
      ... Nun solltest es selber wissen. :'D

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

      Danke für eure Hinweise.

      @Drahuverar: das sollte nicht sein. Das Speichern Feld sollte eig leer sein. Bei mir sehe ich da nichts? O.o

      Deine anderen Hinweise stehen auf der ToDo.

      @Memoanmichselbst: das werde ich mal versuchen drag& drop.

      Allerdings mit UTF8 muss ich mal gucken wegen unlauten. Ich meine bis jetzt lief es ja da es als .txt gespeichert wird. Ich werde da mal bissi was nachlesen :D
      Ihr sucht Webspace für eure Projekte? Dann sagt bescheid - kostenfrei und ohne Werbung!
      Kleines Update *wird in Version 1.05 verfügbar sein!*

      Und danke für die Tipps <3

      Drahuverar schrieb:


      Dankeform / Versionsform
      [*]Beide als FixedToolWindow hinterlegen. - Done
      [*]Da du auf der jeweiligen Form ein "Schliessen"-Button hast könntest du im Designer unter den Properties deiner Form folgendes hinterlegen. (CancelButton.png) Somit würde durch drücken von ESC die Form geschlossen werden. (Sehe das als Standard, mit ESC die Form schließen zu können) - Done
      [*]Beide durch .ShowDialog aufrufen (Finde ich auch schöner, da man nicht einfach auf die Anwendung zurück kann, bis man das Fenster geschlossen hat ;) ) - Done


      Zudem habe ich noch eine Checkbox eingebaut um den Editor im Focus zu halten.
      Ihr sucht Webspace für eure Projekte? Dann sagt bescheid - kostenfrei und ohne Werbung!

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

      Kleines Mini Upate: *wird in Version 1.05 verfügbar sein!*

      - Drag&Drop geht nun 8o
      Man kann nun .TXT Files direkt ins Textfeld ziehen. Läuft gut und stabil.

      - Icons Angepasst für Zoom in / out


      - Icons angepasst für Fenster Maximieren / Normalisieren

      Kleines Pre Video zum Drag&drob
      Ihr sucht Webspace für eure Projekte? Dann sagt bescheid - kostenfrei und ohne Werbung!

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „chenjung“ ()

      Zum Thema Kodierungen.
      In meinem Beispiel wird ja immer mit ".Default" geöffnet und gespeichert.
      Nun müsstest du nur die Funktion so anpassen, dass du die Kodierung der aktuellen Datei und die Kodierung der neuen Datei mitgeben kannst (wären zwei Optionale Parameter mit Nothing initialisiert).
      In der Funktion müsstest du nun prüfen ob Nothing übergeben wurde und dies dann mit Default überschreiben.
      Ab da dann nurnoch mit den internen Variablen arbeiten.
      Und dann bräuchtest du im Programm neben der Variable der aktuellen Datei noch ne Variable der aktuellen Kodierung.
      Ich hoffe das reicht als Denkanstoß ;)
      An und für sich nicht großes. Aber bei den unterschiedlichen Dateikodierungen die es gibt (internet wäre UTF8 am verbreitetsten... Microsoft hat ihr eigenes (kenn ich aktuell nicht auswendig. 1525 oder so... oO) und so weiter und sofort.
      Das gehört zu den Grundvoraussetzungen eines Editors dass er Dateien mit ner anderen Kodierung als Default öffnen kann und dass er Dateien auch in ne andere Kodierung als die geöffnete speichern kann. ;)
      Wennst noch Hilfe brauchst einfach fragen. Bin nur gerade nicht in Reichweite des Arbeitsrechners ;D
      Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
      Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
      Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
      ... Nun solltest es selber wissen. :'D

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

      Neue Version auf der 1. Seite

      Änderungen:
      - Drag&drob
      - Neue Icons (in den Menüs)
      - Checkbox immer im Focus halten (an/aus)
      - Im Menü ist die Option im Focus an und abwählbar

      Was angepasst wird:
      - Icons im Menü (die neuen sind nicht transparent) werden demnächst upgedatet.

      @Memoanmichselbst: Dein Gedankenanstoß ist genau richtig, ich werde dahin gehend weiter suchen & daran abreiten :) Danke für deine Mühe und auch den anderen. Danke für eure Ideen & Tipps.
      Ihr sucht Webspace für eure Projekte? Dann sagt bescheid - kostenfrei und ohne Werbung!

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

      Hey @chenjung

      Ich habe mir deine neue Version angesehen ;)

      - Bei den Websteitenangaben des Versionenhinweis... mache dort doch Links... weil den Text kopieren kann ich auch nicht und abschreiben wird's wohl kaum jemand
      - das selbe fürs email... das direkt eine neue Mail geöffnet wird.
      - wenn ich im Vordergrund aktiviert habe und nun den Register "dank" öffne, dann kann ich diesen nicht mehr schliessen weil kein Button mehr sichtbar ist, je nach Fenstergrösse
      - für was ist denn diese Checkbox überhaupt?
      - die Registerkarte Ansicht => Vordergrund An/Aus funktioniert nicht, weder als Button noch als Kurzbefehl

      Gruss Mirco
      Gruss Mirco
      Hi @'MircoTuor:
      Danke für deinen Hinweis. Die Links werden eingearbeitet :)

      Was den Vordergrund + die beiden Fenster (Danke und Versionshinweis) werde ich mal sehen, was ich da machen kann.

      Die Checkbox ist für die schnell "im Vordegrundhalten" Funktion gedacht, falls man nicht STRG+T drücken will (im Editor) außerhalb des Editors geht es nicht. Die Funktion Vordergrund an/aus geht bei mir, allerdings wie gesagt nur im Editor (also wegen Shortcut) über das drücken allerdings auch.

      Siehe Video:
      Ihr sucht Webspace für eure Projekte? Dann sagt bescheid - kostenfrei und ohne Werbung!
      Du kannst auch global Hotkeys abonnieren.
      Aber da musst dann aufpassen dass die sich nicht mit anderen Programmen behaken.
      Im Idealfall so bauen, dass der Anwender diese ändern kann.
      Hier eine Klasse die das ermöglicht (musst halt erstellen und dann den Code einfügen)
      Spoiler anzeigen

      VB.NET-Quellcode

      1. ''' <summary>
      2. ''' Mit dieser Klasse kann man sehr leicht eine globale Hotkey funktionalität in seinem Programm einbinden.
      3. ''' Man muss nur diese Klasse mit WithEvents deklarieren und ihr eine Form zuweisen die gesubclassed werden soll.
      4. ''' Dann muss man nur noch ein paar eigene HotKey-Kombinationen registrieren (z.B. Strg+Alt+X) und diese
      5. ''' mit dem Event abfragen bzw, abfangen. Dazu muss man eine eigene HotKeyID angeben um einen bestimmte HotKey
      6. ''' Kombination später zu identifizieren wenn diese gedrückt wird. Wenn man z.B. eine Kombination registriert
      7. ''' und ihr z.B. die HotKeyID "TEST1" zugewiesen wird, dann kann man später im Event nach dieser ID "TEST1" fragen
      8. ''' und dann eine Funktion aufrufen die für diesen HotKey bestimmt wurde.
      9. ''' </summary>
      10. ''' <remarks>Tim Hartwig</remarks>
      11. Public Class clsHotKey
      12. Implements IMessageFilter
      13. Private Declare Function RegisterHotKey Lib "user32" ( _
      14. ByVal Hwnd As IntPtr, _
      15. ByVal ID As Integer, _
      16. ByVal Modifiers As Integer, _
      17. ByVal Key As Integer) _
      18. As Integer
      19. Private Declare Function UnregisterHotKey Lib "user32" ( _
      20. ByVal Hwnd As IntPtr, _
      21. ByVal ID As Integer) _
      22. As Integer
      23. Private Declare Function GlobalAddAtom Lib "kernel32" Alias "GlobalAddAtomA" ( _
      24. ByVal IDString As String) _
      25. As Short
      26. Private Declare Function GlobalDeleteAtom Lib "kernel32" ( _
      27. ByVal Atom As Short) _
      28. As Short
      29. Public Class HotKeyObject
      30. Private mHotKey As Keys
      31. Private mModifier As MODKEY
      32. Private mHotKeyID As String
      33. Private mAtomID As Short
      34. Public Property HotKey() As Keys
      35. Get
      36. Return mHotKey
      37. End Get
      38. Set(ByVal value As Keys)
      39. mHotKey = value
      40. End Set
      41. End Property
      42. Public Property Modifier() As MODKEY
      43. Get
      44. Return mModifier
      45. End Get
      46. Set(ByVal value As MODKEY)
      47. mModifier = value
      48. End Set
      49. End Property
      50. Public Property HotKeyID() As String
      51. Get
      52. Return mHotKeyID
      53. End Get
      54. Set(ByVal value As String)
      55. mHotKeyID = value
      56. End Set
      57. End Property
      58. Public Property AtomID() As Short
      59. Get
      60. Return mAtomID
      61. End Get
      62. Set(ByVal value As Short)
      63. mAtomID = value
      64. End Set
      65. End Property
      66. <DebuggerStepThrough()> _
      67. Sub New(ByVal NewHotKey As Keys, ByVal NewModifier As MODKEY, ByVal NewHotKeyID As String)
      68. mHotKey = NewHotKey
      69. mModifier = NewModifier
      70. mHotKeyID = NewHotKeyID
      71. End Sub
      72. End Class
      73. Private mForm As Form
      74. Private Const WM_HOTKEY As Integer = &H312
      75. Private mHotKeyList As New System.Collections.Generic.Dictionary(Of Short, HotKeyObject)
      76. Private mHotKeyIDList As New System.Collections.Generic.Dictionary(Of String, Short)
      77. ''' <summary>
      78. ''' Diesem Event wird immer die zugewiesene HotKeyID übergeben wenn eine HotKey Kombination gedrückt wurde.
      79. ''' </summary>
      80. Public Event HotKeyPressed(ByVal HotKeyID As String)
      81. Public Enum MODKEY As Integer
      82. MOD_ALT = 1
      83. MOD_CONTROL = 2
      84. MOD_SHIFT = 4
      85. MOD_WIN = 8
      86. End Enum
      87. <DebuggerStepThrough()> Sub New(ByVal OwnerForm As Form)
      88. mForm = OwnerForm
      89. Application.AddMessageFilter(Me)
      90. End Sub
      91. ''' <summary>
      92. ''' Diese Funktion fügt einen Hotkey hinzu und registriert ihn auch sofort
      93. ''' </summary>
      94. ''' <param name="KeyCode">Den KeyCode für die Taste</param>
      95. ''' <param name="Modifiers">Die Zusatztasten wie z.B. Strg oder Alt, diese können auch mit OR kombiniert werden</param>
      96. ''' <param name="HotKeyID">Die ID die der Hotkey bekommen soll um diesen zu identifizieren</param>
      97. <DebuggerStepThrough()> _
      98. Public Sub AddHotKey(ByVal KeyCode As Keys, ByVal Modifiers As MODKEY, ByVal HotKeyID As String)
      99. If mHotKeyIDList.ContainsKey(HotKeyID) = True Then Exit Sub
      100. Dim ID As Short = GlobalAddAtom(HotKeyID)
      101. mHotKeyIDList.Add(HotKeyID, ID)
      102. mHotKeyList.Add(ID, New HotKeyObject(KeyCode, Modifiers, HotKeyID))
      103. RegisterHotKey(mForm.Handle, ID, mHotKeyList(ID).Modifier, mHotKeyList(ID).HotKey)
      104. End Sub
      105. ''' <summary>
      106. ''' Diese Funktion entfernt einen Hotkey und deregistriert ihn auch sofort
      107. ''' </summary>
      108. ''' <param name="HotKeyID">Gibt die HotkeyID an welche entfernt werden soll</param>
      109. <DebuggerStepThrough()> _
      110. Public Sub RemoveHotKey(ByVal HotKeyID As String)
      111. If mHotKeyIDList.ContainsKey(HotKeyID) = False Then Exit Sub
      112. Dim ID As Short = mHotKeyIDList(HotKeyID)
      113. mHotKeyIDList.Remove(HotKeyID)
      114. mHotKeyList.Remove(ID)
      115. UnregisterHotKey(mForm.Handle, CInt(ID))
      116. GlobalDeleteAtom(ID)
      117. End Sub
      118. <DebuggerStepThrough()> _
      119. Private Function PreFilterMessage(ByRef m As System.Windows.Forms.Message) As Boolean Implements System.Windows.Forms.IMessageFilter.PreFilterMessage
      120. Try
      121. If m.Msg = WM_HOTKEY Then
      122. RaiseEvent HotKeyPressed(mHotKeyList(CShort(m.WParam)).HotKeyID)
      123. End If
      124. Catch ex As Exception
      125. End Try
      126. End Function
      127. End Class

      Dann kannst du mit

      VB.NET-Quellcode

      1. ​HotKey.AddHotKey(Keys.T, clsHotKey.MODKEY.MOD_CONTROL, "DeineSub")

      den Hotkey abonnieren und mit

      VB.NET-Quellcode

      1. ​HotKey.RemoveHotKey("DeineSub")

      den Hotkey wieder freigeben.
      Hierfür musst dann deinem Programm mitgeben:

      VB.NET-Quellcode

      1. ​Friend WithEvents HotKey As New clsHotKey(Me)
      2. Private Shared WM_QUERYENDSESSION As Integer = &H11

      Auf die unterschiedlichen Events kannst dann mit

      VB.NET-Quellcode

      1. ​Private Sub ReceiveHotKey(ByVal HotKeyID As String) Handles HotKey.HotKeyPressed
      2. If HotKeyID = "DeineSub" Then
      3. DeineSub()
      4. End If
      5. End Sub


      EDIT:
      Ich hab mal nen Beispiel hochgeladen wo du sehen kannst wie das so machbar wäre.
      Dateien
      Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
      Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
      Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
      ... Nun solltest es selber wissen. :'D

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