Eigenen Editor

  • Hallo Leute.
    Ich bin ja noch ein AutoIT Anfänger
    und würde am liebsten das ganze Forum hier abklappern und tausende Fragen stellen.
    Aber das mag ich euch nicht gerne Antun.
    Also Heute ma nur eine Frage an euch.
    Da ich ja gerne und viel Text schreibe, habe ich mich heut Morgen gefragt,
    wie man wohl einen Eigenen TextEditor.
    Und bis jetzt läuft alles klasse das Gerüst ist fertig aber ich weiss nicht,
    wie man den Inhalt des "Edit1" einen Namen + .txt geben kann, dass es auch so auf dem Desktop gespeichert werden kann.
    Bitte helft mir :)

    2 Mal editiert, zuletzt von joshi2122 (5. April 2010 um 16:42)

  • Ließ doch einfach das Edit Control mit GUICtrlRead aus und speichere diese Daten in einer Textdatei ab.
    Wenn du eine erzeugen möchtest, dann verwende einfach $File = FileOpen("Textdatei.txt", 1). Wenn FileOpen eine nicht existierende Datei öffnet wird sie einfach erzeugt.
    Danach aber nicht das FileClose($File) vergessen. ;)

  • Hier mal ein einfaches Beispiel mit Neu, Speichern, öffnen

    Spoiler anzeigen
    [autoit]

    $hGUI = GUICreate("Editor - Neues Dokument")
    $cNew = GUICtrlCreateButton("Neu", 10, 5, 100, 20)
    $cOpen = GUICtrlCreateButton("Öffnen", 150, 5, 100, 20)
    $cSave = GUICtrlCreateButton("Speichern", 290, 5, 100, 20)
    $cEdit = GUICtrlCreateEdit("", 10, 30, 380, 360)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3 ; Schließen
    Exit
    Case $cNew ; Neu Knopf
    GUICtrlSetData($cEdit, "")
    WinSetTitle($hGUI, "", "Editor - Neues Dokument") ; Fenstertitel ändern

    [/autoit] [autoit][/autoit] [autoit]

    Case $cOpen ; Öffnen Knopf
    $sFilePath = FileOpenDialog("Öffnen", "", "Text Files (*.txt)") ; Dialog anzeigen
    If Not @error Then GUICtrlSetData($cEdit, FileRead($sFilePath)) ; Wenn Benutzer nicht abgebrochen hat, Datei einlesen und mit GUICtrlSetData ins Edit schreiben
    WinSetTitle($hGUI, "", "Editor - " & $sFilePath) ; Fenstertitel ändern

    [/autoit] [autoit][/autoit] [autoit]

    Case $cSave ; Speichern Knopf
    $sFilePath = FileOpenDialog("Speichern","","Text Files (*.txt)") ; Speichern Dialog
    If Not @error Then ; User hat nicht abgebrochen
    If StringRight($sFilePath,4) <> ".txt" Then $sFilePath &= ".txt" ; Wenn .txt erweiterung fehlt, anhängen!
    FileDelete($sFilePath) ; Alte Datei vorher löschen
    FileWrite($sFilePath,GUICtrlRead($cEdit)) ; Neue Datei mit neuem Inhalt erstellen.
    WinSetTitle($hGUI, "", "Editor - " & $sFilePath) ; Fenstertitel ändern.
    EndIf
    EndSwitch
    WEnd

    [/autoit]
  • Kann man dem auch hinzufügen, dass oben ein Main Menu ist, sodass man keine Button braucht?
    Oder zB ein "Bearbeiten" Menu wo man zB die Schriftart wechseln kann?

  • Ich hab mal ein wenig rumgebastelt

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 510, 413, 192, 124)
    $Edit1 = GUICtrlCreateEdit("", 0, 32, 505, 377)
    GUICtrlSetData(-1, "Edit1")
    GUISetState(@SW_SHOW)
    $menu = GUICtrlCreateMenu("Edit")
    $save = GUICtrlCreateMenuItem ("Save",$menu)
    $open = GUICtrlCreateMenuItem ("Open",$menu)
    $new = GUICtrlCreateMenuItem ("New",$menu)
    $schrift = GUICtrlCreateMenu ("Font")
    $verdana = GUICtrlCreateMenuItem ("verdana",$schrift)
    $comic = GUICtrlCreateMenuItem ("Comic Sans MS",$schrift)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $save
    $sFilePath = FileOpenDialog("Speichern","","Text Files (*.txt)")
    If Not @error Then
    If StringRight($sFilePath,4) <> ".txt" Then $sFilePath &= ".txt"
    FileDelete($sFilePath)
    FileWrite($sFilePath,GUICtrlRead($cEdit))
    WinSetTitle($hGUI, "", "Editor - " & $sFilePath)
    EndIf
    Case $open
    $sFilePath = FileOpenDialog("Öffnen", "", "Text Files (*.txt)") ; Dialog anzeigen
    If Not @error Then GUICtrlSetData($cEdit, FileRead($sFilePath)) ; Wenn Benutzer nicht abgebrochen hat, Datei einlesen und mit GUICtrlSetData ins Edit schreiben
    WinSetTitle($hGUI, "", "Editor - " & $sFilePath
    Case $new
    GUICtrlSetData($Edit1, "")
    WinSetTitle($Form1, "", "Editor - Neues Dokument")
    Case $verdana
    $font = "Verdana"

    Case $comic
    $font = "Comic Sans MS"

    EndSwitch
    WEnd

    [/autoit]


    Nun ist die Schrift vom "GUICtrlCreateMenuItem ("Comic Sans MS")
    Aber wenn ich auf das MenuItem klicke verändert sich die Schrift im Edit Feld nicht ;(
    Kann mir einer helfen? ?(

    2 Mal editiert, zuletzt von joshi2122 (5. April 2010 um 14:55)

  • [offtopic] es gibt einen AutoIt button mit syntaxhighliting..
    da sieht man die fehler schneller[/offtopic]

  • So besser?

  • Versuchs mal so (ich hab auch gleich mal alle Fehler ausgemerzt...):

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $hGUI = GUICreate("Form1", 510, 413, 192, 124)
    $cEdit = GUICtrlCreateEdit("", 0, 32, 505, 377)
    GUICtrlSetData(-1, "Edit1")
    GUISetState(@SW_SHOW)
    $menu = GUICtrlCreateMenu("Edit")
    $save = GUICtrlCreateMenuItem ("Save",$menu)
    $open = GUICtrlCreateMenuItem ("Open",$menu)
    $new = GUICtrlCreateMenuItem ("New",$menu)
    $schrift = GUICtrlCreateMenu ("Font")
    $verdana = GUICtrlCreateMenuItem ("verdana",$schrift)
    $comic = GUICtrlCreateMenuItem ("Comic Sans MS",$schrift)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $save
    $sFilePath = FileOpenDialog("Speichern","","Text Files (*.txt)")
    If Not @error Then
    If StringRight($sFilePath,4) <> ".txt" Then $sFilePath &= ".txt"
    FileDelete($sFilePath)
    FileWrite($sFilePath,GUICtrlRead($cEdit))
    WinSetTitle($hGUI, "", "Editor - " & $sFilePath)
    EndIf
    Case $open
    $sFilePath = FileOpenDialog("Öffnen", "", "Text Files (*.txt)") ; Dialog anzeigen
    If Not @error Then GUICtrlSetData($cEdit, FileRead($sFilePath)) ; Wenn Benutzer nicht abgebrochen hat, Datei einlesen und mit GUICtrlSetData ins Edit schreiben
    WinSetTitle($hGUI, "", "Editor - " & $sFilePath)
    Case $new
    GUICtrlSetData($cEdit, "")
    WinSetTitle($hGUI, "", "Editor - Neues Dokument")
    Case $verdana
    $font = GuiCtrlSetFont( 3, 8.5, 400, 0, "Verdana")

    [/autoit] [autoit][/autoit] [autoit]

    Case $comic
    $font = GuiCtrlSetFont( 3, 8.5, 400, 0, "Comic Sans MS")

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit]
  • Danke Ineluki :)
    Würd aber ma gerne wissen...
    Ob man auch für diesen Editor ein eigenes .txt format machen kann welches nur Dieser Editor öffnen kann?
    Danke im Vorraus

  • Du könntest es so machen, dass die .txt Dateien verschlüsselt werden (_Crypt_EncryptFile) und nur dann entschlüsselt werden, wenn sie mit deinem Editor geöffnet werden(_Crypt_DecryptFile)

  • Kannst du mir nen Kleinen Beispiel Code machen?
    Ich bin ja Anfänger und weiss jetzt nicht wie ich das einsetzen soll ^^
    Wäre echt nett

  • Wenn ich das mache Ineluki dann flackert das Edit Feld so komisch
    Aber ich will doch das die Schrift rot is :O