Что нового

Получить полный список элементов List

sss

Продвинутый
Сообщения
332
Репутация
96
Создал элемент List (не ListView). Потом добавляю несколько элементов с помощью GuiCtrlSetData($list, $data). Никак не могу получить полный список элементов, то есть все строки листа (желательно разделенные @CRLF или чем-нибудь). Функция GuiCtrlRead($list) возвращает только значение выделенного элемента, а надо весь список. Помогите пожалуйста! Заранее спасибо.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Sky-WaLkeR
Код:
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>

$sText = ''
GUICreate("My GUI list")
$add = GUICtrlCreateButton("Add", 64, 32, 75, 25)
$read = GUICtrlCreateButton("Read", 64, 72, 75, 25)
$mylist = GUICtrlCreateList("buttons that have been clicked", 176, 32, 121, 97)
$hList = GUICtrlGetHandle($mylist)
GUICtrlSetData(-1, "The following buttons have been clicked")
GUISetState()

While 1
	$msg = GUIGetMsg()
	Switch $msg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $add
			GUICtrlSetData($mylist, "You clicked button No1|")
		Case $read
			$iStrings = _GUICtrlListBox_GetListBoxInfo($hList)
			For $i = 0 To $iStrings - 1
				$sText &= _GUICtrlListBox_GetText($hList, $i) & @CRLF
			Next
			MsgBox(64, 'Строк: ' & $iStrings, $sText)
	EndSwitch
WEnd
 

Guezt

Продвинутый
Сообщения
335
Репутация
82
to: Sky-WaLkeR
добавь еще в код madmasles обнуление если список будет меняться:

Код:
Case $read
			$sText='' ; тут еще обнуление добавить списка если будет изменяться
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Прошу прощения за задержку, выключился интернет а с телефона не написать. Большое спасибо, все сработало на ура! Этого я и хотел. Но теперь у меня другой вопрос - как можно удалить выделенную строку из листбокса? У меня такая идея - взять весь текст, взять текст выделенный (командой GuiCtrlRead), вырезать из всего текста выделенный текст и по строчкам добавлять остатоок в очищенный листбокс. Но это долго, муторно, да и у меня почему-то не работает второй такой скрипт по считке всего текста - как будто он игрорируется. Грешил на саму кнопку - мол не нажимается - ан нет, MsgBox и до куска и после показывается, а массив не создается. Помогите пожалуйста!
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Пример

Код:
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>

Opt('MustDeclareVars', 		1)

Global 	$hBtAdd, $hBtRead, $hBtDel, $hList, $iClicked

GUICreate('My GUI list')

$hBtAdd 	= GUICtrlCreateButton('Add',  	10, 32, 75, 25)
$hBtRead	= GUICtrlCreateButton('Read', 	10, 32+32, 75, 25)
$hBtDel		= GUICtrlCreateButton('Del', 	10, 32+32+32, 75, 25)

$hList 		= GUICtrlCreateList('Buttons that have been clicked', 100, 32, 280, 100)

GUICtrlSetData(-1, 'The following buttons have been clicked')
GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit

        Case $hBtAdd
			$iClicked += 1
			_GUICtrlListBox_InsertString($hList, 'Clicked '& $iClicked &' button: Add', _GUICtrlListBox_GetListBoxInfo($hList))

        Case $hBtRead
            Local $sText='', $iStrings = _GUICtrlListBox_GetListBoxInfo($hList)
            For $i = 0 To $iStrings - 1
                $sText &= _GUICtrlListBox_GetText($hList, $i) & @CRLF
            Next
            MsgBox(64, 'Колличество строк: ' & $iStrings, $sText)

		Case $hBtDel
			_GUICtrlListBox_DeleteString($hList, _GUICtrlListBox_GetCurSel($hList))
    EndSwitch
WEnd


Советую сразу привыкать к стандартизированному оформлению кода: Рекомендации по написанию скриптов.
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Благодарю за помощь! Большое спасибо, все работает!

Прошу объяснения нескольких аспектов кода в ЛС (или сюда): что означает += и &=? Догадываюсь, что это какое-то сокращениеупрощение, а понять никак не могу...
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Sky-WaLkeR [?]
что означает += и &=?
В справке раздел: Language Reference > Operators.
В русской справке: Справочник по языку > Операторы. Русская справка, очень устарела.
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Да, русская справка стара - у меня версия v3.2.5.4. Пункт под другим названием, но нашел - спасибо, раньше сюда даже не смотрел) Тема решена, всем спасибо!
 
Верх