Hallo Dtex,
sorry, am besten fügst du das Laden also
[autoit]_loadLV()
[/autoit]direkt vor GuiSetState ein,
mfg (Auto)Bert
Hallo Dtex,
sorry, am besten fügst du das Laden also
[autoit]_loadLV()
[/autoit]direkt vor GuiSetState ein,
mfg (Auto)Bert
er gibt mir einen fehler aus:
C:\Dokumente und Einstellungen\Dtex.DTEX-YI8SXFHVNC\Desktop\dkp manager.au3(78,42) : ERROR: _FileReadToArray(): undefined function.
_FileReadToArray($sLVdat, $aItems)
Hallo dtex,
er gibt mir einen fehler aus:C:\Dokumente und Einstellungen\Dtex.DTEX-YI8SXFHVNC\Desktop\dkp manager.au3(78,42) : ERROR: _FileReadToArray(): undefined function._FileReadToArray($sLVdat, $aItems)
ja da fehlt am Anfang noch #include <File.au3>, hier noch einmal das ganze Skript (jetzt auch getestet, sorry hatte gestern ein zeitaufwendiges Skript gestartet so das ich nicht testen konnte):
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <File.au3>
Global $sLVdat = @ScriptDir & "\LV_Daten.Dat"
[/autoit] [autoit][/autoit] [autoit]GuiCreate("DKP Manager",300,500,100,100)
$check = 0
$input_name=GUICtrlCreateInput("", 15, 15, 110, 20)
$input_dkp=GUICtrlCreateInput("", 140, 15, 60, 20)
$button_create=GUICtrlCreateButton("Add char", 210, 15, 75, 20)
$liste=GUICtrlCreateListView("Name|DKP", 15, 50, 270, 400,-1, $LVS_EX_FULLROWSELECT)
GUICtrlSendMsg($liste,$LVM_SETCOLUMNWIDTH, 0, 160)
GUICtrlSendMsg($liste,$LVM_SETCOLUMNWIDTH, 1, 110)
$button_delete=GUICtrlCreateButton("Delete character", 15, 465, 270, 20)
[/autoit] [autoit][/autoit] [autoit]_LoadLV()
GuiSetState()
Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($liste)]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1
$msg=GuiGetMsg()
If $msg=-3 Then
_saveLV()
Exit
EndIf
If $msg = $button_create then
$check = 0
For $i = 0 To _GUICtrlListView_GetItemCount($liste) - 1
If _GUICtrlListView_GetItemText($liste, $i) = GUICtrlRead($input_name) Then
_GUICtrlListView_SetItemText($liste, $i, GUICtrlRead($input_dkp), 1)
$B_DESCENDING = True
_GUICtrlListView_SimpleSort($liste, $B_DESCENDING, 1)
GUICtrlSetData($input_name, "")
GUICtrlSetData($input_dkp, "")
$check = 1
ExitLoop
EndIf
next
If $check = 0 then
GUICtrlCreateListViewItem(GUICtrlRead($input_name) & "|" & GUICtrlRead($input_dkp), $liste)
$B_DESCENDING = True
_GUICtrlListView_SimpleSort($liste, $B_DESCENDING, 1)
GUICtrlSetData($input_name, "")
GUICtrlSetData($input_dkp, "")
EndIf
endif
If $msg = $button_delete Then
If GUICtrlRead($liste) <> 0 Then
_GUICtrlListView_DeleteItemsSelected($liste)
endif
endif
Wend
Func _saveLV()
Local $sFile, $aItem, $hFileOut
$hFileOut = FileOpen($sLVdat, 2)
For $j = 0 To _GUICtrlListView_GetItemCount($Liste) - 1
$aItem = _GUICtrlListView_GetItemTextString($Liste, $j)
FileWriteLine($hFileOut, $aItem)
Next
FileClose($hFileOut)
EndFunc ;==>_saveLVs
Func _LoadLV()
Local $aItems
If FileExists($sLVdat) Then
$aItems = ""
_FileReadToArray($sLVdat, $aItems)
If IsArray($aItems) Then
For $j = 1 To $aItems[0]
GUICtrlCreateListViewItem($aItems[$j], $Liste)
Next
EndIf
EndIf
EndFunc ;==>_LoadLVs
mfg (Auto)Bert
ah gut vielen dank.
Nun noch eine frage^^
Und zwar kann man es machen, das das inputfeld für den namen imma angewählt ist, d.h. man imma reinschreiben kann ohne erst mit der maus einmal ins feld klicken zu müssen?
mfg
ja mit ControlFocus. hier das geänderte Skript (2 Zeilen weggekürzt, ControlFocus eingefügt)
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <File.au3>
Global $sLVdat = @ScriptDir & "\LV_Daten.Dat"
[/autoit] [autoit][/autoit] [autoit]$hGui = GuiCreate("DKP Manager",300,500,100,100)
$check = 0
$input_name=GUICtrlCreateInput("", 15, 15, 110, 20)
$input_dkp=GUICtrlCreateInput("", 140, 15, 60, 20)
$button_create=GUICtrlCreateButton("Add char", 210, 15, 75, 20)
$liste=GUICtrlCreateListView("Name|DKP", 15, 50, 270, 400,-1, $LVS_EX_FULLROWSELECT)
GUICtrlSendMsg($liste,$LVM_SETCOLUMNWIDTH, 0, 160)
GUICtrlSendMsg($liste,$LVM_SETCOLUMNWIDTH, 1, 110)
$button_delete=GUICtrlCreateButton("Delete character", 15, 465, 270, 20)
[/autoit] [autoit][/autoit] [autoit]_LoadLV()
GuiSetState()
Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($liste)]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1
$msg=GuiGetMsg()
If $msg=-3 Then
_saveLV()
Exit
EndIf
If $msg = $button_create then
$check = 0
For $i = 0 To _GUICtrlListView_GetItemCount($liste) - 1
If _GUICtrlListView_GetItemText($liste, $i) = GUICtrlRead($input_name) Then
_GUICtrlListView_SetItemText($liste, $i, GUICtrlRead($input_dkp), 1)
$B_DESCENDING = True
_GUICtrlListView_SimpleSort($liste, $B_DESCENDING, 1)
$check = 1
ExitLoop
EndIf
next
If $check = 0 then
GUICtrlCreateListViewItem(GUICtrlRead($input_name) & "|" & GUICtrlRead($input_dkp), $liste)
$B_DESCENDING = True
_GUICtrlListView_SimpleSort($liste, $B_DESCENDING, 1)
EndIf
GUICtrlSetData($input_name, "")
GUICtrlSetData($input_dkp, "")
ControlFocus($hGui,"",$input_name)
endif
If $msg = $button_delete Then
If GUICtrlRead($liste) <> 0 Then
_GUICtrlListView_DeleteItemsSelected($liste)
endif
endif
Wend
Func _saveLV()
Local $sFile, $aItem, $hFileOut
$hFileOut = FileOpen($sLVdat, 2)
For $j = 0 To _GUICtrlListView_GetItemCount($Liste) - 1
$aItem = _GUICtrlListView_GetItemTextString($Liste, $j)
FileWriteLine($hFileOut, $aItem)
Next
FileClose($hFileOut)
EndFunc ;==>_saveLVs
Func _LoadLV()
Local $aItems
If FileExists($sLVdat) Then
$aItems = ""
_FileReadToArray($sLVdat, $aItems)
If IsArray($aItems) Then
For $j = 1 To $aItems[0]
GUICtrlCreateListViewItem($aItems[$j], $Liste)
Next
EndIf
EndIf
EndFunc ;==>_LoadLVs
leider wieder keine Möglichkeit zum testen
mfg (Auto)Bert
Ah super vielen Dank. Ist es bei Listview auch möglich, dass etwas passiert, wenn man doppel auf einen eintrag klickt?... kann man sowas einstellen?Mfg
Ja dazu musst du GuiRegisterMsg verwenden, hier das geänderte Skript:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <File.au3>
Global $sLVdat = @ScriptDir & "\LV_Daten.Dat"
[/autoit] [autoit][/autoit] [autoit]$hGui = GuiCreate("DKP Manager",300,500,100,100)
$check = 0
$input_name=GUICtrlCreateInput("", 15, 15, 110, 20)
$input_dkp=GUICtrlCreateInput("", 140, 15, 60, 20)
$button_create=GUICtrlCreateButton("Add char", 210, 15, 75, 20)
$liste=GUICtrlCreateListView("Name|DKP", 15, 50, 270, 400,-1, $LVS_EX_FULLROWSELECT)
GUICtrlSendMsg($liste,$LVM_SETCOLUMNWIDTH, 0, 160)
GUICtrlSendMsg($liste,$LVM_SETCOLUMNWIDTH, 1, 110)
$button_delete=GUICtrlCreateButton("Delete character", 15, 465, 270, 20)
[/autoit] [autoit][/autoit] [autoit]_LoadLV()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") ;<=========================================== Bemachrichtigung Doppelklick
GuiSetState()
[/autoit] [autoit][/autoit] [autoit]Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($liste)]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1
$msg=GuiGetMsg()
If $msg=-3 Then
_saveLV()
Exit
EndIf
If $msg = $button_create then
$check = 0
For $i = 0 To _GUICtrlListView_GetItemCount($liste) - 1
If _GUICtrlListView_GetItemText($liste, $i) = GUICtrlRead($input_name) Then
_GUICtrlListView_SetItemText($liste, $i, GUICtrlRead($input_dkp), 1)
$B_DESCENDING = True
_GUICtrlListView_SimpleSort($liste, $B_DESCENDING, 1)
$check = 1
ExitLoop
EndIf
next
If $check = 0 then
GUICtrlCreateListViewItem(GUICtrlRead($input_name) & "|" & GUICtrlRead($input_dkp), $liste)
$B_DESCENDING = True
_GUICtrlListView_SimpleSort($liste, $B_DESCENDING, 1)
EndIf
GUICtrlSetData($input_name, "")
GUICtrlSetData($input_dkp, "")
ControlFocus($hGui,"",$input_name)
endif
If $msg = $button_delete Then
If GUICtrlRead($liste) <> 0 Then
_GUICtrlListView_DeleteItemsSelected($liste)
endif
endif
Wend
Func _saveLV()
Local $sFile, $aItem, $hFileOut
$hFileOut = FileOpen($sLVdat, 2)
For $j = 0 To _GUICtrlListView_GetItemCount($Liste) - 1
$aItem = _GUICtrlListView_GetItemTextString($Liste, $j)
FileWriteLine($hFileOut, $aItem)
Next
FileClose($hFileOut)
EndFunc ;==>_saveLVs
Func _LoadLV()
Local $aItems
If FileExists($sLVdat) Then
$aItems = ""
_FileReadToArray($sLVdat, $aItems)
If IsArray($aItems) Then
For $j = 1 To $aItems[0]
GUICtrlCreateListViewItem($aItems[$j], $Liste)
Next
EndIf
EndIf
EndFunc ;==>_LoadLVs
Func WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
Local $tagNMHDR, $event, $hwndFrom, $code
$tagNMHDR = DllStructCreate("int;int;int", $lParam)
If @error Then Return 0
$code = DllStructGetData($tagNMHDR, 3)
If $wParam = $liste Then
ConsoleWrite($code & @CRLF)
Switch $code
;case $NM_CLICK ;Klick
Case $NM_DBLCLK ;Doppelklick
If _GUICtrlListView_GetSelectedCount($liste) > 0 Then
For $i = 0 To _GUICtrlListView_GetItemCount($liste)
If _GUICtrlListView_GetItemSelected($liste, $i) Then
$aItem = _GUICtrlListView_GetItemTextArray($liste, $i)
MsgBox(0, "Doppel-Klick auf ", $aItem[1] & @CRLF & @CRLF & $aItem[2])
EndIf
Next
EndIf
EndSwitch
EndIf
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
im Moment erscheint eine MsgBox und gibt dir die Name und DKP aus. Für was steht das Kürzel DKP
mfg (Auto)Bert
mfg (Auto)Bert
ok schön ung gut. ich habe mittlerweile die farbe meiner liste geändert und die schriftfarbe der einträge. Jedoch würde ich gerne die scharftefarbe eines einzelnen eintrages verändern. Wie könnte ich das am besten machen?
mfg
Hallo dtex,
schau dir dazu das Beispiel FormatSubItemLVex.au3 in ListView - SubItem einzeln färben/formatieren, Finale Version! an. Die Func WM_NOTIFY aus deinem musst du entsprechend anpassen, bzw. die von BugFix mit dem gewünschten Funktionen für Doppelklick ergänzen
mfg (Auto)Bert
Guck mal in den Source meines Arbeitsplaners, da habich mit Raupi ziemlich viel mit LV gearbeitet
jo vielen dank leute
mfg