Hier ein kleines Skript für Vielschreiber: [spoiler_OnEvent-Modus]
[autoit]#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=TextBausteine.exe
#AutoIt3Wrapper_Compression=4
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include<WindowsConstants.au3>
#include <GuiComboBox.au3>
#cs ----------------------------------------------------------------------------
[/autoit][autoit][/autoit][autoit]AutoIt Version: 3.3.6.1
Author: AutoBert: http://www.autoit.de/index.php?page…4445#post164445
Skriptbeispiel für den Umgang mit INI-Files und ComboBox und Edit
#ce ----------------------------------------------------------------------------
Opt('GUIOnEventMode', 1)
[/autoit][autoit][/autoit][autoit]Const $sElect = "Textbaustein auswählen"
Global $sTB, $sIni = @ScriptDir & "\TextBausteine.ini"
If Not FileExists($sIni) Then ;Ini-File vorbelegen
$sData = "Hilfe=Hier kannst du dir die Hilfe herunterladen." & @CRLF
$sData &= "Tutorial=Hier gibt es ein Tutorial: http://wiki.autoit.de/wiki/index.php/Tutorial" & @CRLF
$sData &= "richtigPosten=Autoit-Anfänger Guide / Wie poste ich richtig??" & @CRLF
$sData &= "Buch peethebee=Sehr hilfreich ist auch das Buch von @peethebee"
IniWriteSection($sIni, "Bausteine", $sData)
EndIf
Global $sTitel = 'Beispiel für wiederkehrende Textbausteine'
[/autoit][autoit][/autoit][autoit]Local $hMainGui = GUICreate($sTitel, 800, 520, 140, 150, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX))
;erzeugt eine GUI die zurückgebebene ID wird in der Variablen $hMainGui gespeichert
;die GUI hat BOXen für Mininmieren, Maximieren und ist in der Größe frei änderbar
GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
;Verknüpft dem Event $Gui_Event_Close mit der Funktion _End
Global $hedtBox = GUICtrlCreateEdit("", 10, 10, 600, 480, BitOR($ES_WANTRETURN, $ES_MULTILINE))
;erzeugt ein Edit Steuerelement die zurückgegebe ID wird in der Variablen $hedtBox gespeichert
GUICtrlSetResizing(-1, $GUI_DOCKBORDERs)
;verankert das Inputfield an allen Seiten
;beim Resizen bleibt es dadurch auf seiner Position und den Abstand zu den Seiten es ändert lediglich Breite und Höhe
Global $hcboTB = GUICtrlCreateCombo("", 620, 10, 150, 25)
GUICtrlSetOnEvent(-1, 'show_Selection')
;Verknüpft die Combo (Auswahl) mit der Funktion show_Selection
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
GUICtrlCreateButton("&Hinzufügen Textbaustein", 620, 40, 150, 25)
GUICtrlSetOnEvent(-1, '_addTB')
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
GUICtrlCreateButton("&Löschen Textbaustein", 620, 70, 150, 25)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
GUICtrlSetOnEvent(-1, '_delTB')
GUICtrlCreateButton("Änderungen &speichern", 620, 100, 150, 25)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
GUICtrlSetOnEvent(-1, '_saveTB')
GUICtrlCreateButton("&ins ClipBoard", 620, 150, 150, 25)
GUICtrlSetOnEvent(-1, '_ClipPut')
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
GUICtrlCreateButton("&aus ClipBoard", 620, 180, 150, 25)
GUICtrlSetOnEvent(-1, '_ClipGet')
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
$hbtnClear = GUICtrlCreateButton("&Neu (leere EditBox)", 620, 210, 150, 25)
GUICtrlSetOnEvent(-1, '_Clear')
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
GUICtrlCreateButton('Be&enden', 620, 260, 150, 25)
GUICtrlSetOnEvent(-1, '_END')
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM)
read_INI()
GUISetState()
While 1
Sleep(1000)
WEnd
Func _End()
GUIDelete($hMainGui)
Exit
EndFunc ;==>_End
Func read_INI() ;Ini einlesen
$list1 = IniReadSection($sIni, "Bausteine")
If IsArray($list1) Then ;nur wenn Array da ansonsten Absturz
For $i = 1 To $list1[0][0] ;von 1 bis zum letzen Eintrag im Array
GUICtrlSetData($hcboTB, $list1[$i][0]) ;in ComboBox eintragen
Next
EndIf
_GUICtrlComboBox_InsertString($hcboTB, $sElect, 0) ;$sElect (= "Textbaustein auswählen") an erster Stelle einfügen
_GUICtrlComboBox_SetCurSel($hcboTB, 0) ;1 Eintrag selektieren
EndFunc ;==>read_INI
Func _addTB() ;Textbaustein hinzfüren
$write1 = GUICtrlRead($hedtBox)
If $write1 <> "" Then ;nur wenn im Edit etwas eingetragen
$write2 = InputBox("Baustein verwalten unter", "Bitte Kurzbegriff eingeben")
If $write2 <> "" Then ;nur wenn ein Kurzbegrigg eingegeben
_writeTB($write2) ;Routine zum schreiben aufrufen
GUICtrlSetData($hcboTB, $write2, $write2) ;in ComboBox eintragen und gleichzeitig selektieren
EndIf
EndIf
show_Selection() ;Routine die die Selektion zeigt aufrufen
EndFunc ;==>_addTB
Func _writeTB($sId_TB) ;Routine zum Screiben in INI
;hier werdeb die Zeichen @CR (Wagebrücklauf) @LF Zeilenumbruche und @CRLF getauscht
$write1 = GUICtrlRead($hedtBox)
$write1 = StringReplace($write1, @CRLF, "_%CRLF%_")
$write1 = StringReplace($write1, @CR, "_%CR%_")
$write1 = StringReplace($write1, @LF, "_%LF%_")
If $write1 <> "" Then IniWrite($sIni, "Bausteine", $sId_TB, $write1) ;wenn nicht leer in INI schreien
EndFunc ;==>_writeTB
Func _saveTB() ;Änderungen speichern
If GUICtrlRead($hcboTB) = $sElect Then
;es ist kein Textbaustein selektiert
GUICtrlSetState($hbtnClear, $GUI_DISABLE)
GUICtrlSetData($hedtBox, "")
_addTB() ;
Else
$sId_TB = GUICtrlRead($hcboTB) ;Kurzbezeichnung holen
_writeTB($sId_TB) ;Routine zum Schreiben aufrufen
EndIf
EndFunc ;==>_saveTB
Func _delTB() ;Textbaustein löschen
$sDel = GUICtrlRead($hcboTB) ;Kurzbezeichnung holen
IniDelete($sIni, "Bausteine", $sDel) ;aus INI löschen
GUICtrlSetData($hcboTB, "") ;ComboBox leeren
read_INI() ;Routine zum INI einlesen aufrufen
show_Selection() ;Routine zum anzeigen der Selektion aufrufen
EndFunc ;==>_delTB
Func _ClipPut() ;Daten ins Clipboard
ClipPut(GUICtrlRead($hedtBox))
EndFunc ;==>_ClipPut
Func _ClipGet() ;Daten aus Clipboard holen EditBox wird mit Clipboard überschrieben
GUICtrlSetData($hedtBox, ClipGet())
EndFunc ;==>_ClipGet
Func show_Selection() ;Selekzion anzeigen
If GUICtrlRead($hcboTB) = $sElect Then ;es ist kein Textbaustein asgewählt
GUICtrlSetState($hbtnClear, $GUI_DISABLE) ;Leeren-Button disablen
GUICtrlSetData($hedtBox, "") ;also EDIT leeren
Else
GUICtrlSetState($hbtnClear, $GUI_ENABLE) ;Leeren-Button enablen
$sId_TB = GUICtrlRead($hcboTB) ;Kurzbezeichnng holen
;ConsoleWrite("ausgewählt: " & $sId_TB & @CRLF) ;Kontrolausgabe in Console
$write1 = IniRead($sIni, "Bausteine", $sId_TB, "") ;Baustein aus INI lesen
;hier werdeb die Zeichen für @CR (Wagebrücklauf) @LF Zeilenumbruche und @CRLF zurück getauscht
$write1 = StringReplace($write1, "_%CRLF%_", @CRLF) ;
$write1 = StringReplace($write1, "_%CR%_", @CR)
$write1 = StringReplace($write1, "_%LF%_", @LF)
GUICtrlSetData($hedtBox, $write1) ;Baustein in Edit-Box anzeigen
EndIf
EndFunc ;==>show_Selection
Func _Clear()
GUICtrlSetData($hcboTB, $sElect, $sElect)
show_Selection()
EndFunc ;==>_Clear
[/spoiler]
GuiGetMsg-Modus
#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=TextBausteine.exe
#AutoIt3Wrapper_Compression=4
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include<WindowsConstants.au3>
#include <GuiComboBox.au3>
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.6.1
Author: AutoBert: http://www.autoit.de/index.php?page…4445#post164445
Skriptbeispiel für den Umgang mit INI-Files und ComboBox und Edit
#ce ----------------------------------------------------------------------------
Const $sElect = "Textbaustein auswählen"
Global $sTB, $sIni = @ScriptDir & "\TextBausteine.ini"
If Not FileExists($sIni) Then ;Ini-File vorbelegen
$sData = "Hilfe=Hier kannst du dir die Hilfe herunterladen." & @CRLF
$sData &= "Tutorial=Hier gibt es ein Tutorial: http://wiki.autoit.de/wiki/index.php/Tutorial" & @CRLF
$sData &= "richtigPosten=Autoit-Anfänger Guide / Wie poste ich richtig??" & @CRLF
$sData &= "Buch peethebee=Sehr hilfreich ist auch das Buch von @peethebee"
IniWriteSection($sIni, "Bausteine", $sData)
EndIf
Global $sTitel = 'Beispiel für wiederkehrende Textbausteine'
[/autoit] [autoit][/autoit] [autoit]Local $hMainGui = GUICreate($sTitel, 800, 520, 140, 150, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX))
;erzeugt eine GUI die zurückgebebene ID wird in der Variablen $hMainGui gespeichert
;die GUI hat BOXen für Mininmieren, Maximieren und ist in der Größe frei änderbar
Global $hedtBox = GUICtrlCreateEdit("", 10, 10, 600, 480, BitOR($ES_WANTRETURN, $ES_MULTILINE))
;erzeugt ein Edit Steuerelement die zurückgegebe ID wird in der Variablen $hedtBox gespeichert
GUICtrlSetResizing(-1, $GUI_DOCKBORDERs)
;verankert das Inputfield an allen Seiten
;beim Resizen bleibt es dadurch auf seiner Position und den Abstand zu den Seiten es ändert lediglich Breite und Höhe
Global $hcboTB = GUICtrlCreateCombo("", 620, 10, 150, 25)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
$hbtnAdd = GUICtrlCreateButton("&Hinzufügen Textbaustein", 620, 40, 150, 25)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
$hbtnDel = GUICtrlCreateButton("&Löschen Textbaustein", 620, 70, 150, 25)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
$hbtnSave = GUICtrlCreateButton("Änderungen &speichern", 620, 100, 150, 25)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
$hbtnToClip = GUICtrlCreateButton("&ins ClipBoard", 620, 150, 150, 25)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
$hbtnFromClip = GUICtrlCreateButton("&aus ClipBoard", 620, 180, 150, 25)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
$hbtnClear = GUICtrlCreateButton("&Neu (leere EditBox)", 620, 210, 150, 25)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
$hbtnExit = GUICtrlCreateButton('Be&enden', 620, 260, 150, 25)
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM)
read_INI()
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $hbtnExit
GUIDelete($hMainGui)
Exit
Case $hcboTB ;ComboBoxauswahl wurde geändert
show_Selection()
Case $hbtnAdd ;Hinzufügen Textbaustein"
_addTB()
Case $hbtnDel ;"&Löschen Textbaustein"
$sDel = GUICtrlRead($hcboTB) ;Kurzbezeichnung holen
IniDelete($sIni, "Bausteine", $sDel) ;aus INI löschen
GUICtrlSetData($hcboTB, "") ;ComboBox leeren
read_INI() ;Routine zum INI einlesen aufrufen
show_Selection() ;Routine zum anzeigen der Selektion aufrufen
Case $hbtnSave ;"Änderungen &speichern"
If GUICtrlRead($hcboTB) = $sElect Then
;es ist kein Textbaustein selektiert
GUICtrlSetState($hbtnClear, $GUI_DISABLE)
GUICtrlSetData($hedtBox, "")
_addTB() ;
Else
$sId_TB = GUICtrlRead($hcboTB) ;Kurzbezeichnung holen
_writeTB($sId_TB) ;Routine zum Schreiben aufrufen
EndIf
Case $hbtnToClip ;"&ins ClipBoard"
ClipPut(GUICtrlRead($hedtBox))
Case $hbtnFromClip ;"&aus ClipBoard"
;Daten aus Clipboard holen EditBox wird mit Clipboard überschrieben
GUICtrlSetData($hedtBox, ClipGet())
Case $hbtnClear ;"&Neu (leere EditBox)"
GUICtrlSetData($hcboTB, $sElect,$sElect)
show_Selection() ;Routine zum anzeigen der Selektion aufrufen
EndSwitch
WEnd
Func read_INI() ;Ini einlesen
$list1 = IniReadSection($sIni, "Bausteine")
If IsArray($list1) Then ;nur wenn Array da ansonsten Absturz
For $i = 1 To $list1[0][0] ;von 1 bis zum letzen Eintrag im Array
GUICtrlSetData($hcboTB, $list1[$i][0]) ;in ComboBox eintragen
Next
EndIf
_GUICtrlComboBox_InsertString($hcboTB, $sElect, 0) ;$sElect (= "Textbaustein auswählen") an erster Stelle einfügen
_GUICtrlComboBox_SetCurSel($hcboTB, 0) ;1 Eintrag selektieren
EndFunc ;==>read_INI
Func _addTB()
$write1 = GUICtrlRead($hedtBox)
If $write1 <> "" Then ;nur wenn im Edit etwas eingetragen
$write2 = InputBox("Baustein verwalten unter", "Bitte Kurzbegriff eingeben")
If $write2 <> "" Then ;nur wenn ein Kurzbegrigg eingegeben
_writeTB($write2) ;Routine zum schreiben aufrufen
GUICtrlSetData($hcboTB, $write2, $write2) ;in ComboBox eintragen und gleichzeitig selektieren
EndIf
EndIf
show_Selection() ;Routine die die Selektion zeigt aufrufen
EndFunc ;==>_addTB
Func _writeTB($sId_TB) ;Routine zum Screiben in INI
;hier werdeb die Zeichen @CR (Wagebrücklauf) @LF Zeilenumbruche und @CRLF getauscht
$write1 = GUICtrlRead($hedtBox)
$write1 = StringReplace($write1, @CRLF, "_%CRLF%_")
$write1 = StringReplace($write1, @CR, "_%CR%_")
$write1 = StringReplace($write1, @LF, "_%LF%_")
If $write1 <> "" Then IniWrite($sIni, "Bausteine", $sId_TB, $write1) ;wenn nicht leer in INI schreien
EndFunc ;==>_writeTB
Func show_Selection() ;Selekzion anzeigen
If GUICtrlRead($hcboTB) = $sElect Then ;es ist kein Textbaustein asgewählt
GUICtrlSetState($hbtnClear, $GUI_DISABLE) ;Leeren-Button disablen
GUICtrlSetData($hedtBox, "") ;also EDIT leeren
Else
GUICtrlSetState($hbtnClear, $GUI_ENABLE) ;Leeren-Button enablen
$sId_TB = GUICtrlRead($hcboTB) ;Kurzbezeichnng holen
;ConsoleWrite("ausgewählt: " & $sId_TB & @CRLF) ;Kontrolausgabe in Console
$write1 = IniRead($sIni, "Bausteine", $sId_TB, "") ;Baustein aus INI lesen
;hier werdeb die Zeichen für @CR (Wagebrücklauf) @LF Zeilenumbruche und @CRLF zurück getauscht
$write1 = StringReplace($write1, "_%CRLF%_", @CRLF) ;
$write1 = StringReplace($write1, "_%CR%_", @CR)
$write1 = StringReplace($write1, "_%LF%_", @LF)
GUICtrlSetData($hedtBox, $write1) ;Baustein in Edit-Box anzeigen
EndIf
EndFunc ;==>show_Selection
ScreenShot:
autoit.de/wcf/attachment/9828/
Viel Spass damit,
Edit1: Skript ausgetauscht: @CRLF, @CR und @LF bleiben jetzt erhalten
Edit2: ScreenShot angehängt
Edit3: hoffentlich letzten Rechtschreibfehler gefunden
Edit4: besser auskommentiert
Edit5: 2. Skript im GuiGetMsg-Modus angefügt
mfg (Auto)Bert