Postada em 02/05/2011 16:21 hs
Bom, como meus amigos não tiveram a solução eu andei batendo a cabeça até criar uma solução temporária até aparecer algo mais simples, segue o código caso alguem precise:
Public Sub LimparCampos(IndiceI, IndiceF As Integer, Formulario As Form) 'Explicação:
'IndiceI é o índice inicial do controle e IndiceF é o índice final do controle 'Para eu limpar somente um intervalo de índice eu vejo o intervalo que desejo e informo na 'hora de chamar a função. No meu caso como eu tenho 3 Tabs, eu pego os ídices inicial até 'o ídice final dentro do meu tab, assim ele somente limpa os campos nesse intervalo fazendo 'com que os campos que estao em outras tabs continuem preenchidos
Dim obj As Control Dim tabula As Integer For Each obj In Formulario.Controls tabula = obj.TabIndex 'pego o indice de tabulação do objeto If tabula >= IndiceI And tabula <= IndiceF Then 'vejo se o índice ta no intervalo q qro If TypeOf obj Is MaskEdBox Then 'Certifico se é um campo de mascara obj.PromptInclude = False obj.Text = "" End If If TypeOf obj Is TextBox Or TypeOf obj Is ComboBox Then 'Vejo se é texto ou combo obj.Text = "" End If End If Next
'Como o FOR EACH não procura os objetos em ordem de tabulção, tive que criar outro FOR 'EACH para ver o objeto que desejo que ganhe foco depois de eu limpar todos os campos
For Each obj In Formulario.Controls tabula = obj.TabIndex If tabula = IndiceI Then 'Vejo o índice inicial (primeiro objeto do meu SSTab) e dou foco nele obj.SetFocus Exit For End If Next End Sub
''PRA CHAMAR 'No meu caso, como tenho 3 Tabs, fiz assim:
If SSTCondominio.Tab = 0 Then Call LimparCampos(0, 6, FrmCondominio) Else If SSTCondominio.Tab = 1 Then Call LimparCampos(17, 38, FrmCondominio) Else Call LimparCampos(49, 61, FrmCondominio) End If End If End Sub
|