Moin Forum,
ich habe gerade wieder ein sehr merkwürdiges Problem das ich mir nicht ganz erklären kann. Wäre super wenn da jemand nen Tipp hätte:
Hintergrund: Ich habe ein Script mit einer ListView das ich nun um eine, eigentlich, einfache Option erweitern wollte - Das Speichern und Laden der vom Nutzer veränderten Spaltenbreite in die Registry.
Problem: Aus einen mir unerklärlichen Grund funktioniert der Aufruf, nach auslesen der Werte aus der Registry in ein Array, von _GUICtrlListView_SetColumnWidth() zum ändern der Breite nicht.
Noch merkwürdiger - Es wird entweder keine Änderung durchgeführt, oder jede Spalte bekommt sporadisch eine Vergrößerung mit Werten > 2000, obwohl sowohl in Registry als auch beim Auslesen der Variabel die richtigen Werte stehen. Und nun der Hammer - wenn ich statt der Array-Variabel direkt die Breite übergebe, funktioniert die Änderung ohne Probleme!
Ich habe nun schon so viel ausprobiert und sitze bereits mehrere Tage daran, dass ich nun mein Skript mittlerweile auf das absolute Minimum runtergebrochen habe.
Ich habe nun mittlerweile sogar die Includes gegen neuere Versionen getauscht um einen vermeintlichen Bug in diesen auszuschließen.
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <GuiListView.au3>
Global $ListView_Overview
Global $SavedLVwidth_String = ""
Global $Switch_AutoReadInData = True
Global $Switch_SaveLVwidht = False
Global $Switch_FirstLVSearch = True
if RegRead("HKEY_CURRENT_USER\Software\PCF-Doku-Tool\User-Options","Auto Read-In Data") == False Then $Switch_AutoReadInData = False
if RegRead("HKEY_CURRENT_USER\Software\PCF-Doku-Tool\User-Options","Save ListView Width") == True Then $Switch_SaveLVwidht = True
if $Switch_SaveLVwidht == True Then $SavedLVwidth_String = RegRead("HKEY_CURRENT_USER\Software\PCF-Doku-Tool\User-Options","LV-Saved-Width")
$MainGUI = GUICreate("TEST", 1402, 855)
$ListView_Overview = GUICtrlCreateListView("Case|S-Icon|Auftragsname|Erstellt am|Angelegt|Deadline|Status|MV (Mont.-Verantw.)|EV (Einricht.Verantw.)|Montage|Doku|Computername|PC-SN|Vision-Lizenz|Dongle-SN|Windows-Lizenz|Windows|Gehäuse|Netzteil|Mainboard|Prozessor|Grafikkarte|RAM|Festplatten|Netzwerkkarte|Perle-Karte|Grabber-Karte|COM-Port-Blende", 8, 64, 1385, 753,-1)
GUISetState(@SW_SHOW)
_GetDataArray()
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
Func _GetDataArray()
$LVwidth = StringSplit($SavedLVwidth_String,";",2)
_GUICtrlListView_SetColumnWidth($ListView_Overview, 2, $LVwidth[2])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 3, $LVwidth[3])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 4, $LVwidth[4])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 5, $LVwidth[5])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 6, $LVwidth[6])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 7, $LVwidth[7])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 8, $LVwidth[8])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 9, $LVwidth[9])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 10, $LVwidth[10])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 11, $LVwidth[11])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 12, $LVwidth[12])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 13, $LVwidth[13])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 14, $LVwidth[14])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 15, $LVwidth[15])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 16, $LVwidth[16])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 17, $LVwidth[17])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 18, $LVwidth[18])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 19, $LVwidth[19])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 20, $LVwidth[20])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 22, $LVwidth[22])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 23, $LVwidth[23])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 24, $LVwidth[24])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 25, $LVwidth[25])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 26, $LVwidth[26])
_GUICtrlListView_SetColumnWidth($ListView_Overview, 27, $LVwidth[27])
_ArrayDisplay($LVwidth)
EndFunc
Alles anzeigen
Der in die Registry geschriebene String für die Spaltenbreite sieht dann z.B. so aus:
50;59;712;77;60;66;1504;124;125;260;156;227;127;165;327;354;419;321;203;509;516;313;458;569;314;150;545;178
Habe die Reg die das Prog anlegt mal exportiert und hier angehängt: RegExport.zip