Что нового

Динамически установить выстоту listbox по количеству строк

Pahuchiy

Новичок
Сообщения
37
Репутация
0
как?
и чтобы работало с нечётным количеством строк
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Посмотрите функцию и пример из справки:
Код:
#include <GuiListBox.au3>
_GUICtrlListBox_SetItemHeight($hWnd, $iHeight [, $iIndex = 0])
 
Автор
P

Pahuchiy

Новичок
Сообщения
37
Репутация
0
эта функция устанавливает высоту каждой строки(ячейки), а я спрашивал про весь listbox. То есть, изменять высоту не меняя высоту каждой строки.
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
эта функция устанавливает высоту каждой строки(ячейки), а я спрашивал про весь listbox.
Не совсем понятно, в чём разница между "каждой" и "весь"...
Код:
#include <GUIConstants.au3>
#include <GuiListBox.au3>

$hMainGui = GUICreate('', 400, 300)
$ListBox = GUICtrlCreateList('', 5, 5, 390, 290)
GUISetState(@SW_SHOW, $hMainGui)

;Заполняем чем-нибудь строки
For $i = 0 To 50
	_GUICtrlListBox_AddString($ListBox, 'Строка ' & $i)
Next

;Меняем высоту для ВСЕХ строк
_GUICtrlListBox_SetItemHeight($ListBox, 35)

While 1
	$msg = GUIGetMsg()
	Select
		Case $msg = $GUI_EVENT_CLOSE
			Exit

	EndSelect
WEnd
 
Автор
P

Pahuchiy

Новичок
Сообщения
37
Репутация
0
ок, чтобы не усложнять, напишу что мне надо в итоге:

Листбокс должен быть без прокрутки и сортировки.
Нужно чтобы при каждом добавлении новой строчки листбокс менял бы свою высоту на столько чтобы был виден каждый пункт. (и не было бы пустой строки в конце: что-то там с нечётным количеством были какие-то заморочки, кажется, я не совсем понял...)
А при удалении строки, высота должна уменьшаться.

То есть, если 3 строки то высота листбокса должна быть 3*13(высота строки по умолчанию)+4(рамка). Эту формулу я применяю при создании листбокса. А как изменить высоту уже существующего?
Нашёл ControlMove(). Но в ней необходимо указывать окно. А если не указывать, то нужно перебирать все окна....
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Так ?
Код:
#include <GUIConstants.au3>
#include <GuiListBox.au3>

Global $n=0
$hMainGui = GUICreate('', 400, 300)
$AddBut=GUICtrlCreateButton('Добавить строку',5,5,150,25)
$ListBox = GUICtrlCreateList('', 5, 35, 390, 3)
GUISetState(@SW_SHOW, $hMainGui)


While 1
	$msg = GUIGetMsg()
	Switch $msg
		Case $GUI_EVENT_CLOSE
			Exit
        Case $AddBut
			$n+=1
			_GUICtrlListBox_AddString($ListBox,'Новая строка №'&$n)
           ControlMove ( "", "", $ListBox, 5, 35, 390, $n*13+13 )
	EndSwitch
WEnd
 
Верх