Что нового

Стиль для ListView как у Windows Vista Explorer'а

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Необходима Windows Vista/7 и последняя версия WinAPIEx UDF библиотеки.

Код:
#Include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)

If _WinAPI_GetVersion() < '6.0' Then
	MsgBox(16, 'Error', 'Require Windows Vista or later.')
	Exit
EndIf

Global $ListView

GUICreate('MyGUI', 332, 400)

$ListView = GUICtrlCreateListView('Column 1|Column 2|Column 3|Column 4', 10, 10, 312, 380)
For $i = 1 To 9
	GUICtrlCreateListViewItem('Item ' & $i & '|' & 'Sub ' & $i & '|' & 'Sub ' & $i & '|' & 'Sub ' & $i, $ListView)
Next

_WinAPI_SetWindowTheme(GUICtrlGetHandle($ListView), 'Explorer')

GUISetState()

Do
Until GUIGetMsg() = -3


post_img_064.png
post_img_065.png
 

HukpoFuJl

AццkuЙ HukpoFuJl
Сообщения
98
Репутация
38
Отличная штука :smile: Искал совсем другое, случайно наткнулся и не упустил шанс преобразить свой прайсер :smile:
Вот скрины, как было
36631553.jpg

и как стало :smile:
08659584.jpg



Есть вопрос, а возможно ли также "украсить" и другие элементы? Например тот же "GUICtrlCreateList", который у меня в проге слева...
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
А что мешает вместо List использовать ListView без заголовка и с одной колонкой?
 

HukpoFuJl

AццkuЙ HukpoFuJl
Сообщения
98
Репутация
38
В принципе ничего не мешает, просто ListView заполнять нужно по другому (в цикле), ну и в общей сложности кода больше, да и прога в принципе написана, и что-то глобально менять не охота, хотелось бы "меньше телодвижений".
Не подумайте, я не лентяй, просто если есть простое решение, подобное этому - то почему бы просто не воспользоваться им :smile:

UPD
Кстати я бы код примера немного изменил до такого вида:
Код:
#Include <WinAPIEx.au3>
Opt('MustDeclareVars', 1)

Global $ListView

GUICreate('MyGUI', 332, 400)
$ListView = GUICtrlCreateListView('Column 1|Column 2|Column 3|Column 4', 10, 10, 312, 380)
For $i = 1 To 9
    GUICtrlCreateListViewItem('Item ' & $i & '|' & 'Sub ' & $i & '|' & 'Sub ' & $i & '|' & 'Sub ' & $i, $ListView)
Next

If Not _WinAPI_GetVersion() < '6.0' Then
    _WinAPI_SetWindowTheme(GUICtrlGetHandle($ListView), 'Explorer')
Else
    MsgBox(48, 'Стиль не применен', 'Для применения стиля требуется Windows Vista или новее.')
EndIf

GUISetState()

Do
Until GUIGetMsg() = -3
Так по крайней мере юзальщики XP и древнее увидят оригинальное окно в старом стиле :-[
Ну это так, мелочь от скуки :smile:
 
Верх