<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Создание окна с вкладками на которое можно перетаскивать ярлыки]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=14957</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=14957&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Создание окна с вкладками на которое можно перетаскивать ярлыки».]]></description>
		<lastBuildDate>Thu, 05 Sep 2019 14:21:03 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Создание окна с вкладками на которое можно перетаскивать ярлыки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=135955#p135955</link>
			<description><![CDATA[<p>Как? Нужны руки, время и голова. Я перечислил названия статей в документации, всё это есть в русском переводе. Осталось сделать.</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Thu, 05 Sep 2019 14:21:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=135955#p135955</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Создание окна с вкладками на которое можно перетаскивать ярлыки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=135954#p135954</link>
			<description><![CDATA[<p>ypppu, понятно.<br />А как в скрипте AHK - прописать создание такого окна ?</p>]]></description>
			<author><![CDATA[null@example.com (димитрий2)]]></author>
			<pubDate>Thu, 05 Sep 2019 14:07:07 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=135954#p135954</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Создание окна с вкладками на которое можно перетаскивать ярлыки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=135951#p135951</link>
			<description><![CDATA[<p>По идее, в AutoHotkey не должно быть проблем с перетаскиванием в окно (см. GuiDropFiles), вкладками (см. Tab, Tab2, Tab3) и упорядочением по сетке, в виде таблицы и т. д. (см. ListView).</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Thu, 05 Sep 2019 13:29:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=135951#p135951</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Создание окна с вкладками на которое можно перетаскивать ярлыки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=135944#p135944</link>
			<description><![CDATA[<p>Доброго дня, специалисты по AHK.<br />Помогите, разобраться с проблемой создания интерфейса.</p><p>Есть вот такой скрипт на autoit, который создает окно с вкладками, на которые можно кидать ярлыки (для быстрого вызова).<br />Вызов по этим ярлыкам - двойной щелчок.<br />Запоминание расположения ярлыков - идет в ini.</p><p>Но с этим скриптом проблема - там все ярлыки формируются в столбец.<br />А мне нужно чтобы они формировались по сетке.<br />Как это сделать в autoit я не знаю.</p><p>Подскажите - как будет выглядеть аналогичное окно в AHK, где ярлыки формировались бы по сетке ?</p><div class="codebox"><pre><code>

#include &lt;GUIConstants.au3&gt;
#include &lt;GUIListView.au3&gt;
#include &lt;GUIImageList.au3&gt;
#include &lt;WinAPIShellEx.au3&gt;
#include &lt;WinAPISysWin.au3&gt;
#include &lt;GUIConstantsEx.au3&gt;
#include &lt;TabConstants.au3&gt;
#include &lt;ListViewConstants.au3&gt;

Local $tab, $iCombo, $msg, $Gui

Global Const $INI_FILE = StringLeft(@ScriptName, StringInStr(@ScriptName, &quot;.&quot;) - 1) &amp; &quot;.ini&quot;
GUICreate(&quot;Пример&quot;, 400, 600, -1, -1, -1, $WS_EX_ACCEPTFILES)
GUICtrlCreateLabel(&quot;Drag &amp;&amp; Drop / Двойной ЛКМ &gt; Запустить / ПКМ &gt; Удалить&quot;, 0, 0, 400, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetState(-1, $GUI_DISABLE)


GUISetBkColor(0xB4E1D3)
GUISetFont(9, 300)
$tab = GUICtrlCreateTab(10, 22, 380, 570)


GUICtrlCreateTabItem(&quot;Путь&quot;)
GUICtrlSetImage(-1, &quot;shell32.dll&quot;, -222, 0) ; иконка вкладки

Global $g_idLV = GUICtrlCreateListView(&quot;Файл&quot;, 10, 40, 360, 550, BitOR($LVS_DEFAULT, $LVS_NOSORTHEADER), $WS_EX_CLIENTEDGE)
_GUICtrlListView_SetExtendedListViewStyle($g_idLV, BitOR($LVS_EX_DOUBLEBUFFER, $LVS_EX_INFOTIP, $LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))
_GUICtrlListView_SetColumnWidth($g_idLV, 0, $LVSCW_AUTOSIZE_USEHEADER)
Global $g_hImages = _GUIImageList_Create()
_GUICtrlListView_SetImageList($g_idLV, $g_hImages, 1)
_LoadFiles1()

GUIRegisterMsg($WM_DROPFILES, &quot;WM_DROPFILES&quot;)
GUIRegisterMsg($WM_NOTIFY, &quot;WM_NOTIFY&quot;)
GUISetState()


GUICtrlCreateTabItem(&quot;Выбор стиля&quot;)
GUICtrlSetImage(-1, &quot;shell32.dll&quot;, -222, 0) ; иконка вкладки


Global $g_idLV = GUICtrlCreateListView(&quot;Файл&quot;, 10, 40, 360, 550, BitOR($LVS_DEFAULT, $LVS_NOSORTHEADER), $WS_EX_CLIENTEDGE)
_GUICtrlListView_SetExtendedListViewStyle($g_idLV, BitOR($LVS_EX_DOUBLEBUFFER, $LVS_EX_INFOTIP, $LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))
_GUICtrlListView_SetColumnWidth($g_idLV, 0, $LVSCW_AUTOSIZE_USEHEADER)
Global $g_hImages = _GUIImageList_Create()
_GUICtrlListView_SetImageList($g_idLV, $g_hImages, 1)
_LoadFiles2()

GUIRegisterMsg($WM_DROPFILES, &quot;WM_DROPFILES&quot;)
GUIRegisterMsg($WM_NOTIFY, &quot;WM_NOTIFY&quot;)
GUISetState()

GUICtrlCreateTabItem(&quot;?&quot;)
GUICtrlSetImage(-1, &quot;shell32.dll&quot;, -222, 0) ; иконка вкладки


Global $g_idLV = GUICtrlCreateListView(&quot;Файл&quot;, 10, 40, 360, 550, BitOR($LVS_DEFAULT, $LVS_NOSORTHEADER), $WS_EX_CLIENTEDGE)
_GUICtrlListView_SetExtendedListViewStyle($g_idLV, BitOR($LVS_EX_DOUBLEBUFFER, $LVS_EX_INFOTIP, $LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))
_GUICtrlListView_SetColumnWidth($g_idLV, 0, $LVSCW_AUTOSIZE_USEHEADER)
Global $g_hImages = _GUIImageList_Create()
_GUICtrlListView_SetImageList($g_idLV, $g_hImages, 1)
_LoadFiles3()

GUIRegisterMsg($WM_DROPFILES, &quot;WM_DROPFILES&quot;)
GUIRegisterMsg($WM_NOTIFY, &quot;WM_NOTIFY&quot;)
GUISetState()

GUICtrlCreateTabItem(&quot;&quot;) ; определяет конец вкладок
GUISetState()


Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Func WM_DROPFILES($hWnd, $iMsg, $wParam, $lParam)
    Local $aFiles = _WinAPI_DragQueryFileEx($wParam)
    If Not @error Then
        For $i = 1 To $aFiles[0]
            _AddFile($aFiles[$i])
        Next
        _WinAPI_DragFinish($wParam)
    EndIf
EndFunc   ;==&gt;WM_DROPFILES

Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $tInfo, $iIndex

    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, &quot;hWndFrom&quot;))
    $iIDFrom = DllStructGetData($tNMHDR, &quot;IDFrom&quot;)
    $iCode = DllStructGetData($tNMHDR, &quot;Code&quot;)
    Switch $iIDFrom
        Case $g_idLV
            Switch $iCode
                Case $NM_DBLCLK
                    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
                    $iIndex = DllStructGetData($tInfo, &quot;Index&quot;)
                    If $iIndex &lt;&gt; -1 Then ShellExecute(_GUICtrlListView_GetItemText($hWndFrom, $iIndex))
                Case $NM_RCLICK
                    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
                    $iIndex = DllStructGetData($tInfo, &quot;Index&quot;)
                    If $iIndex &lt;&gt; -1 Then _GUICtrlListView_DeleteItem($hWndFrom, $iIndex)
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==&gt;WM_NOTIFY

Func _AddFile($sFile)
    Local $hIcon = _WinAPI_ShellExtractAssociatedIcon($sFile, 1)
    _GUICtrlListView_AddItem($g_idLV, $sFile, _GUIImageList_ReplaceIcon($g_hImages, -1, $hIcon))
    _WinAPI_DestroyIcon($hIcon)
EndFunc   ;==&gt;_AddFile

Func _LoadFiles1()
    Local $iCount = Int(IniRead($INI_FILE, &quot;Files&quot;, &quot;Count&quot;, &quot;0&quot;))
    For $i = 0 To $iCount - 1
        _AddFile(IniRead($INI_FILE, &quot;Files&quot;, $i, &quot;&quot;))
    Next
    OnAutoItExitRegister(&quot;_SaveFiles1&quot;)
 EndFunc   ;==&gt;_LoadFiles

 Func _LoadFiles2()
    Local $iCount = Int(IniRead($INI_FILE, &quot;Files&quot;, &quot;Count&quot;, &quot;0&quot;))
    For $i = 0 To $iCount - 1
        _AddFile(IniRead($INI_FILE, &quot;Files&quot;, $i, &quot;&quot;))
    Next
    OnAutoItExitRegister(&quot;_SaveFiles2&quot;)
 EndFunc   ;==&gt;_LoadFiles

 Func _LoadFiles3()
    Local $iCount = Int(IniRead($INI_FILE, &quot;Files&quot;, &quot;Count&quot;, &quot;0&quot;))
    For $i = 0 To $iCount - 1
        _AddFile(IniRead($INI_FILE, &quot;Files&quot;, $i, &quot;&quot;))
    Next
    OnAutoItExitRegister(&quot;_SaveFiles3&quot;)
 EndFunc   ;==&gt;_LoadFiles


Func _SaveFiles1()
    Local $iCount = _GUICtrlListView_GetItemCount($g_idLV)
    IniWrite($INI_FILE, &quot;Files&quot;, &quot;Count&quot;, $iCount)
    For $i = 0 To $iCount - 1
        IniWrite($INI_FILE, &quot;Files&quot;, $i, _GUICtrlListView_GetItemText($g_idLV, $i))
    Next
 EndFunc   ;==&gt;_SaveFiles

 Func _SaveFiles2()
    Local $iCount = _GUICtrlListView_GetItemCount($g_idLV)
    IniWrite($INI_FILE, &quot;Files&quot;, &quot;Count&quot;, $iCount)
    For $i = 0 To $iCount - 1
        IniWrite($INI_FILE, &quot;Files&quot;, $i, _GUICtrlListView_GetItemText($g_idLV, $i))
    Next
 EndFunc   ;==&gt;_SaveFiles

 Func _SaveFiles3()
    Local $iCount = _GUICtrlListView_GetItemCount($g_idLV)
    IniWrite($INI_FILE, &quot;Files&quot;, &quot;Count&quot;, $iCount)
    For $i = 0 To $iCount - 1
        IniWrite($INI_FILE, &quot;Files&quot;, $i, _GUICtrlListView_GetItemText($g_idLV, $i))
    Next
 EndFunc   ;==&gt;_SaveFiles

 While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            ExitLoop
        Case $tab
            ; отображает кликнутую вкладку
            WinSetTitle($Gui, &quot;&quot;, &quot;Вкладки (Tab) в GUI, текущая &quot; &amp; GUICtrlRead($tab))
        Case $iCombo
            GUICtrlSetStyle(-1, $LVS_ICON)
    EndSwitch
 WEnd

</code></pre></div><p>Прикрепляю файл с autoit-скриптом.</p>]]></description>
			<author><![CDATA[null@example.com (димитрий2)]]></author>
			<pubDate>Thu, 05 Sep 2019 05:21:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=135944#p135944</guid>
		</item>
	</channel>
</rss>
