Что нового

Отображение на форме кнопки в виде гиперссылки

blacksergo

Новичок
Сообщения
20
Репутация
1
Подскажите, как на форме отобразить кнопку в виде гиперссылки, с оставлением всех функций кнопки, т.е. нажал, выполнилось нужное в программе действие.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Код:
Func _GUICtrlCreateHyperlink($sText, $iLeft, $iTop, $iWidth = -1, $iHeight = -1, $iColor = 0x0000FF, $sToolTip = '', $iStyle = -1, $iExStyle = -1)

	Local $ID = GUICtrlCreateLabel($sText, $iLeft, $iTop, $iWidth, $iHeight, $iStyle, $iExStyle)

	If $ID Then
		GUICtrlSetFont($ID, -1, -1, 4)
		GUICtrlSetColor($ID, $iColor)
		GUICtrlSetCursor($ID, 0)
		GUICtrlSetTip($ID, $sToolTip)
	EndIf
	Return $ID
EndFunc   ;==>_GUICtrlCreateHyperlink
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Кстати, я обычно использую некий обработчик для таких ссылок...

* Открытие ссылки/функций (см. далее) срабатывает только после отпускания ссылки, и только над элементом этой ссылки.
* Изменение цвета посещённой ссылки.
* При перетаскиваний ссылки иконка курсора меняется на запретный знак (индикация о невозможности перетащить ссылку).
* Можно указать не только открытие ссылки, но и выполнение произвольной функций.

Код:
#include <GUIConstantsEx.au3>

$hGUI = GUICreate("_GUICtrlHyperlink_Handler", 300, 200)

$nAutoIt_Hyperlink = _GUICtrlHyperlink_Create("Русское сообщество AutoIt", 80, 80, 140, 15, 0x0000FF, 'Посетить www.autoit-script.ru')
$nCreatoRLab_Hyperlink = _GUICtrlHyperlink_Create("Лаборатория CreatoR'а", 90, 110, 120, 15, 0x0000FF, 'Отобразить информацию о веб-сайте...')

GUISetState(@SW_SHOW, $hGUI)

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		Case $nAutoIt_Hyperlink
			_GUICtrlHyperlink_Handler($hGUI, $nAutoIt_Hyperlink, "http://autoit-script.ru", -1, 0x551A8B)
		Case $nCreatoRLab_Hyperlink
			_GUICtrlHyperlink_Handler($hGUI, $nCreatoRLab_Hyperlink, '_CreatoRLab_ShowInfo("' & $nCreatoRLab_Hyperlink & '")', 1, 0x551A8B)
	EndSwitch
WEnd

Func _CreatoRLab_ShowInfo($nCtrlID)
	MsgBox(64, 'Info', 'Hyperlink Clicked:' & @CRLF & GUICtrlRead($nCtrlID), 0, $hGUI)
EndFunc

Func _GUICtrlHyperlink_Create($sText, $iLeft, $iTop, $iWidth = -1, $iHeight = -1, $iColor = 0x0000FF, $sToolTip = '', $iStyle = -1, $iExStyle = -1)
	Local $ID = GUICtrlCreateLabel($sText, $iLeft, $iTop, $iWidth, $iHeight, $iStyle, $iExStyle)
	
	If $ID Then
		GUICtrlSetFont($ID, -1, -1, 4)
		GUICtrlSetColor($ID, $iColor)
		GUICtrlSetCursor($ID, 0)
		GUICtrlSetTip($ID, $sToolTip)
	EndIf
	
	Return $ID
EndFunc

Func _GUICtrlHyperlink_Handler($hWnd, $iCtrlID, $sActionURL, $iAction = -1, $iVisitedColor = 0x551A8B)
	Local $aCurInfo = GUIGetCursorInfo($hWnd)
	If Not IsArray($aCurInfo) Then Return 0
	
	While IsArray($aCurInfo) And $aCurInfo[2] = 1
		$aCurInfo = GUIGetCursorInfo($hWnd)
		
		If $aCurInfo[4] <> $iCtrlID Then
			GUISetCursor(7, 1, $hWnd)
		Else
			GUISetCursor(2, 0, $hWnd)
		EndIf
		
		Sleep(10)
	WEnd
	
	GUISetCursor(2, 0, $hWnd)
	
	If IsArray($aCurInfo) And $aCurInfo[4] = $iCtrlID Then
		If $iAction = 1 Then
			Execute($sActionURL)
		Else
			ShellExecute($sActionURL)
		EndIf
		
		If @error = 0 And $iVisitedColor Then
			GUICtrlSetColor($iCtrlID, $iVisitedColor)
		EndIf
	EndIf
EndFunc
 

forfrends

Новичок
Сообщения
176
Репутация
3
Скажите, что это за команда и почему мой Autoit на нее никак не реагирует?
у меня версия v3.2.12.1
Код:
_GUICtrlCreateHyperlink
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
forfrends [?]
что это за команда и почему мой Autoit на нее никак не реагирует?
Это пользовательская функция, см. выше в примере после «Func».
 
Верх