1 (изменено: Странникх, 2014-05-20 02:47:33)

Тема: AHK: Размер CheckBox

Gui, -Caption +AlwaysOnTop +E0x08000000 +Lastfound
Gui, Margin, 0, 0
Gui, Add, Picture, x0 y0 w588 h266, C:\Pic.jpg
Gui, Add, CheckBox, x42 y80 w13 h13 vGroupControl gGroupControl
Gui, Show, x21 y49 h266 w588, GUI Windows
Return

GroupControl:
GuiControlGet, Opt1, , GroupControl
if(Opt1 = 0) {
MsgBox, ВЫКЛ
Return
}

if(Opt1 = 1) { 
MsgBox, ВКЛ
Return
}

Как можно задать размер чек бокса больше чем 13х13 ? Я имею в виду квадратик, в котором галочка ставится, а не дополнительное место под текст для пояснения чек бокса.

2

Re: AHK: Размер CheckBox

Впрямую, наверно, никак. В качестве обходного пути можно попробовать стиль BS_PUSHLIKE (0x1000). Галочку можно имитировать буквой V. Но текст возле бокса уже придётся задавать отдельно, как контрол Text.


Gui, -Caption +AlwaysOnTop +E0x08000000 +Lastfound
Gui, Margin, 0, 0
Gui, Add, Picture, x0 y0 w588 h266, C:\Pic.jpg
Gui, Add, CheckBox, +0x1000 x42 y80 w30 h30 vGroupControl gGroupControl
Gui, Add, Text, x+4 yp+8, Hello, world!
Gui, Show, x21 y49 h266 w588, GUI Windows
Return

GroupControl:
GuiControlGet, Opt1, , GroupControl
if(Opt1 = 0) {
GuiControl,, GroupControl
MsgBox, ВЫКЛ
Return
}

if(Opt1 = 1) { 
GuiControl,, GroupControl, V
MsgBox, ВКЛ
Return
}

3

Re: AHK: Размер CheckBox


Gui, Font, s20
Gui, Add, Picture, +0x1000 Icon51 gGroupControl w50 h-1 Border vCheck1, Shell32.dll  
Gui, Add, Text, x+0 hp +0x201 gGroupControl, % "  CheckBox  "
Gui, Show
Return

GroupControl:
    GuiControl, Focus, Check1
    GuiControl, , Check1, % ((Opt1 := !Opt1) ? "*Icon145" : "*Icon51") " Shell32.dll" 
    if !Opt1 
        MsgBox, ВЫКЛ  
    else
        MsgBox, ВКЛ 
    Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4

Re: AHK: Размер CheckBox

Не знаю надо ли это ТС, но на основе одной переменной нетрудно объединить самодельные чекбоксы в радио группу:


GroupCount := 12 
IsCheck := 5
Gui, -DPIScale
Gui, Font, s16
Loop % GroupCount
{
    Gui, Add, Picture, xm w32 h-1 +0x1000 Icon51 gGroup Border vCheck%A_Index%, Shell32.dll  
    Gui, Add, Text, x+0 hp +0x201 gGroup vText%A_Index%, % "  CheckBox " A_Index 
}
GuiControl, , Check%IsCheck%, *Icon145 Shell32.dll 
Gui, Show
Return

Group: 
    GuiControl, , Check%IsCheck%, *Icon51 Shell32.dll
    IsCheck := RegExReplace(A_GuiControl, "S).*?(\d+)$", "$1")
    GuiControl, , Check%IsCheck%, *Icon145 Shell32.dll   
    GuiControl, Focus, Check%IsCheck%
    Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5

Re: AHK: Размер CheckBox

Думаю, ты путаешь CheckBox с Radio-button.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Размер CheckBox

Ты про выражение:

объединить в радио группу

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7 (изменено: Странникх, 2014-05-20 20:05:56)

Re: AHK: Размер CheckBox

Спасибо за ответы.
Как сортируются эти иконки в Shell32.dll ? Хочу красный крестик поставить вместо галочки, но получаю лишь ID иконки, которое не подходит.
До радио групп дело пока не дошло, возможно позже когда понадобится.

8

Re: AHK: Размер CheckBox

serzh82saratov пишет:

Ты про выражение:

объединить в радио группу

Да, чекбоксы обычно используются независимо друг от друга.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9 (изменено: serzh82saratov, 2014-05-21 15:13:03)

Re: AHK: Размер CheckBox

Как сортируются эти иконки в Shell32.dll ? Хочу красный крестик поставить вместо галочки, но получаю лишь ID иконки, которое не подходит.

У меня есть такой код, для просмотра иконок:

+ открыть спойлер

#SingleInstance Force
#NoEnv
ListLines Off
SetBatchLines -1
Menu, Tray, Icon, Shell32.dll, 305 

Files = Shell32.dll|explorer.exe|connect.dll|DDORes.dll|imageres.dll|ieframe.dll|comres.dll|irprops.cpl|mmres.dll|mspaint.exe|netcenter.dll|networkexplorer.dll|pnidui.dll|SyncCenter.dll|wlanpref.dll|wmploc.DLL|wpdshext.dll|xpsrchvw.exe|wlandlg.dll|main.cpl|accessibilitycpl.dll|ActionCenterCPL.dll|netprof.dll|netshell.dll|networkmap.dll|PortableDeviceStatus.dll|powercpl.dll|powrprof.dll|shdocvw.dll|WISPTIS.EXE|SndVolSSO.dll|Utilman.exe
arrFiles := StrSplit(Files, "|"), MaxIndex := arrFiles.MaxIndex(), this := 0
  
HLim = 500
GoTo PgUp

#If WinActive("ahk_id" hGui)

PgUp::
PgDn:: 
    this := A_ThisLabel = "PgUp" ? ++this : --this
    this := this > MaxIndex ? 1 : this = 0 ? MaxIndex : this
    Gui, Destroy
    Gui, -DPIScale +HWNDhGui
    Gui, Color, 2F4F4F
    File := arrFiles[this], ColH := 0
    Loop 
    { 
        glue := ColH > HLim ? "ym" : "", ColH := glue = "" ? ColH : 0 
        Gui, Add, Picture, % glue " Icon" A_Index " v" A_Index " gIcon  Border", % File  
        GuiControlGet, Pos, Pos , % A_Index
        ColH += PosH
    } 
    Until PosH = 0
    Gui, Show, Hide 
    Gui, Show, x-1 y-1 AutoSize, % File
    WinGetPos, , , WinWidth, , ahk_id %hGui%
    If WinWidth < 350
        Gui, Show, w350 
    Return

#If

Icon:
    GuiControlGet, Pos, Pos , % A_GuiControl
    Gui, Show,  , % File "   № " A_GuiControl "   " PosW-2 " x " PosH-2  
    FileGetSize, SizeKB, C:\Windows\System32\%File%, K
    ToolTip % File "`nИконка № """ A_GuiControl """`n" PosW-2 " x " PosH-2 "`n" SizeKB " KB"
    Clipboard := File ", " A_GuiControl
    KeyWait Lbutton
    ToolTip
    Return 
    
GuiClose: 
GuiEscape:
    ExitApp 

Да, чекбоксы обычно используются независимо друг от друга.

Как то не думал об этом. Вроде как удобно, так и используй. Чекбокс и радио это кнопка разных стилей, для радио встроен алгоритм привязки, для чеков нет. А так мало ли какая нужда, мне недавно в меню надо было сделать группу из нескольких пунктов, если там нет радио, или радио внешне не устраивает, что же теперь, не делать.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

10

Re: AHK: Размер CheckBox

Ну, если для себя, то как угодно, если для публикации — можно сбить пользователя с толку.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder