Показать полную графическую версию : [решено] Как задать фоновый цвет в GUICtrlCreateCheckbox
Centrinar
18-05-2010, 00:58
GUICtrlCreateLabel("вавава", 5,135, 310, 30, $SS_CENTER)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Это для GUICtrlCreateLabel а как повторить для GUICtrlCreateCheckbox
madmasles
18-05-2010, 01:24
Centrinar,
Так Checkbox и так вроде без подложки. Можно еще фокус другому элементу передать.
#include (http://www.autoitscript.com/autoit3/docs/keywords.htm##include) <GUIConstantsEx.au3>
#include (http://www.autoitscript.com/autoit3/docs/keywords.htm##include) <StaticConstants.au3>
#include (http://www.autoitscript.com/autoit3/docs/keywords.htm##include) <WindowsConstants.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate (http://www.autoitscript.com/autoit3/docs/functions/GUICreate.htm)("Form1", 429, 218, -1, -1)
GUISetBkColor (http://www.autoitscript.com/autoit3/docs/functions/GUISetBkColor.htm)(0xFFFFCC)
$Label1 = GUICtrlCreateLabel (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlCreateLabel.htm)("Label1", 24, 5, 36, 18)
GUICtrlSetBkColor (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlSetBkColor.htm)(-1, $GUI_BKCOLOR_TRANSPARENT)
$Checkbox1 = GUICtrlCreateCheckbox (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlCreateCheckbox.htm)("Checkbox1", 16, 32, 89, 33)
$Checkbox2 = GUICtrlCreateCheckbox (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlCreateCheckbox.htm)("Checkbox2", 16, 62, 89, 33)
$Button1 = GUICtrlCreateButton (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlCreateButton.htm)("Button1", 176, 24, 153, 65)
GUICtrlSetState (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlSetState.htm)(-1, $GUI_FOCUS)
GUISetState (http://www.autoitscript.com/autoit3/docs/functions/GUISetState.htm)(@SW_SHOW (http://www.autoitscript.com/autoit3/docs/macros.htm#@sw_show))
#endregion ### END Koda GUI section ###
While (http://www.autoitscript.com/autoit3/docs/keywords.htm#While) 1
$nMsg = GUIGetMsg (http://www.autoitscript.com/autoit3/docs/functions/GUIGetMsg.htm)()
Switch (http://www.autoitscript.com/autoit3/docs/keywords.htm#Switch) $nMsg
Case (http://www.autoitscript.com/autoit3/docs/keywords.htm#Case) $GUI_EVENT_CLOSE
Exit (http://www.autoitscript.com/autoit3/docs/keywords.htm#Exit)
EndSwitch (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndSwitch)
WEnd (http://www.autoitscript.com/autoit3/docs/keywords.htm#WEnd)
Centrinar
18-05-2010, 12:15
Я ставлю картинку GUICtrlCreatePic("111.jpg", 0, 0, 333, 333) и у чекбоксов появляеться подложка, как убрать?
Func _GUICtrlCreateCheckbox($sText, $iLeft, $iTop, $iWidth, $iHeight, $iStyle = -1, $iExStyle = -1)
Local $ID = GUICtrlCreateCheckbox($sText, $iLeft, $iTop + Round(($iHeight - 13) / 2), 13, 13, $iStyle, $iExStyle)
If $ID = 0 Then
Return 0
EndIf
GUICtrlCreateLabel($sText, $iLeft + 16, $iTop + Round(($iHeight - 13) / 2) - 0, $iWidth - 16, 14)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Return $ID
EndFunc ;==>_GUICtrlCreateCheckbox
Centrinar
18-05-2010, 21:29
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
GUICreate("Добавление", 320, 450)
GUICtrlCreatePic(@ScriptDir & "\111.jpg", 0, 0, 320, 450, $WS_CLIPSIBLINGS)
GUICtrlCreateLabel("1. Укажите возраст", 5,5 , 310, 15, $SS_CENTER)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
$Edit1 = GUICtrlCreateCheckbox("18-30", 10, 165, 90, 15)
$Edit2 = GUICtrlCreateCheckbox("30-50", 10, 185, 90, 15)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Можно на примере?
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
GUICreate("Добавление", 320, 450)
GUICtrlCreatePic(@ScriptDir & "\111.jpg", 0, 0, 320, 450, $WS_CLIPSIBLINGS)
GUICtrlCreateLabel("1. Укажите возраст", 5, 5, 310, 15, $SS_CENTER)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
$Edit1 = _GUICtrlCreateCheckbox("18-30", 10, 165, 90, 15)
$Edit2 = _GUICtrlCreateCheckbox("30-50", 10, 185, 90, 15)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _GUICtrlCreateCheckbox($sText, $iLeft, $iTop, $iWidth, $iHeight, $iStyle = -1, $iExStyle = -1)
Local $ID = GUICtrlCreateCheckbox($sText, $iLeft, $iTop + Round(($iHeight - 13) / 2), 13, 13, $iStyle, $iExStyle)
If $ID = 0 Then
Return 0
EndIf
GUICtrlCreateLabel($sText, $iLeft + 16, $iTop + Round(($iHeight - 13) / 2) - 0, $iWidth - 16, 14)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Return $ID
EndFunc ;==>_GUICtrlCreateCheckbox
Это для GUICtrlCreateLabel а как повторить для GUICtrlCreateCheckbox
Так Checkbox и так вроде без подложки. Можно еще фокус другому элементу передать.
:blink:
А может имеется ввиду сам белый фон в квадратике?
Имхо, тут 2 варианта:
1. Вроде на WinAPI как то можно это изменить, но точно не уверен
2. Создать самому:
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
Opt("GUIOnEventMode", 1)
Global $chbutt1_state=0
$win=GUICreate("MyCheckBOX")
GUISetOnEvent($GUI_EVENT_CLOSE, "Close")
GUISetBkColor(0xFFFFCC)
$chbutt1=GUICtrlCreateIcon("chbox0.ico", -1, 30, 30, 16, 16)
GUICtrlSetOnEvent(-1, "ch_chbox")
GUICtrlCreateLabel("Графический чекбокс", 52, 30)
GUISetState()
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
Func Close()
Exit
EndFunc
Func ch_chbox()
If $chbutt1_state=0 Then
GUICtrlSetImage($chbutt1, "chbox1.ico")
$chbutt1_state=1
Else
GUICtrlSetImage($chbutt1, "chbox0.ico")
$chbutt1_state=0
EndIf
EndFunc
Есе-сно, что вместо GUICtrlGetState нужно проверять значение глобальной переменной
ЗЫ: на всяк случай прикреплю иконки с прозрачностью...
#requireadmin
#Include <GuiComboBox.au3>
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <StaticConstants.au3>
Opt( 'TrayIconDebug', 1 )
#Region - Постоянные переменные
Const $Titel_os = 'Автоматическая установка приложений v1.21'
Const $Font = 'Times New Roman'
Global $Winrar
Global $sText, $iLeft, $iTop, $iWidth, $iHeight, $iStyle, $iExStyle
#EndRegion
_GUI ()
Local $msg, $Focus
$Parent = GUICreate ( $Titel_os, 500, 470 )
GUICtrlCreatePic(@ScriptDir & "\fon2.jpg", 0, 0, 500, 470, $WS_CLIPSIBLINGS)
GUISetFont ( 10, 1000, 0, $Font )
;GUICtrlCreatePic ( 'fon.jpg', -1, -1, 594, 525 )
$LABLE_1 = GUICtrlCreateLabel ( 'Архиваторы:', 20, 20 )
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
$Winrar = _Winrar ( 'WinRaR', 20, 50, 80, -1, -1 )
$BUTTON_1 = GUICtrlCreateButton ( 'Установить', 360, 420, 100, -1 )
GUISetState ( @SW_SHOW )
While 1
$msg = GUIGetMsg ()
Switch $msg
Case -3
Exit
case $BUTTON_1
_Winrar ($sText, $iLeft, $iTop, $iWidth, $iHeight, $iStyle = -1, $iExStyle = -1)
EndSwitch
WEnd
EndFunc
Func _Winrar ($sText, $iLeft, $iTop, $iWidth, $iHeight, $iStyle = -1, $iExStyle = -1)
$1 = BitAND ( GUICtrlRead ( $Winrar ), $Gui_Checked )
Local $ID = GUICtrlCreateCheckbox($sText, $iLeft, $iTop + Round(($iHeight - 13) / 2), 13, 13, $iStyle, $iExStyle)
If $ID = 0 Then
Return 0
EndIf
GUICtrlCreateLabel($sText, $iLeft + 16, $iTop + Round(($iHeight - 13) / 2) - 0, $iWidth - 16, 14)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Return $ID
If $1 = 1 Then
MsgBox ( 64, '', 'asd' )
RunWait ( @ScriptDir & '\' & "Arhiv\WRAR350RU.exe /s")
GUICtrlSetState ( $Winrar, $GUI_UNCHECKED )
GUICtrlCreateLabel ( 'OK', 180, 54, -1, -1 )
GUICtrlSetColor ( -1 , 0x33CC33 )
ElseIf $1 = 0 Then
Return 0
EndIf
EndFunc
Фон создается как надо, но при этом программа не устанавливается, может подскажете что я делаю не так?
Фон создается как надо, но при этом программа не устанавливается, может подскажете что я делаю не так? »
Это, из твоего скрипта:
$1 = BitAND ( GUICtrlRead ( $Winrar ), $Gui_Checked )
If $1 = 1 Then
MsgBox ( 64, '', 'asd' )
RunWait ( @ScriptDir & '\' & "Arhiv\WRAR350RU.exe /s")
GUICtrlSetState ( $Winrar, $GUI_UNCHECKED )
GUICtrlCreateLabel ( 'OK', 180, 54, -1, -1 )
GUICtrlSetColor ( -1 , 0x33CC33 )
EndIf
нужно ставить в обработку:
case $BUTTON_1
сдесь...
Вот для нагладности только (ибо многое придется перепроверять и уточнять в скрипте), как можно:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $iTopForCheckbox=10
Global $aTitleNameID[5][3]
;$aTitleNameID[0][0]=содержит текст-название программы
;$aTitleNameID[0][1]=содержит название программы
;$aTitleNameID[0][2]=будет содержать Id созданного чекбокса для этой программы
;и т.д. от 0 до 4 для других программ
$aTitleNameID[0][0]="прога 1"
$aTitleNameID[0][1]="notepad.exe параметр.txt"
$aTitleNameID[1][0]="прога 2"
$aTitleNameID[1][1]="cmd.exe"
$aTitleNameID[2][0]="прога 3"
$aTitleNameID[2][1]="notepad.exe"
$aTitleNameID[3][0]="прога 4"
$aTitleNameID[3][1]="notepad.exe"
$aTitleNameID[4][0]="прога 5"
$aTitleNameID[4][1]="notepad.exe"
GUICreate("Установка программ", 320, 450)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlCreatePic(@ScriptDir & "\fon2.jpg", 0, 0, 500, 470, $WS_CLIPSIBLINGS)
For $i=0 to UBound ($aTitleNameID)-1
$aTitleNameID[$i][2] = _GUICtrlCreateCheckbox($aTitleNameID[$i][0], 10, $iTopForCheckbox, 90, 15)
$iTopForCheckbox+=25
Next
$BUTTON_1 = GUICtrlCreateButton ( 'Установить', 210, 420, 100, -1 )
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
case $BUTTON_1
$iTopForCheckbox=10
for $i=0 to UBound($aTitleNameID)-1
if BitAND ( GUICtrlRead ($aTitleNameID[$i][2]), $Gui_Checked ) then
RunWait($aTitleNameID[$i][1])
GUICtrlSetState ( $aTitleNameID[$i][2], $GUI_UNCHECKED )
GUICtrlCreateLabel ( 'OK', 10+90, $iTopForCheckbox)
GUICtrlSetColor ( -1 , 0x33CC33 )
$iTopForCheckbox+=25
else
$iTopForCheckbox+=25
endif
next
exit
EndSwitch
WEnd
Func _GUICtrlCreateCheckbox($sText, $iLeft, $iTop, $iWidth, $iHeight, $iStyle = -1, $iExStyle = -1)
Local $ID = GUICtrlCreateCheckbox($sText, $iLeft, $iTop + Round(($iHeight - 13) / 2), 13, 13, $iStyle, $iExStyle)
If $ID = 0 Then
Return 0
EndIf
GUICtrlCreateLabel($sText, $iLeft + 16, $iTop + Round(($iHeight - 13) / 2) - 0, $iWidth - 16, 14)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Return $ID
EndFunc ;==>_GUICtrlCreateCheckbox
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.