Hallo!
Hat irgendjemand einen Link zu einem Beispielskript, bei der in einer Liste/Tabelle (LIstView) eine Checkbox in jeder Zeile ist?
Danke
ListView mit Checkboxen
-
- [ offen ]
-
petter2 -
13. Dezember 2009 um 12:16 -
Geschlossen -
Erledigt
-
-
- Offizieller Beitrag
[autoit]#include <ListViewConstants.au3>
[/autoit][autoit][/autoit][autoit]
#include<GUIConstantsEx.au3>
#include <GUIListView.au3>$gui = GUICreate('test')
[/autoit][autoit][/autoit][autoit]
$hListView = GUICtrlCreateListView('Spalte1|Spalte2', 10, 10, 300, 200, -1, BitOR($LVS_EX_TRACKSELECT,$LVS_EX_CHECKBOXES))
_GUICtrlListView_SetColumnWidth($hListView, 0, 146)
_GUICtrlListView_SetColumnWidth($hListView, 1, $LVSCW_AUTOSIZE_USEHEADER)
For $i = 1 To 10
GUICtrlCreateListViewItem('Zeile ' & $i & ' Spalte 1|Zeile ' & $i & ' Spalte 2', $hListView)
Next
GUISetState()Do
[/autoit]
$msg = GUIGetMsg()
Until $msg = $GUI_EVENT_CLOSE -
-
Ahh, gut Vielen Dank!
Noch 3 Fragen:
1. Wie kann man die ausgewählten Einträge ansprechen? (In ein Array tun)
2. Ist es möglich, bei Klick auf eine Zelle ein Informationsfenster mit weiteren Informationen anzuzeigen?
3. Kann man das verschieben der Spalten ausschallten? (das ist nicht so wichtig)Danke
UPDATE: autoBert, dein Beitrag ist oben noch nicht berücksichtigt, ich aktualisiere gleich nochmal.So, Danke für die Klärung der Fragen 1 und 3.
Wr kann Frage 2 beantworten? -
- Offizieller Beitrag
3. Kann man das verschieben der Spalten ausschallten? (das ist nicht so wichtig)
Dafür hatte ich schon mal ein Bsp. erstellt:Spoiler anzeigen
[autoit]#include <ListViewConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <StructureConstants.au3>
#include<GUIConstantsEx.au3>
#include<WindowsConstants.au3>
#include <GUIListView.au3>$gui = GUICreate('test')
[/autoit] [autoit][/autoit] [autoit]
$hListView = GUICtrlCreateListView('Spalte1|Spalte2', 10, 10, 300, 200)
_GUICtrlListView_SetColumnWidth($hListView, 0, 146)
_GUICtrlListView_SetColumnWidth($hListView, 1, $LVSCW_AUTOSIZE_USEHEADER)
For $i = 1 To 10
GUICtrlCreateListViewItem('Zeile ' & $i & ' Spalte 1|Zeile ' & $i & ' Spalte 2', $hListView)
Next; hier für Vergleich die Spaltenbreite speichern:
[/autoit] [autoit][/autoit] [autoit]
Global $aColumnWidth[_GUICtrlListView_GetColumnCount($hListView)]
For $i = 0 To UBound($aColumnWidth) -1
$aColumnWidth[$i] = _GUICtrlListView_GetColumnWidth($hListView, $i)
NextGUISetState()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
[/autoit] [autoit][/autoit] [autoit]Do
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
Until $msg = $GUI_EVENT_CLOSEFunc _Columnwidth()
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($aColumnWidth) -1
If _GUICtrlListView_GetColumnWidth($hListView, $i) <> $aColumnWidth[$i] Then
_GUICtrlListView_SetColumnWidth($hListView, $i, $aColumnWidth[$i])
EndIf
Next
EndFuncFunc WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit] [autoit][/autoit] [autoit]
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
$hWndListView = $hListView
If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
[/autoit]
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hWndListView
Switch $iCode
Case -12 ; Spaltenbreite wurde verändert
_Columnwidth()
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY -
Vielen Dank!
Ist es möglich, bei Klick auf eine Zelle ein Informationsfenster mit weiteren Informationen anzuzeigen?
-
wenn nicht, dann ist es doch bestimmt möglich, dass
man einen Button an die Seite macht, und bei einem Klick die weiteren Informationen für den gerade angezeigten Button erscheinen, hat jemand ein Beispiel hierfür? -
Das ist jetzt ein Beispiel für einen Doppelklick auf die Listview
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#Include <GuiListView.au3>
;Globals für die Funktion:$MainGui = GUICreate("DBClick test", 616, 395, 192, 120)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$ListView = GUICtrlCreateListView("Produkt Name|Produktnummer|Produktlink", 8, 8, 498, 214);Das ListView mit $LVS_LIST...
$TestItem = GUICtrlCreateListViewItem("Google Zahnbürste|22453|http://www.google.de", $ListView)
$TestItem = GUICtrlCreateListViewItem("AutoIt Wecker|22684|http://www.autoit.de", $ListView)GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_notify, "_DoubleClickOnListView");Die Funktion wird bei einem Klick auf die GUI aufgerufen!$InfoGUI = GUICreate("Infos",300,200,500,600)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateLabel("Produkt Name:",20,50,-1,25)
$InfoName = GUICtrlCreateLabel("",100,50,200,25)
GUICtrlCreateLabel("Produktnummer:",20,100,-1,25)
$InfoNummer = GUICtrlCreateLabel("",100,100,200,25)
GUICtrlCreateLabel("Produktlink:",20,150,-1,25)
$InfoLink = GUICtrlCreateLabel("",100,150,200,25)
;~ GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg(1)
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
Switch $nMsg[1]
Case $MainGui
Exit
Case $InfoGUI
GUISetState(@SW_HIDE,$InfoGUI)
EndSwitch
EndSwitch
WEndFunc _ShowDetails()
[/autoit]
$selection = _GUICtrlListView_GetSelectionMark($ListView)
GUICtrlSetData($InfoName,_GUICtrlListView_GetItemText($ListView,$selection,0))
GUICtrlSetData($InfoNummer,_GUICtrlListView_GetItemText($ListView,$selection,1))
GUICtrlSetData($InfoLink,_GUICtrlListView_GetItemText($ListView,$selection,2))
GUISetState(@SW_SHOW,$InfoGUI)
EndFunc
Func _DoubleClickOnListView($hWndGUI, $MsgID, $wParam, $lParam)
Local $tagNMHDR, $event, $hwndFrom, $code
$tagNMHDR = DllStructCreate("int;int;int", $lParam)
If @error Then Return
$event = DllStructGetData($tagNMHDR, 3)
If $wParam = $ListView Then
If $event = $NM_DBLCLK Then
_ShowDetails() ; <----
EndIf
EndIf
$tagNMHDR = 0
$event = 0
$lParam = 0
EndFunc ;==>_DoubleClickOnListView