DUVIDA DE OTIMIZAR CODIGO.

THIAGO.CC 18/11/2009 10:26:43
#328034
MARCELO-TREZE,

Continua gerando o mesmo erro.

Thiago
THIAGO.CC 19/11/2009 08:22:10
#328133
Mais alguma sugestão??
ROBIU 19/11/2009 08:39:44
#328135
Thiago, você testou o exemplo que enviei?
THIAGO.CC 19/11/2009 17:01:21
#328182
ROBIU,

Testei sim, mas também não funciona pelo seguinte motivo.

é que esta indexidado os check[ô]s. E não são obrigatorio ser preenchidos todos os check[ô]s é obrigatorio somente 1.

Para vc ter uma ideia melhor do assunto, imagine 3 grupos de check[ô]s.

exemplo.

Check1(1), Check1(2),....,Check1(10).
Check2(1), Check2(2),....,Check2(10).
Check3(1), Check3(2),....,Check3(10).

A minha função verifica se pelo menos 1 check em cada grupo foi selecionado, se não foi acusa na tela.

O que eu queria é otimizar isto no maximo que eu puder, pois tem software que tem varios grupos como este, e eu não queria criar a função que eu postei um para cada grupo.


Thiago






MARCELO.TREZE 19/11/2009 17:21:53
#328184
Bom realmente o For Each nào irá funcionar com objetos indexados, é este o maior problema, entào a melhor forma é a que vc está utilizando, pois como são varios chekbox indexado, terá de verificar grupo por grupo
ROBIU 19/11/2009 23:31:48
#328209
Beleza, então você vai gostar do que eu consegui fazer neste projeto.
[ô]Para funcionar vamos marcar cada grupo de Checkboxs pela propriedade Tag
[ô]Assim, Todas Check1 coloque 1 na propriedade Tag, Check2 coloque 2 na propriedade Tag,
[ô]Proceda desta forma para todos os grupos

Option Explicit
Dim Contar(1 To 3) As Integer
[ô]A Variável contar depende da quantidade de grupos. Neste exemplo são três grupos

Sub VerCheck(F As Form)
Dim Check As Integer, I As Integer
[ô]Limpar a variável Contar
For I = 1 To 3
Contar(I) = 0
Next I
[ô]Pega a quantidade de controles do form
For Check = 1 To F.Controls.Count - 1
[ô]Verifica se o controle é CheckBox
If TypeOf F.Controls(Check) Is CheckBox Then
[ô]Para as CheckBoxs, Pega os grupos. Este for está relacionado com a quantidade de grupos
[ô]Como os grupos são fixos:
For I = 1 To 3
[ô]O grupo está ligado à propriedade Tag dos Checkboxs
If Val(F.Controls(Check).Tag) = I Then
If F.Controls(Check).Value = 1 Then
Contar(I) = Contar(I) + 1
End If

End If
Next
End If
Next
End Sub

Private Sub Command1_Click()
[ô]Para chamar a sub
VerCheck Me
[ô]Exemplo de uso dos valores
Lbl1.Caption = Contar(1) & [Ô] marcado(s)[Ô]
Lbl2.Caption = Contar(2) & [Ô] marcado(s)[Ô]
Lbl3.Caption = Contar(3) & [Ô] marcado(s)[Ô]

End Sub
PH1959 24/11/2009 13:26:12
#328491
public function VerCheck()
Dim Controle1 As Object
Dim Controle(n) As Object [ô] SUBSTITUA N POR (NUMERO DE GRUPOS-1) NO CASO ESTOU USANDO 3 GRUPOS N=2
dim qt(n) as byte[ô] SUBSTITUA N POR (NUMERO DE GRUPOS-1) NO CASO ESTOU USANDO 3 GRUPOS N=2
[ô]a variavel qt armazena a qtde de controles de cada grupo se a qtde for a mesma para todos é desnecessaria a variavel
verchek=false
contador=0
Set Controle(0) = CHECK1: Set Controle(1) = CHECK2: Set Controle(2) = CHECK3
for i = 0 to n [ô]não eskeça de substituir o N
set controle1=controle(i)
for j = 1 to qt(i)
if controle1(j).checked= true then [ô]
contador=contador+1
exit for
else
endif
next j
next i
if contador = N then
vercheck=true
else
endif
end function



Página 2 de 2 [17 registro(s)]
Tópico encerrado , respostas não são mais permitidas