Page 1 of 1

interação entre checkbox

Posted: 17 Jun 2020, 18:52
by Lazyyy
Boa noite, queria saber se é possível fazer duas checkbox interagirem entre si, por exemplo: Tenho duas checkbox e quero que só uma possa ser marcada e não as duas ao mesmo tempo, uma deve desmarcar a outra, pra que as duas não fiquem marcadas simultaneamente.

Code: Select all

Gui, Add, CheckBox, checked vCheck1 x18 y245 w250 h20 gAzul, AZUL
Gui, Add, CheckBox, vCheck2 x118  y245 w250 h20 gVermelho, VERMELHO
Como deu pra ver no código acima, a checkbox "AZUL" já vem marcada, agora eu queria fazer com que ela fosse desmarcada automaticamente assim que a checkbox "VERMELHO" for marcada e vice-versa, é possível?

Re: interação entre checkbox

Posted: 17 Jun 2020, 19:01
by Yakshongas
Para isso, você precisa usar os botões de opção. Na caixa de seleção, você não pode fazê-lo.

Code: Select all

Gui, Chcecks:New
Gui, Chcecks:Add, Radio, vCheck1 Checked, AZUL
Gui, Chcecks:Add, Radio, vCheck2, VERMELHO
Gui, Chcecks:Show, W100 H100
Return

Re: interação entre checkbox  Topic is solved

Posted: 17 Jun 2020, 19:29
by Gio
Boa noite Lazyyy.

Como o amigo Yakshongas bem apontou, o controle do tipo Radio faz exatamente isso e é o mais indicado para este tipo de necessidade. Este tipo de controle é muito semelhante ao controle do tipo Checkbox, mas funciona em grupos, e você pode controlar quais controles pertencerão a um mesmo grupo.

Exemplo:

Code: Select all

Gui, Add, Radio, x20 y20 Checked vCOR_SELECIONADA, Azul
Gui, Add, Radio, x20 y40, Verde
Gui, Add, Radio, x20 y60, Amarelo
Gui, Add, Radio, x20 y80, Laranja
Gui, add, button, x20 y100 gEXIBIR_MENSAGEM, Selecionar
Gui, show, w200 h300
Return

EXIBIR_MENSAGEM:
Gui, submit, nohide
If (COR_SELECIONADA = 1)
{
	msgbox % "Você escolheu AZUL !"
}
Else if (COR_SELECIONADA = 2)
{
	msgbox % "Você escolheu VERDE !"
}
Else if (COR_SELECIONADA = 3)
{
	msgbox % "Você escolheu AMARELO !"
}
Else if (COR_SELECIONADA = 4)
{
	msgbox % "Você escolheu LARANJA ! "
}
Return

:arrow: Mas se você realmente quiser, também é possível fazer esse efeito com o controle do tipo Checkbox, porém você teria que escrever códigos em labels individualizadas por checkbox para desmarcar todas as outras labels usando o comando Control. Isso é bem mais incomodo de se fazer, mas também é possível.


Exemplo:

Code: Select all

Gui, Add, Checkbox, x20 y20 Checked gCOR_SELECIONADA_AZUL vCOR_SELECIONADA_AZUL, Azul
Gui, Add, Checkbox, x20 y40 gCOR_SELECIONADA_VERDE vCOR_SELECIONADA_VERDE, Verde
Gui, Add, Checkbox, x20 y60 gCOR_SELECIONADA_AMARELO vCOR_SELECIONADA_AMARELO, Amarelo
Gui, Add, Checkbox, x20 y80 gCOR_SELECIONADA_LARANJA vCOR_SELECIONADA_LARANJA, Laranja
Gui, show, w200 h300, Exemplo usando checkbox
Return

COR_SELECIONADA_AZUL:
Gui, submit, Nohide
If (COR_SELECIONADA_AZUL = 1)
{
	Control, uncheck,, Button2, Exemplo usando checkbox
	Control, uncheck,, Button3, Exemplo usando checkbox
	Control, uncheck,, Button4, Exemplo usando checkbox
}
Return

COR_SELECIONADA_VERDE:
Gui, submit, Nohide
If (COR_SELECIONADA_VERDE = 1)
{
	Control, uncheck,, Button1, Exemplo usando checkbox
	Control, uncheck,, Button3, Exemplo usando checkbox
	Control, uncheck,, Button4, Exemplo usando checkbox
}
Return

COR_SELECIONADA_AMARELO:
Gui, submit, Nohide
If (COR_SELECIONADA_AMARELO = 1)
{
	Control, uncheck,, Button1, Exemplo usando checkbox
	Control, uncheck,, Button2, Exemplo usando checkbox
	Control, uncheck,, Button4, Exemplo usando checkbox
}
Return

COR_SELECIONADA_LARANJA:
Gui, submit, Nohide
If (COR_SELECIONADA_LARANJA = 1)
{
	Control, uncheck,, Button1, Exemplo usando checkbox
	Control, uncheck,, Button2, Exemplo usando checkbox
	Control, uncheck,, Button3, Exemplo usando checkbox
}
Return

Re: interação entre checkbox

Posted: 18 Jun 2020, 08:49
by Lazyyy
Gio wrote:
17 Jun 2020, 19:29
Boa noite Lazyyy.

Como o amigo Yakshongas bem apontou, o controle do tipo Radio faz exatamente isso e é o mais indicado para este tipo de necessidade. Este tipo de controle é muito semelhante ao controle do tipo Checkbox, mas funciona em grupos, e você pode controlar quais controles pertencerão a um mesmo grupo.

Exemplo:

Code: Select all

Gui, Add, Radio, x20 y20 Checked vCOR_SELECIONADA, Azul
Gui, Add, Radio, x20 y40, Verde
Gui, Add, Radio, x20 y60, Amarelo
Gui, Add, Radio, x20 y80, Laranja
Gui, add, button, x20 y100 gEXIBIR_MENSAGEM, Selecionar
Gui, show, w200 h300
Return

EXIBIR_MENSAGEM:
Gui, submit, nohide
If (COR_SELECIONADA = 1)
{
	msgbox % "Você escolheu AZUL !"
}
Else if (COR_SELECIONADA = 2)
{
	msgbox % "Você escolheu VERDE !"
}
Else if (COR_SELECIONADA = 3)
{
	msgbox % "Você escolheu AMARELO !"
}
Else if (COR_SELECIONADA = 4)
{
	msgbox % "Você escolheu LARANJA ! "
}
Return

:arrow: Mas se você realmente quiser, também é possível fazer esse efeito com o controle do tipo Checkbox, porém você teria que escrever códigos em labels individualizadas por checkbox para desmarcar todas as outras labels usando o comando Control. Isso é bem mais incomodo de se fazer, mas também é possível.


Exemplo:

Code: Select all

Gui, Add, Checkbox, x20 y20 Checked gCOR_SELECIONADA_AZUL vCOR_SELECIONADA_AZUL, Azul
Gui, Add, Checkbox, x20 y40 gCOR_SELECIONADA_VERDE vCOR_SELECIONADA_VERDE, Verde
Gui, Add, Checkbox, x20 y60 gCOR_SELECIONADA_AMARELO vCOR_SELECIONADA_AMARELO, Amarelo
Gui, Add, Checkbox, x20 y80 gCOR_SELECIONADA_LARANJA vCOR_SELECIONADA_LARANJA, Laranja
Gui, show, w200 h300, Exemplo usando checkbox
Return

COR_SELECIONADA_AZUL:
Gui, submit, Nohide
If (COR_SELECIONADA_AZUL = 1)
{
	Control, uncheck,, Button2, Exemplo usando checkbox
	Control, uncheck,, Button3, Exemplo usando checkbox
	Control, uncheck,, Button4, Exemplo usando checkbox
}
Return

COR_SELECIONADA_VERDE:
Gui, submit, Nohide
If (COR_SELECIONADA_VERDE = 1)
{
	Control, uncheck,, Button1, Exemplo usando checkbox
	Control, uncheck,, Button3, Exemplo usando checkbox
	Control, uncheck,, Button4, Exemplo usando checkbox
}
Return

COR_SELECIONADA_AMARELO:
Gui, submit, Nohide
If (COR_SELECIONADA_AMARELO = 1)
{
	Control, uncheck,, Button1, Exemplo usando checkbox
	Control, uncheck,, Button2, Exemplo usando checkbox
	Control, uncheck,, Button4, Exemplo usando checkbox
}
Return

COR_SELECIONADA_LARANJA:
Gui, submit, Nohide
If (COR_SELECIONADA_LARANJA = 1)
{
	Control, uncheck,, Button1, Exemplo usando checkbox
	Control, uncheck,, Button2, Exemplo usando checkbox
	Control, uncheck,, Button3, Exemplo usando checkbox
}
Return
funcionou perfeitamente @Gio, obrigado