Что нового

[Элементы GUI] С помощью какой функции можно очистить список ListView??

Dimmak

Знающий
Сообщения
185
Репутация
9
Подскажите, с помощью какой функции можно очистить содержимое ListView?? :scratch:
ps :-\
Пробовал
Код:
_GUICtrlListView_DeleteAllItems($ListView) из библиотеки <GuiListView.au3>

- безрезультатно... :stars:

ps
Код:
_GUICtrlListView_DeleteColumn
работает без проблем :-X
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: [Элементы GUI] С помощью какой функции можно очистить список листбокса??

Предупреждение За нарушение общих правил (пункт В.8):
Так как эта конференция называется "Русское сообщество AutoIt", язык общения на ней - Русский. Названия фирм или программных продуктов, аббревиатуры и т.д. должны быть написаны так, как они пишутся в оригинале, например не следует писать УСБ вместо USB. На форуме крайне не рекомендуется намеренно искажать русский язык и использовать "сетевой жаргон" на подобии "Аффтар выпей йадау!".


С уважением, ваш Модератор.
 

winstan

Эксплотатор)
Сообщения
406
Репутация
79
Re: [Элементы GUI] С помощью какой функции можно очистить список ListBox'a??

Код:
GUICtrlSetData($mylist, "")
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Re: [Элементы GUI] С помощью какой функции можно очистить список ListBox'a??

А так ?:
Код:
_GUICtrlListBox_ResetContent($ListBox)


из библиотеке GUIListBox.au3

PS Странно: Тебе нужно очистить ListBox, а ты используешь команды ListView ;)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,485
Re: [Элементы GUI] С помощью какой функции можно очистить список ListBox'a??

Dimmak [?]
Безрезультатно...
Результатно, даже очень:

Код:
#include <GUIConstantsEx.au3>

$hGUI = GUICreate("Test Script", 300, 200)
$iList = GUICtrlCreateList("", 20, 20, 260, 160)
GUICtrlSetData(-1, "Item1|Item2")

GUISetState(@SW_SHOW, $hGUI)

Sleep(2000)
GUICtrlSetData($iList, "")

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd


[?]
работает без проблем
Значит видимо нужно всё таки работать с ListView а не с ListBox?
 

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
Re: [Элементы GUI] С помощью какой функции можно очистить список ListBox'a??

Dimmak
Открыть справку и посмотреть как там сделано для указанного элемента.
 
Автор
Dimmak

Dimmak

Знающий
Сообщения
185
Репутация
9
Re: [Элементы GUI] С помощью какой функции можно очистить список ListBox'a??

PS Странно: Тебе нужно очистить ListBox, а ты используешь команды ListView ;)
Я искренне прошу прощения! :-[
Конечно же ListView!!!
CreatoR
Я создаю
Код:
GUICtrlCreateListView
вместо
Код:
GUICtrlCreateList
- в Вашем примере.
AZJIO
В справке именно так и написано, как я делал...
другими словами - функцию запускаю _GUICtrlListView_DeleteAllItems($ListView), а следствие отсутствует.
 

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
Dimmak
Dimmak сказал(а):
AZJIOВ справке именно так и написано, как я делал...
В справке по разному написано. Конкретно для GUICtrlCreateListView написано так: скрин
И работает.
 
Автор
Dimmak

Dimmak

Знающий
Сообщения
185
Репутация
9
GUICtrlSendMsg($ListView, $LVM_Deleteallitems, 0, 0)
Так работает! :ok:
AZJIO Спасибо!!! :smile:
А где можно скачать такую справку??
 

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
Dimmak
другими словами - функцию запускаю _GUICtrlListView_DeleteAllItems($ListView), а следствие отсутствует.
Эта проблема известная. В UDF в качестве идентификатора используется дескриптор, а в нативных функциях порядковый номер элемента. Используй GUICtrlGetHandle, чтобы передать дескриптор.
Код:
_GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($ListView))




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

Dimmak
А где можно скачать такую справку??
справка
 
Автор
Dimmak

Dimmak

Знающий
Сообщения
185
Репутация
9
Теперь ясно!! Буду в курсе. :smile:
Спасибо за информацию! :IL_AutoIt_1:
:beer:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,485
AZJIO [?]
Эта проблема известная. В UDF в качестве идентификатора используется дескриптор, а в нативных функциях порядковый номер элемента. Используй GUICtrlGetHandle, чтобы передать дескриптор
Вот мне непонятно, неужели разработчики не могли сделать так:

Код:
Func _GUICtrlListView_DeleteAllItems($hWnd)
	If $Debug_LV Then __UDF_ValidateClassName($hWnd, $__LISTVIEWCONSTANT_ClassName)
	
	If Not IsHWnd($hWnd) Then
		$hWnd = GUICtrlGetHandle($hWnd)
	EndIf
	
	If _GUICtrlListView_GetItemCount($hWnd) == 0 Then Return True
	
	Return _SendMessage($hWnd, $LVM_DELETEALLITEMS) <> 0
EndFunc


зачем такие сложности, и вообще многие UDF функции полагаются на param элемента, который не задаётся при созданий не нативных пунктов, т.к его собственно и нет. Не логично, нужно как то преподнести это разработчикам, пусть исправляют.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
"Param", это вообще довольно хитрая штука, и использование его нативными функциями, это своего рода расплата за то, что мы вообще что-то можем сделать с элементами ListView и TreeView, в рамках AutoIt естественно, например изменить цвет. Вообще, использование "Param", это единственный простой способ идентифицировать элементы в LV/TV без нагромождения каких-нибудь таблиц соответствия ID c Handle.

С другими элементами GUI все намного проще, т.к. есть жесткая связь между CtrlID и Handle: _WinAPI_GetDlgCtrlID() <=> _WinAPI_GetDlgItem().

:smile:
 
Верх