Ajuda - Busca - Membros - Calendário
Versão Completa: Checkbox
Fórum Script Brasil > Programação & Desenvolvimento > .NET
mestre fyoda
eu tenho varias checkbox com nomes diferentes, e para tormar mais pratico gostaria de saber se tem como eu fazer com que
todas as checkbox selecionadas sejam inseridos no banco de dados.
kuroi
que linguagem você usa??
to meio enferrujado, mas o esquema acho que é você fazer um for each de todos os controle no formulario. tipo (esqueci a sintaxe mas deve ser isso):
CODE
Control x;

foreach (x in this.Controls)
{
     if (x.GetType().ToString() == "CheckBox (Poe o nome intero aqui!!!)")
     {
            -- AQUI você TESTA SE está CHECADO
     }
}
Graymalkin
O mesmo código do kuroi em VB.NET seria:

CODE
for each x as Control in Me.Controls
    if typeof x is CheckBox then
        'aqui testa se está marcado
    endif
next x


Abraços,

Graymalkin
mestre fyoda
CODE
No module

Public Sub acesso(ByVal bloquear As String, ByVal Form As Form)
        Dim ch As New CheckBox
        For Each x As Control In Form.Controls
            If TypeOf x Is CheckBox Then
                MessageBox.Show("2")
                If ch.Checked = True Then
                    MessageBox.Show("Teste checkbox selecionada")
                End If
            End If
        Next x
    End Sub

chamando no Form

acesso("incluir_itens,deletar_itens", Me)


não esta entrando no if do type , mandei imprimir depois do foreach x.text aparece em branco , porque ?
Graymalkin
A CheckBox está realmente no form? Ou dentro de um painel no form?

Abraços,

Graymalkin
mestre fyoda
esta dentro de um tabcontrol!
Graymalkin
QUOTE(mestre fyoda @ 20/05/2007 - 23:01) *
esta dentro de um tabcontrol!

Então, você tem que percorrer os controles da tabcontrol e não do form.

Abraços,

Graymalkin
mestre fyoda
CODE
No module

Public Sub acesso(ByVal bloquear As String, ByVal Form As Form)
        Dim ch As New CheckBox
        For Each x As Control In Form.Controls
            If TypeOf x Is CheckBox Then
                MessageBox.Show("2")
                If ch.Checked = True Then
                    MessageBox.Show("Teste checkbox selecionada")
                End If
            End If
        Next x
    End Sub

chamando no Form

acesso("incluir_itens,deletar_itens", Me)


aonde eu chamo a função, esta no evento onclick no botão que está dentro do tabcontrol !.
Mas de qualquer forma alterei o "ME" para o nome do TABCONTROL (Funcionario ) e tambem tentei com o nome do TABPAGE ( Configuração) e não mudou nada !
Graymalkin
Faça a rotina ser recursiva:

CODE
Public Sub acesso(ByVal bloquear As String, ByVal Obj As Object)
        For Each x As Control In Obj.Controls
            Select Case x.GetType().Name
                Case "TabControl", "TabPage"
                    acesso(bloquear, x)
                Case "CheckBox"
                    Dim chk As CheckBox = x
                    MessageBox.Show(chk.Name & " = " & chk.Checked.ToString())
            End Select
        Next x
    End Sub


Daí você poderá fazer (no form):

CODE
acesso("incluir_itens,deletar_itens", Me)


Certo? wink.gif

Graymalkin
mestre fyoda
o que o GetType() faz ?

CODE
Case "TabControl", "TabPage"
                    acesso(bloquear, x)


o que esse codigo acima ele vai fazer ?

Graymalkin
QUOTE(mestre fyoda @ 21/05/2007 - 22:58) *
o que o GetType() faz ?

GetType() retorna um objeto que representa o tipo do objeto (Type).

QUOTE(mestre fyoda @ 21/05/2007 - 22:58) *
CODE
Case "TabControl", "TabPage"
                    acesso(bloquear, x)


o que esse codigo acima ele vai fazer ?

Caso o tipo seja "TabControl" ou "TabPage", a própria função será chamada passando agora o referido objeto. Isso é uma função recursiva, ou seja, ela chama a si própria.

Abraços,

Graymalkin
mestre fyoda
desculpa como sempre ficar enchendo o saco smile.gif , quando usar o Object ?
Graymalkin
QUOTE(mestre fyoda @ 21/05/2007 - 23:12) *
desculpa como sempre ficar enchendo o saco smile.gif

Hehehe... não precisa se desculpar! E não, você não está enchendo o saco. Dúvidas devem ser respondidas. Aliás, esta sua dúvida é muito pertinente.

QUOTE(mestre fyoda @ 21/05/2007 - 23:12) *
quando usar o Object ?

No caso, Object é o tipo "pai-de-todos". Ou seja, todos os demais tipos (referência) derivam de Object. Por isso, e pela regra de polimorfismo, um objeto do tipo filho pode ser referenciado por um objeto do tipo pai. No caso em questão, Obj poderá ser um Form, um TabControl ou uma TabPage. Então, você não pode definir o tipo como Form, se não vai dar erro quando você tentar passar um TabControl ou uma TabPage. E o mesmo vale para estes dois. Agora, se você declara como um tipo que pode referenciar qualquer um deles, que foi o caso, será válido passar um Form, um TabControl ou uma TabPage. Ah, e no caso em questão, no lugar de Object poderia ser Control. Isso porque todos os três na verdade são herança direta de Control.

Capisce? wink.gif

Graymalkin
mestre fyoda
eu capisco smile.gif

vlw
mestre fyoda
veja essa tela

http://img406.imageshack.us/my.php?image=imagemvs1.jpg

como eu faço para imprimir por coluna ?
Graymalkin
Como assim "imprimir por coluna"?

Graymalkin
mestre fyoda
o link com a imagem que esta em um dos topicos anterios , como mostra , esta selecionado alguns checkbox mas na hora de mostar os selecionados mostra na forma desornedada.

Por exemplo eu queria que mostrace todos os checkboxs selecionados na coluna Itens , depois da proxima coluna e assim por diante , teria como ?
Graymalkin
QUOTE(mestre fyoda @ 24/05/2007 - 10:16) *
o link com a imagem que esta em um dos topicos anterios , como mostra , esta selecionado alguns checkbox mas na hora de mostar os selecionados mostra na forma desornedada.

Por exemplo eu queria que mostrace todos os checkboxs selecionados na coluna Itens , depois da proxima coluna e assim por diante , teria como ?

Realmente, a coleção Controls não retorna os controles em ordem. Também tive esse problema recentemente. A solução, no caso, foi usar o método GetNextControl() do form para obter os controles na ordem de tabulação (TabIndex).

Abraços,

Graymalkin
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.