SELECIONAR LINHA LISTVIEW PELO INDEX

CCRISANEVB 12/03/2010 09:53:05
#336731
Bom Dia!!! Alguém poderia me ajudar em como fazer para selecionar uma linha do listview através do index???Irei passa por exemplo o índice tipo 3 - ai seleciona a linha 3 do listview.
ALVAROVB2009 12/03/2010 10:04:29
#336736
CCRISANEVB segue um exemplo meu, quando eu clico no meu listview e seleciono o registro desejado

Private Sub lvFuncionarios_Click()
If lvFuncionarios.ListItems.Count = 0 Then Exit Sub [ô]Caso alguém clique no listview em branco
strSQL = [Ô]Select * from Funcionarios where CodFunc=[ô][Ô] & lvFuncionarios.SelectedItem & [Ô][ô][Ô] [ô]Aqui pega o registro no listview
Set rsFuncionarios = New ADODB.Recordset

rsFuncionarios.Open strSQL, Db, adOpenKeyset, adLockOptimistic
Consulta = True
ExibeDados
[ô]Preenche o grid do log
Call Log(Me, txtCodigo.Text)
TravarCampos Me, True

AbilitaTabulacao
SSTab1.Tab = 1

CmdAlterar.Enabled = True
CmdExcluir.Enabled = True
End Sub

Private Sub lvFuncionarios_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader) [ô]Isso aqui tem que estar no evento do seu form
With lvFuncionarios
If (ColumnHeader.Index - 1) = .SortKey Then
.SortOrder = (.SortOrder + 1) Mod 2
Else
.Sorted = False
.SortOrder = 0
.SortKey = ColumnHeader.Index - 1
.Sorted = True
End If
End With
End Sub
CCRISANEVB 12/03/2010 10:34:54
#336743
Certo Alvaro obrigado pela ajuda porém ñ é bem isto o meu problema, o problema está em como faço por exemplo o index que selecionei no listview é igual a 8, salvo o index em uma variável proém como fazer para selecionar no listiview este index sem que ocorrá erro.Exemplo: Fiz assim: Set LvwCadastro.SelectedItem.index = cod
ALVAROVB2009 12/03/2010 10:40:43
#336744
E qual foi o erro que ele deu quando você deu esse comando?
CCRISANEVB 12/03/2010 10:51:34
#336745
Invalid use of property
FFCOUTO 12/03/2010 21:55:04
#336854
o correto é:

ListView1.ListItems(3).Selected = True
PEGUDO 14/03/2010 11:54:05
#336923
Resposta escolhida
Cara eu fiz este exemplo aqui, acho que pode ser o que você quer.
Neste exemplo tem uma Lisview e um TextBox, cada qual com seu nome padrão, OK?

[txt-color=#0000f0]Public[/txt-color] linha [txt-color=#0000f0]As Integer[/txt-color]

[txt-color=#0000f0]Private Sub[/txt-color] Form_Load()
[txt-color=#0000f0]Dim[/txt-color] Item [txt-color=#0000f0]As[/txt-color] ListItem

[txt-color=#0000f0]With[/txt-color] ListView1
[txt-color=#0000f0] For [/txt-color]j = 1 [txt-color=#0000f0]To[/txt-color] 15
[txt-color=#0000f0]Set[/txt-color] Item = .ListItems.Add(, , j)
Item.ListSubItems.Add , , j
[txt-color=#0000f0] Next
End With[/txt-color]

ListView1.ListItems(1).Selected = [txt-color=#0000f0]False[/txt-color] [txt-color=#007100][ô]Deseleciona o index 1[/txt-color]
Text1.TabIndex = 0 [txt-color=#007100][ô]Põe o foco na caixa de textos[/txt-color]
[txt-color=#0000f0]End Sub[/txt-color]

[txt-color=#0000f0]Private Sub [/txt-color]Text1_KeyPress(KeyAscii As Integer)
[txt-color=#0000f0]If[/txt-color] KeyAscii = 13 [txt-color=#0000f0]Then[/txt-color]
linha = Val(Text1.Text)[txt-color=#007100] [ô] Guarda o index que você quer[/txt-color]

[txt-color=#0000f0] With [/txt-color]ListView1
[txt-color=#0000f0] For [/txt-color]i = 1 [txt-color=#0000f0]To[/txt-color] ListView1.ListItems.Count[txt-color=#007100] [ô]faz um loop em todos os itens da ListView[/txt-color]
[txt-color=#0000f0] If [/txt-color]linha = i [txt-color=#0000f0]Then[/txt-color][txt-color=#007100] [ô]Se o valor do da caixa de textos for iqual ao valor do index[/txt-color]
[txt-color=#0000f0] For [/txt-color]j = 1 [txt-color=#0000f0]To[/txt-color] ListView1.ListItems.Count [txt-color=#007100][ô]Verifica se já tem um index selecionado[/txt-color]
[txt-color=#0000f0]If[/txt-color] ListView1.ListItems(j).Selected = [txt-color=#0000f0]True Then [/txt-color]ListView1.ListItems(j).Selected = [txt-color=#0000f0]False[/txt-color] [txt-color=#007100][ô]se tiver, deselecione[/txt-color]
[txt-color=#0000f0]Next[/txt-color]
.FullRowSelect = [txt-color=#0000f0]True[/txt-color][txt-color=#007100] [ô]Habilita a seleção da linha toda[/txt-color]
.ListItems(linha).Selected = [txt-color=#0000f0]True[/txt-color] [txt-color=#007100][ô]seleciona a linha toda[/txt-color]
.SetFocus[txt-color=#007100] [ô]Mantém o foco no ListView[/txt-color]
Text1.Text = [Ô][Ô] [txt-color=#007100][ô]Limpa caixa de textos[/txt-color]
[txt-color=#007100][ô]Text1.SetFocus[/txt-color]
[txt-color=#0000f0] Exit Sub [/txt-color][txt-color=#007100][ô]Sai da Sub quando a condição for satisfeita[/txt-color]
[txt-color=#0000f0]End If
Next
End With

End If
End Sub[/txt-color]


Note que eu comentei a linha que faz foco na caixa de textos.
O motivo é que se a caixa de textos receber foco, a Listview não vai exibir a cor azul que diz qual linha está selecionada.

valeu
Tópico encerrado , respostas não são mais permitidas