Что нового

RadioBox с наложением на изображение без обрезки

  • Автор темы GenoTIP
  • Дата начала
G

GenoTIP

Гость
Помогите наложить radiobox на картинку так, чтобы он появлялся на картинки, а не только когда на него наводишь (желательно, чтобы фон самого RB использовал картинку что под RB, то есть в результате получить хотелось бы картинку, а на ней точка и текст)
+ вопрос оп поводу RB, если я динамично вывожу RB в гуи, как определить id того RB, что выбран для дальнейших действий. спасибо
Код:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
Opt("GUICoordMode",1)
$exit_lastline = 0
$line_count = 0
Dim $art_arr[1] = ['Массив артов']
$file = FileOpen("man.html", 0)

While $exit_lastline <> 1
    $line = FileReadLine($file)
	If @error = -1 Then $exit_lastline = 1
	$line_count += 1
	$art_find = StringRegExp($line,"Арт: (\d+)",3)
	if @error = 0 Then _ArrayAdd($art_arr,$art_find[0])
WEnd
$U_artcout = UBound($art_arr)-1
;~ _ArrayDisplay($art_arr)
FileClose($file)
#Region ### START Koda GUI section ### Form=c:\my documents\allscripts\textil_admin\form.kxf
$Form1_1 = GUICreate("Админка для textil.tom.ru", 468, 321, -1, -1)

$Combo1 = GUICtrlCreateCombo("Combo1", 8, 8, 201, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
$isint_count = 1
$iLine = 1
$save_column = -1

For $iColumn = 1 To $U_artcout
	$save_column +=1
	GUICtrlCreateRadio($art_arr[$iColumn], 52*$save_column, 52*$iLine, 48,10)
	$Pic1 = GUICtrlCreatePic(@ScriptDir & "\start.gif",52*$save_column, 52*$iLine, 48, 48)
	If IsInt($iColumn / 9) Then
		$save_column = -1
		$iLine += 1
	EndIf

Next
$Button1 = GUICtrlCreateButton("Редактировать", 216, 8, 83, 23)
$Button2 = GUICtrlCreateButton("Удалить", 304, 8, 59, 23)
$Button3 = GUICtrlCreateButton("Добавить", 401, 8, 59, 23)
$Button4 = GUICtrlCreateButton("Назад", 329, 288, 59, 23)
$Button5 = GUICtrlCreateButton("Вперёд", 401, 288, 59, 23)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd


man.txt переименуйте в html
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
А у вас этот скрипт работает? У меня даже окна нету.
 
Автор
G

GenoTIP

Гость
работает, в папку со скриптом нужно положить картинку и man.html (переименовать из txt), форум просто не позволяет html файлы загружать
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Код:
...
For $iColumn = 1 To $U_artcout
    $save_column +=1
    
    $Pic1 = GUICtrlCreatePic(@ScriptDir & "\start.gif",52*$save_column, 52*$iLine, 48, 48)
	GUICtrlSetState($Pic1, $GUI_DISABLE)
	GUICtrlCreateRadio($art_arr[$iColumn], 52*$save_column, 52*$iLine, 48,10)
    If IsInt($iColumn / 9) Then
        $save_column = -1
        $iLine += 1
    EndIf

Next
...
 
Автор
G

GenoTIP

Гость
я так понял ты просто сверху сделал картинку, а не RB, можно как-то фон у RB поменять на часть картинки, которую он занимает, т.к. RB обрезает половину картинки, и если его поставить больше, может закрыть её полностью
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Вот так можно сделать:

Код:
...
For $iColumn = 1 To $U_artcout
    $save_column +=1
   
	GUICtrlCreateRadio($art_arr[$iColumn], 52*$save_column, 52*$iLine, 48,10)
	GUICtrlSetBkColor(-1, 0x00AA00)
	
    $Pic1 = GUICtrlCreatePic("start.gif",52*$save_column, 52*$iLine, 48, 48, BitOr($GUI_SS_DEFAULT_PIC, $WS_CLIPSIBLINGS))
	
    If IsInt($iColumn / 9) Then
        $save_column = -1
        $iLine += 1
    EndIf
Next
...
 
Автор
G

GenoTIP

Гость
а если там не монотонная картинка?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
GenoTIP [?]
а если там не монотонная картинка?
Значит как то так:

Код:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>

FileChangeDir(@ScriptDir)

Opt("GUICoordMode", 1)
$exit_lastline = 0
$line_count = 0
Dim $art_arr[1] = ['Массив артов']
$file = FileOpen("man.html", 0)

While $exit_lastline <> 1
	$line = FileReadLine($file)
	If @error = -1 Then $exit_lastline = 1
	$line_count += 1
	$art_find = StringRegExp($line, "Арт: (\d+)", 3)
	If @error = 0 Then _ArrayAdd($art_arr, $art_find[0])
WEnd

$U_artcout = UBound($art_arr) - 1
;~ _ArrayDisplay($art_arr)
FileClose($file)

#Region ### START Koda GUI section ### Form=c:\my documents\allscripts\textil_admin\form.kxf
$Form1_1 = GUICreate("Админка для textil.tom.ru", 468, 321, -1, -1)

$Combo1 = GUICtrlCreateCombo("Combo1", 8, 8, 201, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
$isint_count = 1
$iLine = 1
$save_column = -1

Dim $aRadio[$U_artcout+1]

For $iColumn = 1 To $U_artcout
	$save_column += 1
	
	$Pic1 = GUICtrlCreatePic("start.gif", 52 * $save_column, 52 * $iLine, 48, 48)
	GUICtrlSetState(-1, 128)
	$aRadio[$iColumn] = _GUICtrlCreateRadio($art_arr[$iColumn], 52 * $save_column, 52 * $iLine, 48, 12, $GUI_BKCOLOR_TRANSPARENT)
	
	If IsInt($iColumn / 9) Then
		$save_column = -1
		$iLine += 1
	EndIf
Next

$Button1 = GUICtrlCreateButton("Редактировать", 216, 8, 83, 23)
$Button2 = GUICtrlCreateButton("Удалить", 304, 8, 59, 23)
$Button3 = GUICtrlCreateButton("Добавить", 401, 8, 59, 23)
$Button4 = GUICtrlCreateButton("Назад", 329, 288, 59, 23)
$Button5 = GUICtrlCreateButton("Вперёд", 401, 288, 59, 23)

GUISetState(@SW_SHOW)

#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
	
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
		Case $aRadio[1] To $aRadio[$U_artcout]
			For $i = 1 To $U_artcout
				If $nMsg = $aRadio[$i] Then
					ControlClick($Form1_1, '', $nMsg-1)
					ExitLoop
				EndIf
			Next
    EndSwitch
WEnd

Func _GUICtrlCreateRadio($sText, $iLeft, $iTop, $iLength, $iHeight, $sBackColor = "", $sTextColor = "")
	Local $aRadioID[2]
	
	$aRadioID[0] = GUICtrlCreateRadio("", $iLeft, $iTop, 12, 12)
	$aRadioID[1] = GUICtrlCreateLabel($sText, $iLeft + 15, $iTop, $iLength - 15, $iHeight)
	
	If $sTextColor <> "" And $aRadioID[1] Then
		GUICtrlSetColor($aRadioID[1], $sTextColor)
	EndIf
	
	If $sBackColor <> "" And $aRadioID[1] Then
		GUICtrlSetBkColor($aRadioID[1], $sBackColor)
	EndIf
	
	Return $aRadioID[1]
EndFunc
 
Верх