Hallo,
ich versuche, dass das markierte Childitem im Treeview eine Ausgabe hervorbringt. Jedoch bisher ohne Erfolg. Erzeigt mir zwar an das die der Eintrag markiert ist er gibt mir aber immer z. B. "Kategorie/Programm" aus. Ich würde das aber gerne haben das er nur "Programm" ausgibt.
Zum Hintergrund:
Es soll der Eintrag des angeklickten Items auf der rechten Seite in den dafür vorgesehenen Stellen erscheinen. Die Einträge konnte ich schon als Array herausfiltern. Die Ini-Datei ist folgendermaßen aufgebaut:
[Kategorien]
Programm Namen=Beschreibung|URL|Lizenz|Checkbox 1|Checkbox 2|Checkbox 3|Checkbox 4
Ich weiß, die Ini ist hier von kaum einer Bedeutung, ich wollte es aber der Vollständigkeit halber erwähnen.
Spoiler anzeigen
#NoTrayIcon ; TrayIcon ausblenden
;Includes
#region
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>
#include <GUIComboBox.au3>
#Include <GuiTreeView.au3>
#Include <File.au3>
#endregion
;TrayMenü
#region
Opt("TrayMenuMode",1)
TraySetIcon("logo.ico")
TraySetClick(16)
$msInfo = TrayCreateItem("Info")
$miHide = TrayCreateItem("Einblenden/Ausblenden")
TrayCreateItem("")
$miExit = TrayCreateItem("Beenden")
TraySetState()
#endregion
;Hauptfenster
#Region ### START Koda GUI section ###
$frmMain = GUICreate("Programm Manager", 674, 579, 187, 117)
$tvKategorien = GUICtrlCreateTreeView(8, 32, 289, 537)
$iText = GUICtrlCreateInput("", 336, 32, 273, 21)
$lKategorien = GUICtrlCreateLabel("Kategorien", 16, 8, 63, 17)
$lTitel = GUICtrlCreateLabel("Titel", 336, 8, 32, 17)
$Beschreibung = GUICtrlCreateEdit("", 336, 88, 273, 225)
GUICtrlSetData(-1, "Beschreibung")
$lBeschreibung = GUICtrlCreateLabel("Beschreibung", 336, 64, 85, 17)
$lURL = GUICtrlCreateLabel("URL", 336, 328, 26, 17)
$iURL = GUICtrlCreateInput("", 336, 352, 273, 21)
$lLizenz = GUICtrlCreateLabel("Lizenz", 336, 384, 42, 17)
$cLizenz = GUICtrlCreateCombo("", 336, 408, 89, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
$lSprache = GUICtrlCreateLabel("Sprache", 336, 440, 52, 17)
$cDeutsch = GUICtrlCreateCheckbox("Deutsch", 336, 464, 65, 17)
$cEnglisch = GUICtrlCreateCheckbox("Englisch", 416, 464, 65, 17)
$lBetriebssystem = GUICtrlCreateLabel("Betriebssystem", 336, 496, 74, 17)
$cWindows = GUICtrlCreateCheckbox("Windows", 336, 520, 65, 17)
$cLinux = GUICtrlCreateCheckbox("Linux", 416, 520, 57, 17)
$bAbout = GUICtrlCreateButton("?", 640, 8, 25, 25)
$bNewKategorie = GUICtrlCreateButton("Neue Kategorie", 536, 424, 121, 25)
$bNewProgram = GUICtrlCreateButton("Neues Programm", 536, 456, 121, 25)
$bUpdate = GUICtrlCreateButton("Aktualisieren", 536, 488, 121, 25)
$bExit = GUICtrlCreateButton("Beenden", 536, 520, 121, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
;Über Fenster
#region
$frmAbout = GUICreate("Über", 330, 70, 334, 269)
$lAbout = GUICtrlCreateLabel("Vielen dank, dass Sie sich für dieses Tool entschieden haben.", 16, 26, 297, 17)
#endregion
;Neue Kategorie Fenster
#region
$frmNewKategory = GUICreate("Neue Kategorie", 303, 108, 192, 124)
$lNewKategory = GUICtrlCreateLabel("Bitte tragen Sie hier den Namen der neuen Kategorie ein.", 15, 16, 273, 17)
$iKategory = GUICtrlCreateInput("", 13, 40, 281, 21)
$bSaveKategory = GUICtrlCreateButton("Speichern", 75, 72, 153, 25)
#endregion
;Neues Programm Fenster
#region
$frmNewProgramm = GUICreate("Neues Programm", 623, 442, 192, 124)
$Combo1 = GUICtrlCreateCombo("", 16, 32, 121, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
$lChooseKategorie = GUICtrlCreateLabel("Kategorie", 16, 8, 49, 17)
$lTitelNewProgram = GUICtrlCreateLabel("Titel", 16, 64, 24, 17)
$iTitelNewProgram = GUICtrlCreateInput("", 16, 88, 201, 21)
$lBeschreibungNewProgram = GUICtrlCreateLabel("Beschreibung", 16, 120, 69, 17)
$Eingabe = GUICtrlCreateEdit("", 16, 144, 201, 217)
GUICtrlSetData(-1, "")
$lURLNewProgram = GUICtrlCreateLabel("URL", 16, 376, 26, 17)
$iURLNewProgram = GUICtrlCreateInput("", 16, 400, 201, 21)
$lLizenzNewProgram = GUICtrlCreateLabel("Lizenz", 280, 8, 34, 17)
$cLizenzNewProgram = GUICtrlCreateCombo("", 280, 32, 89, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
$lSpracheNewProgram = GUICtrlCreateLabel("Sprache", 280, 64, 44, 17)
$cDeutschNewProgram = GUICtrlCreateCheckbox("Deutsch", 280, 88, 65, 17)
$cEnglischNewProgram = GUICtrlCreateCheckbox("Englisch", 360, 88, 65, 17)
$lBetriebssystemNewProgram = GUICtrlCreateLabel("Betriebssystem", 280, 120, 74, 17)
$cWindowsNewProgram = GUICtrlCreateCheckbox("Windows", 280, 144, 65, 17)
$cLinuxNewProgram = GUICtrlCreateCheckbox("Linux", 360, 144, 49, 17)
$bSaveNewProgram = GUICtrlCreateButton("Speichern", 280, 176, 145, 25)
#endregion
;Variablen verteilen
#region
Global $ini = "Dateiname.ini"
#endregion
;Kategorien (Vordefinierte, bei Fertigstellung entfernen)
#region
;Hauptkategorien
$Kategorien = GUICtrlCreateTreeViewItem("Allgemein", $tvKategorien)
;Programme in den Kategorien
$aboutitem = GUICtrlCreateTreeViewItem("Programm 1", $Kategorien)
#endregion
;Hinzufügen der Strings
#region
_GUICtrlComboBox_AddString($cLizenzNewProgram,"Open Source")
_GUICtrlComboBox_AddString($cLizenzNewProgram,"Freeware")
#endregion
;Wechseln auf Hauptfenster
GUISwitch($frmMain)
;Überprüfen der INI-Datei und sie anlegen
If Not FileExists($ini) Then
IniWrite($ini,"Kategorien","Programm Namen","Beschreibung" & "|URL" & "|Lizenz" & "|Checkbox 1" & "|Checkbox 2" & "|Checkbox 3" & "|Checkbox 4")
EndIf
Treelist_Update_mit_ini()
;GUICtrlSetState($bUpdate,$GUI_DISABLE) ; Deaktiviert den "Aktualisieren" Button
;INI_Read()
Global Const $Delim = '\', $Delim1 = '|'
While 1
$nMsg = GUIGetMsg(1)
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
Switch $nMsg[1]
Case $frmMain
Exit
Case Else
GUISetState(@SW_SHOW,$frmMain)
GUISetState(@SW_HIDE,$nMsg[1])
GUISwitch($frmMain)
EndSwitch
Case $bUpdate ; Einstellungen Button vom Hauptfenster
Treelist_update()
Case $bExit ; Beenden Button vom Hauptfenster
Exit
Case $bAbout
GUISetState(@SW_SHOW,$frmAbout) ; Anzeigen von Überfenster
Case $bNewKategorie
GUISetState(@SW_SHOW,$frmNewKategory) ; Anzeigen von Neue Kategorie Fenster
Case $bNewProgram
GUISetState(@SW_SHOW,$frmNewProgramm) ; Anzeigen von Neues Programm Fenster
ini_Selection_for_Kategories()
Case $bSaveKategory
$KategorieNeu = GUICtrlRead($iKategory)
_GUICtrlTreeView_Add($tvKategorien,0,$KategorieNeu)
IniWriteSection($ini,$KategorieNeu,"")
MsgBox(0,"","Ihre Eingabe wurde erfolgreich gespeichert")
GUISetState(@SW_HIDE,$frmNewKategory)
Case $bSaveNewProgram
Daten_auslesen_Programm_neu()
EndSwitch
$msg = TrayGetMsg()
Switch $msg
Case $miExit
Exit
Case $miHide
If Not $frmMain Then
WinSetState("Programm Manager v1.0","",@SW_HIDE)
$frmMain = Not $frmMain
Else
WinSetState("Programm Manager v1.0","",@SW_SHOW)
$frmMain = Not $frmMain
EndIf
Case $msInfo
$str = "Vielen dank, dass Sie sich für dieses Tool entschieden haben."
$str &= @LF & "Ich hoffe es gefällt Ihnen."
$str &= @LF & ""
$str &= @LF & "Ein großer dank geht an Stiffler1987 für seine Arbeit als"
$str &= @LF & "Beta Tester."
MsgBox(0,"Info...", $str)
EndSwitch
WEnd
;Nebenfunktionen
#region
Func ini_Selection_for_Kategories()
$var391 = IniReadSectionNames($ini)
If @error Then
MsgBox(4096, "", "Fehler: Konnte INI-Datei nicht lesen.")
Else
For $i = 1 To $var391[0]
_GUICtrlComboBox_AddString($Combo1,$var391[$i])
Next
EndIf
EndFunc
Func Daten_auslesen_Programm_neu()
$ComboNeu = GUICtrlRead($Combo1)
$TitelNeu = GUICtrlRead($iTitelNewProgram)
$BeschreibungNeu = GUICtrlRead($Eingabe)
$URLNeu = GUICtrlRead($iURLNewProgram)
$LizenzNeu = GUICtrlRead($cLizenzNewProgram)
$DeutschNeu = GUICtrlRead($cDeutschNewProgram)
$EnglischNeu = GUICtrlRead($cEnglischNewProgram)
$WindowsNeu = GUICtrlRead($cWindowsNewProgram)
$LinuxNeu = GUICtrlRead($cLinuxNewProgram)
If $ComboNeu = "" Then
MsgBox(0,"","Sie müssen eine Kategorie wählen")
ElseIf $TitelNeu = "" Then
MsgBox(0,"","Sie müssen einen Namen wählen")
Else
IniWrite($ini,$ComboNeu,$TitelNeu, StringFormat("%s|%s|%s|%s|%s|%s|%s",$BeschreibungNeu,$URLNeu,$LizenzNeu,$DeutschNeu,$EnglischNeu,$WindowsNeu,$LinuxNeu))
MsgBox(0,"","Ihre Angaben wurden erfolgreich gespeichert")
GUISetState(@SW_HIDE,$frmNewProgramm)
EndIf
EndFunc
Func Treelist_Update_mit_ini()
$var = IniReadSectionNames($ini)
If @error Then
MsgBox(4096, "", "Fehler, INI-Datei könnte nicht geöffnet werden")
Else
For $i = 1 To $var[0]
$hchildSek = GUICtrlCreateTreeViewItem($var[$i], $tvKategorien)
$var2 = IniReadSection($ini, $var[$i])
If Not @error Then
For $j = 1 To $var2[0][0]
GUICtrlCreateTreeViewItem($var2[$j][0], $hchildSek)
IniReadSection($ini,$var2[$j][0])
$abc = StringSplit($var2[$j][1],"|")
GUICtrlSetData($iText,$var2[$j][0])
GUICtrlSetData($Beschreibung,$abc[1])
GUICtrlSetData($iURL,$abc[2])
GUICtrlSetData($cLizenz,$abc[3])
GUICtrlSetState($cDeutsch,$abc[4])
GUICtrlSetState($cEnglisch,$abc[5])
GUICtrlSetState($cWindows,$abc[6])
GUICtrlSetState($cLinux,$abc[7])
;MsgBox(0,"","In der Kategorie: " & $var[$i] & " ist das Programm: " & $var2[$j][0])
;MsgBox(0,"","Mit der Beschreibung: " & $abc[1])
Next
EndIf
Next
EndIf
EndFunc
Func INI_Read()
$rsections = IniReadSection($ini)
For $i = 1 To $rsections[0]
$Sektionen = MsgBox(0,"",$rsections[$i])
Next
EndFunc
Func Treelist_update()
$string = StringReplace(_GUICtrlTreeView_GetTree($tvKategorien, _GUICtrlTreeView_GetSelection($tvKategorien)), $Delim1, $Delim)
MsgBox(0, 'Selected Path/File', $string)
;If ControlTreeView ($frmMain, "", $tvKategorien, "IsChecked", $var[$i]) Then
;MsgBox(0,"",$var[$j] & " ist markiert!")
;Else
;MsgBox(0,"",$var[$j] & " ist nicht markiert!")
;EndIf
;Next
EndFunc
#endregion
Alles anzeigen
Ich bedanke mich schonmal im voraus für die Antworten.
LG Maase