Что нового

Прокручиваемая табличка с картинками

royalfint

Трейдер, Программист, Игродел, Веб-Мастер
Сообщения
74
Репутация
0
Всем привет! не подскажете как сделать так сказать табличку с картинками и текстом и вертикальным скролом. Пихать я её буду во вкладку. Никак не могу додуматься как сделать скролл. Вот шаблончик как должно выглядеть:
BLxsad3M.png
Всем Заранее спс! :IL_AutoIt_1:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Автор
royalfint

royalfint

Трейдер, Программист, Игродел, Веб-Мастер
Сообщения
74
Репутация
0
спс, в справке нашел пример такой:
Код:
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()
	Local $listview, $hImage
	Local $exStyles = BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES)

	GUICreate("ImageList Remove", 400, 300)
	$listview = GUICtrlCreateListView("", 2, 2, 394, 268, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
	_GUICtrlListView_SetExtendedListViewStyle($listview, $exStyles)
	GUISetState(@SW_SHOW)

	; Load images
	$hImage = _GUIImageList_Create(16, 16, 5, 3)
	_GUIImageList_AddIcon($hImage, @SystemDir & "\shell32.dll", 110)
	_GUIImageList_AddIcon($hImage, @SystemDir & "\shell32.dll", 131)
	_GUIImageList_AddIcon($hImage, @SystemDir & "\shell32.dll", 165)
	_GUIImageList_AddIcon($hImage, @SystemDir & "\shell32.dll", 168)
	_GUIImageList_AddIcon($hImage, @SystemDir & "\shell32.dll", 137)
	_GUIImageList_AddIcon($hImage, @SystemDir & "\shell32.dll", 146)
	_GUICtrlListView_SetImageList($listview, $hImage, 1)

	; Add columns
	_GUICtrlListView_AddColumn($listview, "Column 1", 120)
	_GUICtrlListView_AddColumn($listview, "Column 2", 100)
	_GUICtrlListView_AddColumn($listview, "Column 3", 100)

	; Add items
	_GUICtrlListView_AddItem($listview, "Row 1: Col 1", 0)
	_GUICtrlListView_AddSubItem($listview, 0, "Row 1: Col 2", 1, 1)
	_GUICtrlListView_AddSubItem($listview, 0, "Row 1: Col 3", 2, 2)
	_GUICtrlListView_AddItem($listview, "Row 2: Col 1", 1)
	_GUICtrlListView_AddSubItem($listview, 1, "Row 2: Col 2", 1, 2)
	_GUICtrlListView_AddItem($listview, "Row 3: Col 1", 2)
	_GUICtrlListView_AddItem($listview, "Row 4: Col 1", 3)
	_GUICtrlListView_AddItem($listview, "Row 5: Col 1", 4)
	_GUICtrlListView_AddSubItem($listview, 4, "Row 5: Col 2", 1, 3)
	_GUICtrlListView_AddItem($listview, "Row 6: Col 1", 5)
	_GUICtrlListView_AddSubItem($listview, 5, "Row 6: Col 2", 1, 4)
	_GUICtrlListView_AddSubItem($listview, 5, "Row 6: Col 3", 2, 3)

	MsgBox($MB_SYSTEMMODAL, "Information", "Removing Image Index 0")
	_GUIImageList_Remove($hImage, 0)

	_GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($listview))

	; Add items
	_GUICtrlListView_AddItem($listview, "Row 1: Col 1", 0)
	_GUICtrlListView_AddSubItem($listview, 0, "Row 1: Col 2", 1, 1)
	_GUICtrlListView_AddSubItem($listview, 0, "Row 1: Col 3", 2, 2)
	_GUICtrlListView_AddItem($listview, "Row 2: Col 1", 1)
	_GUICtrlListView_AddSubItem($listview, 1, "Row 2: Col 2", 1, 2)
	_GUICtrlListView_AddItem($listview, "Row 3: Col 1", 2)
	_GUICtrlListView_AddItem($listview, "Row 4: Col 1", 3)
	_GUICtrlListView_AddItem($listview, "Row 5: Col 1", 4)
	_GUICtrlListView_AddSubItem($listview, 4, "Row 5: Col 2", 1, 3)
	_GUICtrlListView_AddItem($listview, "Row 6: Col 1", 5)
	_GUICtrlListView_AddSubItem($listview, 5, "Row 6: Col 2", 1, 4)
	_GUICtrlListView_AddSubItem($listview, 5, "Row 6: Col 3", 2, 3)

	; Loop until the user exits.
	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE
	GUIDelete()
EndFunc   ;==>Example

только вот там можно передвигать столбики и друг на друга их наложить, а как такое исправить?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
royalfint [?]
там можно передвигать столбики и друг на друга их наложить, а как такое исправить?
Что значит наложить?
 
Автор
royalfint

royalfint

Трейдер, Программист, Игродел, Веб-Мастер
Сообщения
74
Репутация
0
BLxsad3P.png

BLxsad3Q.png

BLxsad3S.png
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Вот так можно сделать:

Код:
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>

Global $iColumn = -1
Global $iCol_Min_Width = 50

Example()

Func Example()
    Local $listview, $hImage
    Local $exStyles = BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES)

    GUICreate("ImageList Remove", 400, 300)
    $listview = GUICtrlCreateListView("", 2, 2, 394, 268, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
    _GUICtrlListView_SetExtendedListViewStyle($listview, $exStyles)
    GUISetState(@SW_SHOW)

    ; Load images
    $hImage = _GUIImageList_Create(16, 16, 5, 3)
    _GUIImageList_AddIcon($hImage, @SystemDir & "\shell32.dll", 110)
    _GUIImageList_AddIcon($hImage, @SystemDir & "\shell32.dll", 131)
    _GUIImageList_AddIcon($hImage, @SystemDir & "\shell32.dll", 165)
    _GUICtrlListView_SetImageList($listview, $hImage, 1)

    ; Add columns
    _GUICtrlListView_AddColumn($listview, "Column 1", 120)
    _GUICtrlListView_AddColumn($listview, "Column 2", 100)
    _GUICtrlListView_AddColumn($listview, "Column 3", 100)

    ; Add items
    _GUICtrlListView_AddItem($listview, "Row 1: Col 1", 0)
    _GUICtrlListView_AddSubItem($listview, 0, "Row 1: Col 2", 1, 1)
    _GUICtrlListView_AddSubItem($listview, 0, "Row 1: Col 3", 2, 2)
	
	GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
	
    ; Loop until the user exits.
    Do
		If $iColumn <> -1 Then
			If _GUICtrlListView_GetColumnWidth($listview, $iColumn) < $iCol_Min_Width Then
				_GUICtrlListView_SetColumnWidth($listview, $iColumn, $iCol_Min_Width)
			EndIf
			
			$iColumn = -1
		EndIf
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
	
    GUIDelete()
EndFunc   ;==>Example

Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
	Local $tNMHDR, $iCode, $tInfo
	Local Const $HDN_ITEMCHANGINGA = $HDN_FIRST - 0
	
	$tNMHDR = DllStructCreate($tagNMHDR & ";int iItem;int iButton;ptr pitem", $lParam)
	$iCode = DllStructGetData($tNMHDR, "Code")
	
	Switch $iCode
		Case $HDN_ITEMCHANGINGW, $HDN_ITEMCHANGINGA
			$tInfo = DllStructCreate($tagNMLISTVIEW, $lParam)
			$iColumn = DllStructGetData($tInfo, "Item")
    EndSwitch
   
    Return $GUI_RUNDEFMSG
EndFunc
 
Автор
royalfint

royalfint

Трейдер, Программист, Игродел, Веб-Мастер
Сообщения
74
Репутация
0
да решили проблему но очень так сказать кривым путем, ладно придумаю что нибудь сам потом. А что на счет вертикально скролла? то просто приложить свойство скролла к стилю Списка?


Добавлено:
Сообщение автоматически объединено:

Как убрать Border по краям ListView ? такого свойства я не нашел, как поступить?
 
Верх