#region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_outfile=TextBausteine.exe #AutoIt3Wrapper_Compression=4 #endregion ;**** Directives created by AutoIt3Wrapper_GUI **** #include #include #include #include #cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.6.1 Author: AutoBert: http://www.autoit.de/index.php?page=Thread&postID=164445#post164445 Skriptbeispiel für den Umgang mit INI-Files und ComboBox und Edit #ce ---------------------------------------------------------------------------- Const $sElect = "Textbaustein auswählen" Const $sAppIni=@AppDataDir&"\Textbausteine.INI" Global $sTB If Not FileExists($sAppIni) Then ;Ini-File vorbelegen $sData = "Hilfe=Hier kannst du dir die [url='http://translation.autoit.de/autoitinfo/hilfedateien/AutoIt-Hilfe-Deutsch-3.3.6.1-Stand-09_05_10.zip']Hilfe[/url] herunterladen." & @CRLF $sData &= "Tutorial=Hier gibt es ein Tutorial: [url]http://wiki.autoit.de/wiki/index.php/Tutorial[/url]" & @CRLF $sData &= "richtigPosten=[url='http://www.autoit.de/index.php?page=Thread&threadID=4424']Autoit-Anfänger Guide / Wie poste ich richtig?[/url]?" & @CRLF $sData &= "Buch peethebee=Sehr hilfreich ist auch das [url='http://www.autoit.de/index.php?page=Thread&postID=92818#post92818']Buch[/url] von @peethebee" IniWriteSection($sAppIni, "Bausteine", $sData) EndIf Global $sTitel = 'Beispiel für wiederkehrende Textbausteine' 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($sAppIni, "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($sAppIni, "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($sAppIni, "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($sAppIni, "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