Hallo zusammen,
eines vorweg: Dies ist mein erster Post hier, ich bitte also um Umsicht, sollte ich nicht alle Postingregeln beachtet haben
Nun zum Thema. Ich habe zum Erlernen von Autoit ein kleines Programm geschrieben, welches aus zwei Tabs besteht. Im ersten Tab sollen die Programme über Buttons gestartet werden und im zweiten über eine Liste. Ersteres ist in der Frage irrelevant, soll nur den Aufbau verdeutlichen.
In dem Tab mit der Liste befinden sich meine "Problemchen", welche für euch sicherlich einfach zu lösen sind, für mich als Neuling (habe erst gestern damit angefangen :P) schon eine kleine Hürde sind. Hier erstmal der Quellcode:
Spoiler anzeigen
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#Include <File.au3>
$ProgrammStarter = GUICreate("ProgrammStarter", 615, 433, 572, 214)
[/autoit] [autoit][/autoit] [autoit]; -----------------------------------------
; MenüItems
$menDatei = GUICtrlCreateMenu("&Datei")
$smenNotepad = GUICtrlCreateMenuItem("Notepad öffnen", $menDatei)
$smenExit = GUICtrlCreateMenuItem("Schließen", $menDatei)
$menInfo = GUICtrlCreateMenu("&Info")
$smenAbout = GUICtrlCreateMenuItem("About", $menInfo)
$smenHistory = GUICtrlCreateMenuItem("Patch Logs", $menInfo)
; -----------------------------------------
; Tab 1 Buttons (Not functional!)
$tabTablist = GUICtrlCreateTab(0, 0, 145, 401)
$TabSheet1 = GUICtrlCreateTabItem("Buttons")
$cmdAddProgramB = GUICtrlCreateButton("Add", 12, 41, 58, 25)
$cmdDelProgramB = GUICtrlCreateButton("Delete", 76, 41, 58, 25)
$Button1 = GUICtrlCreateButton("Button1", 12, 73, 91, 25)
$Button2 = GUICtrlCreateButton("", 108, 73, 27, 25, $BS_ICON)
GUICtrlSetImage(-1, "C:\Users\localuser\Desktop\mana.ico", -1, 0)
; -----------------------------------------
; Tab 2 Liste
$TabSheet2 = GUICtrlCreateTabItem("Liste")
GUICtrlSetState(-1,$GUI_SHOW)
$cmdDelProgramL = GUICtrlCreateButton("Delete", 76, 41, 58, 25)
$cmdAddProgramL = GUICtrlCreateButton("Add", 12, 41, 58, 25)
$lstPrograms = GUICtrlCreateList("", 14, 72, 120, 305)
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)
local $aSize = 30
local $aProgram[$aSize]
local $aProgramPath[$aSize]
local $aCounter = 0
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
; -----------------------------------------
;~ Menue Bar Controls
Case $GUI_EVENT_CLOSE
Exit
Case $smenExit
Exit
Case $smenNotepad
Run("notepad.exe")
Case $smenAbout
MsgBox(0, "Info zum Programm", "Entwickler: Ich" & @CRLF & "Version: 0.0.1 Alpha")
Case $smenHistory
)
; -----------------------------------------
;~ Functionbuttons Tab Liste
Case $cmdAddProgramL
$aProgram[$aCounter] = InputBox("Programm hinzufügen", "Bitte geben Sie den Programmnamen ein.")
GUICtrlSetData($lstPrograms, $aProgram[$aCounter])
$aProgramPath[$aCounter] = FileSelectFolder("Speicherpfad des Programmes auswählen","")
FileWriteLine('programs.txt', $aProgram[$aCounter])
$aCounter += 1
Case $cmdDelProgramL
$sDelListItem = GUICtrlRead($lstPrograms)
$sSelected = _GUICtrlListBox_GetCaretIndex($lstPrograms)
MsgBox(0, "Löschen", $sDelListItem & " mit ID " & $sSelected & " wurde gelöscht.")
MsgBox(0, "ID", "Programm: " & $sDelListItem & @CRLF & "Speicherpfad: " & $aProgramPath[$sSelected] )
_GUICtrlListBox_DeleteString($lstPrograms, _GUICtrlListBox_GetCaretIndex($lstPrograms))
EndSwitch
WEnd
Problem Nummer Eins: Ich weiß nicht, wie ich es dem Programm beibringen soll, dass es sich merkt, welche Programme beim vorherigen Ausführen des Tools bereits angelegt wurden, und dass diese wieder in die Liste geladen werden. habe es via filewrite versucht, aber irgendwie scheint das auch nicht das richtige zu sein. Schließlich muss er 1. den Programmnamen und 2. den Speicherpfad des Programmes wieder einlesen. Eine ini-File scheint mir auch ungünstig, schließlich ist eine ini-File mehr oder weniger "eindimensional", wenn ihr wisst, was ich meine
Außerdem besteht noch ein anderes Problem. Angenommen, ich möchte den Acrobat Reader in die Liste schreiben. Dann wähle ich "Add" aus und gebe dem Programm einen Namen. Anschließend kommt eine Abfrage, wo das Programm gespeichert ist. er schreibt beides in jeweils einen Array und das wars. Möchte ich jetzt aber das Programm wieder löschen über "Delete", so weiß das Tool nicht mehr, welchem Programm welcher Pfad zugewiesen wurde.
Ich hoffe, ich überflute euch jetzt nicht mit Unwissen und verletze euch mit meinen Programmierunkenntnissen
Vielmaligen Dank vorab für eure Hilfe und liebe Grüße