BUSCAR FOTO CLICANDO NA LISTBOX
Bom dia....
Há tempo, criei um aplicativo (VB6) que controla meus filmes em DVD.
Uma das tabelas (Access) é a de nome de Atores. No form, ao clicar no menu <Localizar>, digito
numa inputbox o nome procurado. Se digitá-lo por inteiro (e ele existir no sistema), seu nome aparecerá na
List2 e sua foto (se disponÃvel) será exibida ao lado da List2. Se digitar uma parte do nome, então a List2 exibirá
os atores cujo nome atenda ao critério da busca. Nesse caso, como não foi digitado o nome completo, o sistema
não achará a foto do ator (que fica armazenada numa pasta do drive <C:\> ).
Este é o código que faz funcionar a rotina:
Private Sub mnuLocalizar_Click()
Set TabAtores = Banco.OpenRecordset([Ô]CadastrodeAtores[Ô], dbOpenDynaset)
Dim Achar As String, Conseguir As String
If List2.Visible = True Then List2.Visible = False
Achar = InputBox([Ô]Digite o nome desejado,[Ô] & vbNewLine & _
[Ô]ou as primeiras letras do nome:[Ô], [Ô]Procura pelo nome completo ou incompleto[Ô])
If Trim$(Achar) = vbNullString Then
Exit Sub
Else
Conseguir = [Ô]Atores Like[ô][Ô] & Achar & [Ô]*[ô][Ô]
TabAtores.FindFirst Conseguir
If TabAtores.NoMatch = True Then
MsgBox [Ô]Nada foi encontrado[Ô] & Chr(13) & _
[Ô]quanto a eventual registro de[Ô] & Chr(13) & _
[Ô]< [Ô] & UCase(Achar) & [Ô] >[Ô], vbInformation, [Ô]Pesquisa sem retorno[Ô]
List2.Visible = False
Exit Sub
Else
Dim Pesquisa As String
Pesquisa = Achar & [Ô].jpg[Ô]
lblAtor.Visible = True
If Not (Dir([Ô]C:\Filmes\Images\Ator\[Ô] & Pesquisa)) = [Ô][Ô] Then
Image1.Visible = True
lblAtor.Caption = Achar
lblAtor.Caption = UCase(lblAtor.Caption)
Set Image1 = LoadPicture([Ô]C:\Filmes\Images\Ator\[Ô] & Pesquisa)
With Image1
.Left = 105
.Height = 2692
.Top = 6508
.Width = 12665
End With
Else
Image1.Visible = False
lblAtor.Visible = False
End If
End If
End If
End Sub
Desejando acrescentar o recurso de, ao clicar num nome qualquer da List2, sua imagem (se existir) seja
exibida, e se não estiver armazenada no drive <C:\>, uma msgbox informe sobre sua inexistência, tentei
operacionalizar com o seguinte código:
Private Sub List2_DblClick()
Dim Localizar As String
Localizar = List2.Text & [Ô].jpg[Ô]
[ô]Procura na pasta abaixo o nome selecionado na List2
If Not (Dir([Ô]C:\Filmes\Image\Ator\[Ô] & Localizar)) = [Ô][Ô] Then
Set Image1 = LoadPicture([Ô]C:\Filmes\Image\Ator\[Ô] & Localizar)
With Image1
.Left = 105
.Height = 2692
.Top = 6508
.Width = 12665
End With
Image1.Visible = True
lblAtor.Visible = True
lblAtor = List2.Text
Else
Image1.Visible = False
lblAtor.Visible = False
MsgBox [Ô]Não há foto disponÃvel[Ô]
End If
End Sub
Não funciona... A cada doubleclick num dos nomes da lista, somente a msgbox é exibida (Não há foto
disponÃvel). Acho que o acesso não está sendo feito por conta da linha abaixo da declaração da variável
<Localizar>, em negrito.
O que estaria faltando para a Listbox aceitar a rotina de busca, e inserir a foto, ou informar sobre sua
inexistência real?
Agradeço se algum dos [ô]gurus[ô] que frequentam o forum pudesse me passar a orientação.
Grato.
Há tempo, criei um aplicativo (VB6) que controla meus filmes em DVD.
Uma das tabelas (Access) é a de nome de Atores. No form, ao clicar no menu <Localizar>, digito
numa inputbox o nome procurado. Se digitá-lo por inteiro (e ele existir no sistema), seu nome aparecerá na
List2 e sua foto (se disponÃvel) será exibida ao lado da List2. Se digitar uma parte do nome, então a List2 exibirá
os atores cujo nome atenda ao critério da busca. Nesse caso, como não foi digitado o nome completo, o sistema
não achará a foto do ator (que fica armazenada numa pasta do drive <C:\> ).
Este é o código que faz funcionar a rotina:
Private Sub mnuLocalizar_Click()
Set TabAtores = Banco.OpenRecordset([Ô]CadastrodeAtores[Ô], dbOpenDynaset)
Dim Achar As String, Conseguir As String
If List2.Visible = True Then List2.Visible = False
Achar = InputBox([Ô]Digite o nome desejado,[Ô] & vbNewLine & _
[Ô]ou as primeiras letras do nome:[Ô], [Ô]Procura pelo nome completo ou incompleto[Ô])
If Trim$(Achar) = vbNullString Then
Exit Sub
Else
Conseguir = [Ô]Atores Like[ô][Ô] & Achar & [Ô]*[ô][Ô]
TabAtores.FindFirst Conseguir
If TabAtores.NoMatch = True Then
MsgBox [Ô]Nada foi encontrado[Ô] & Chr(13) & _
[Ô]quanto a eventual registro de[Ô] & Chr(13) & _
[Ô]< [Ô] & UCase(Achar) & [Ô] >[Ô], vbInformation, [Ô]Pesquisa sem retorno[Ô]
List2.Visible = False
Exit Sub
Else
Dim Pesquisa As String
Pesquisa = Achar & [Ô].jpg[Ô]
lblAtor.Visible = True
If Not (Dir([Ô]C:\Filmes\Images\Ator\[Ô] & Pesquisa)) = [Ô][Ô] Then
Image1.Visible = True
lblAtor.Caption = Achar
lblAtor.Caption = UCase(lblAtor.Caption)
Set Image1 = LoadPicture([Ô]C:\Filmes\Images\Ator\[Ô] & Pesquisa)
With Image1
.Left = 105
.Height = 2692
.Top = 6508
.Width = 12665
End With
Else
Image1.Visible = False
lblAtor.Visible = False
End If
End If
End If
End Sub
Desejando acrescentar o recurso de, ao clicar num nome qualquer da List2, sua imagem (se existir) seja
exibida, e se não estiver armazenada no drive <C:\>, uma msgbox informe sobre sua inexistência, tentei
operacionalizar com o seguinte código:
Private Sub List2_DblClick()
Dim Localizar As String
Localizar = List2.Text & [Ô].jpg[Ô]
[ô]Procura na pasta abaixo o nome selecionado na List2
If Not (Dir([Ô]C:\Filmes\Image\Ator\[Ô] & Localizar)) = [Ô][Ô] Then
Set Image1 = LoadPicture([Ô]C:\Filmes\Image\Ator\[Ô] & Localizar)
With Image1
.Left = 105
.Height = 2692
.Top = 6508
.Width = 12665
End With
Image1.Visible = True
lblAtor.Visible = True
lblAtor = List2.Text
Else
Image1.Visible = False
lblAtor.Visible = False
MsgBox [Ô]Não há foto disponÃvel[Ô]
End If
End Sub
Não funciona... A cada doubleclick num dos nomes da lista, somente a msgbox é exibida (Não há foto
disponÃvel). Acho que o acesso não está sendo feito por conta da linha abaixo da declaração da variável
<Localizar>, em negrito.
O que estaria faltando para a Listbox aceitar a rotina de busca, e inserir a foto, ou informar sobre sua
inexistência real?
Agradeço se algum dos [ô]gurus[ô] que frequentam o forum pudesse me passar a orientação.
Grato.
Só complementando:
Ao clicar em <Localizar> e preencher o nome do ator na inputbox, se o nome
existir, ele é exibido na ListBox em destaque. E, se possuir uma foto anexada
no drive <C:\Filmes\Image\Ator>, ela será exibida ao lado da Listbox...
Ao clicar em <Localizar> e preencher o nome do ator na inputbox, se o nome
existir, ele é exibido na ListBox em destaque. E, se possuir uma foto anexada
no drive <C:\Filmes\Image\Ator>, ela será exibida ao lado da Listbox...
Meu caro, se me lembro bem as listas possuem uma indexação tipo vetor, tenta assim:
Localizar = List2.item(list2.selectedindex).text & [Ô].jpg[Ô]
Nem lembro direito se é assim que identifica a opção da lista.
Localizar = List2.item(list2.selectedindex).text & [Ô].jpg[Ô]
Nem lembro direito se é assim que identifica a opção da lista.
Obrigado, Sibemm. Usei sua dica para fazer algumas simulações, mas não obtive êxito.
Já vi alguma coisa em VB Net, mas não se aplica ao VB6...
Teoricamente, o que preciso é simplesmente dar um double click num nome qualquer da list2 e
ver exibida a foto ao lado, ou então uma msgbox informando sobre a inexistência de foto para esse
nome....
No primeiro caso (quando digito o nome completo do ator numa inputbox), a listbox é exibida, com
o nome selecionado e surge a foto ou a msgbox...
Enquanto espero que algum dos colegas possa me dar uma luz, vou seguindo e pesquisando pela
net.... Se conseguir resultado, informo aqui mesmo.
Obrigado.
Já vi alguma coisa em VB Net, mas não se aplica ao VB6...
Teoricamente, o que preciso é simplesmente dar um double click num nome qualquer da list2 e
ver exibida a foto ao lado, ou então uma msgbox informando sobre a inexistência de foto para esse
nome....
No primeiro caso (quando digito o nome completo do ator numa inputbox), a listbox é exibida, com
o nome selecionado e surge a foto ou a msgbox...
Enquanto espero que algum dos colegas possa me dar uma luz, vou seguindo e pesquisando pela
net.... Se conseguir resultado, informo aqui mesmo.
Obrigado.
Já achou.
Se não vou colocar como eu mudei pouco coisa.
Se não vou colocar como eu mudei pouco coisa.
mande aà Omar....
(ainda não consegui visualizar nada, acessando uma base de dados via listbox).
Francisco.
(ainda não consegui visualizar nada, acessando uma base de dados via listbox).
Francisco.
Mudei alguma coisa só para teste onde tive resultado positivo.
Caminho da pasta e diferente.Quanto a busca não modifiquei
pois Dao estou defasado.
Segue
Private Sub List1_Click()
Dim Localizar As String
Localizar = List1.Text & [Ô].jpg[Ô]
[ô]Procura na pasta abaixo o nome selecionado na List2
If Not (Dir([Ô]C:\Filmes\[Ô] & Localizar)) = [Ô][Ô] Then
Set Image1 = LoadPicture([Ô]C:\Filmes\[Ô] & Localizar)
With Image1
[ô].Left = 105
[ô].Height = 2692
[ô].Top = 6508
[ô].Width = 12665
End With
Image1.Visible = True
[ô]lblAtor.Visible = True
[ô]lblAtor = List2.Text
Else
Image1.Visible = False
[ô]lblAtor.Visible = False
MsgBox [Ô]Não há foto disponÃvel[Ô]
End If
End Sub
Private Sub mnuLocalizar_Click()
Set Db = OpenDatabase(App.Path & [Ô]\Tabelas2.mdb[Ô])
[ô]Set Tb = Db.OpenRecordset([Ô]clientes[Ô])
Set Tb = Db.OpenRecordset([Ô]CadastrodeAtores[Ô], dbOpenDynaset)
Dim Achar As String, Conseguir As String
[ô] If List2.Visible = True Then List2.Visible = False
Achar = InputBox([Ô]Digite o nome desejado,[Ô] & vbNewLine & _
[Ô]ou as primeiras letras do nome:[Ô], [Ô]Procura pelo nome completo ou incompleto[Ô])
If Trim$(Achar) = vbNullString Then
Exit Sub
Else
Conseguir = [Ô]Atores Like[ô][Ô] & Achar & [Ô]*[ô][Ô]
Tb.FindFirst Conseguir
If Tb.NoMatch = True Then
MsgBox [Ô]Nada foi encontrado[Ô] & Chr(13) & _
[Ô]quanto a eventual registro de[Ô] & Chr(13) & _
[Ô]< [Ô] & UCase(Achar) & [Ô] >[Ô], vbInformation, [Ô]Pesquisa sem retorno[Ô]
[ô]List2.Visible = False
Exit Sub
Else
[ô] Dim Pesquisa As String
[ô]Pesquisa = Achar & [Ô].jpg[Ô]
[ô] lblAtor.Visible = True
[ô]If Not (Dir([Ô]C:\Filmes\[Ô] & Pesquisa)) = [Ô][Ô] Then
[ô]Image1.Visible = True
[ô]lblAtor.Caption = Achar
[ô]lblAtor.Caption = UCase(lblAtor.Caption)
[ô]Set Image1 = LoadPicture([Ô]C:\Filmes\[Ô] & Pesquisa)
[ô]List2.Visible = True
[ô]With Image1
[ô].Left = 105
[ô] .Height = 2692
[ô].Top = 6508
[ô].Width = 12665
[ô] End With
[ô] Else
[ô] Image1.Visible = False
[ô]lblAtor.Visible = False
[ô] End If
[ô] End If
[ô] End If
With Tb
Dim Localizar As String
Localizar = Achar & [Ô].jpg[Ô]
[ô]Procura na pasta abaixo o nome selecionado na List2
If Not (Dir([Ô]C:\Filmes\[Ô] & Localizar)) = [Ô][Ô] Then
Set Image1 = LoadPicture([Ô]C:\Filmes\[Ô] & Localizar)
With Image1
[ô].Left = 105
[ô].Height = 2692
[ô].Top = 6508
[ô].Width = 12665
End With
Image1.Visible = True
[ô]lblAtor.Visible = True
lblAtor = Achar
Else
Image1.Visible = False
[ô]lblAtor.Visible = False
MsgBox [Ô]Não há foto disponÃvel[Ô]
End If
Do Until .EOF [ô]percorre o recordset ate o fim
[ô]inclui os itens correspondentes
List1.AddItem Tb([Ô]Atores[Ô])
[ô]List1.ItemData(Controle.NewIndex) = Tb([Ô]Atores[Ô])
.MoveNext
Loop
[ô]fecha o recordset
.Close
End With
Set Tb = Nothing [ô]libera o recordset
Exit Sub
End If
End If
End Sub
Caminho da pasta e diferente.Quanto a busca não modifiquei
pois Dao estou defasado.
Segue
Private Sub List1_Click()
Dim Localizar As String
Localizar = List1.Text & [Ô].jpg[Ô]
[ô]Procura na pasta abaixo o nome selecionado na List2
If Not (Dir([Ô]C:\Filmes\[Ô] & Localizar)) = [Ô][Ô] Then
Set Image1 = LoadPicture([Ô]C:\Filmes\[Ô] & Localizar)
With Image1
[ô].Left = 105
[ô].Height = 2692
[ô].Top = 6508
[ô].Width = 12665
End With
Image1.Visible = True
[ô]lblAtor.Visible = True
[ô]lblAtor = List2.Text
Else
Image1.Visible = False
[ô]lblAtor.Visible = False
MsgBox [Ô]Não há foto disponÃvel[Ô]
End If
End Sub
Private Sub mnuLocalizar_Click()
Set Db = OpenDatabase(App.Path & [Ô]\Tabelas2.mdb[Ô])
[ô]Set Tb = Db.OpenRecordset([Ô]clientes[Ô])
Set Tb = Db.OpenRecordset([Ô]CadastrodeAtores[Ô], dbOpenDynaset)
Dim Achar As String, Conseguir As String
[ô] If List2.Visible = True Then List2.Visible = False
Achar = InputBox([Ô]Digite o nome desejado,[Ô] & vbNewLine & _
[Ô]ou as primeiras letras do nome:[Ô], [Ô]Procura pelo nome completo ou incompleto[Ô])
If Trim$(Achar) = vbNullString Then
Exit Sub
Else
Conseguir = [Ô]Atores Like[ô][Ô] & Achar & [Ô]*[ô][Ô]
Tb.FindFirst Conseguir
If Tb.NoMatch = True Then
MsgBox [Ô]Nada foi encontrado[Ô] & Chr(13) & _
[Ô]quanto a eventual registro de[Ô] & Chr(13) & _
[Ô]< [Ô] & UCase(Achar) & [Ô] >[Ô], vbInformation, [Ô]Pesquisa sem retorno[Ô]
[ô]List2.Visible = False
Exit Sub
Else
[ô] Dim Pesquisa As String
[ô]Pesquisa = Achar & [Ô].jpg[Ô]
[ô] lblAtor.Visible = True
[ô]If Not (Dir([Ô]C:\Filmes\[Ô] & Pesquisa)) = [Ô][Ô] Then
[ô]Image1.Visible = True
[ô]lblAtor.Caption = Achar
[ô]lblAtor.Caption = UCase(lblAtor.Caption)
[ô]Set Image1 = LoadPicture([Ô]C:\Filmes\[Ô] & Pesquisa)
[ô]List2.Visible = True
[ô]With Image1
[ô].Left = 105
[ô] .Height = 2692
[ô].Top = 6508
[ô].Width = 12665
[ô] End With
[ô] Else
[ô] Image1.Visible = False
[ô]lblAtor.Visible = False
[ô] End If
[ô] End If
[ô] End If
With Tb
Dim Localizar As String
Localizar = Achar & [Ô].jpg[Ô]
[ô]Procura na pasta abaixo o nome selecionado na List2
If Not (Dir([Ô]C:\Filmes\[Ô] & Localizar)) = [Ô][Ô] Then
Set Image1 = LoadPicture([Ô]C:\Filmes\[Ô] & Localizar)
With Image1
[ô].Left = 105
[ô].Height = 2692
[ô].Top = 6508
[ô].Width = 12665
End With
Image1.Visible = True
[ô]lblAtor.Visible = True
lblAtor = Achar
Else
Image1.Visible = False
[ô]lblAtor.Visible = False
MsgBox [Ô]Não há foto disponÃvel[Ô]
End If
Do Until .EOF [ô]percorre o recordset ate o fim
[ô]inclui os itens correspondentes
List1.AddItem Tb([Ô]Atores[Ô])
[ô]List1.ItemData(Controle.NewIndex) = Tb([Ô]Atores[Ô])
.MoveNext
Loop
[ô]fecha o recordset
.Close
End With
Set Tb = Nothing [ô]libera o recordset
Exit Sub
End If
End If
End Sub
Faz um simples teste:
E verifica se realmente está pegando o texto que deveria. Se sim, menos mal, se não faz desse jeito:
Citação:
Private Sub List1_Click()
Dim Localizar As String
Localizar = List1.Text & [Ô].jpg[Ô]
msgbox Localizar
E verifica se realmente está pegando o texto que deveria. Se sim, menos mal, se não faz desse jeito:
Citação:
Private Sub List1_Click()
Dim Localizar As String
For i = 0 To List1.ListCount - 1
If List1.Selected(i) Then [ô] se estiver selecionado
Localizar = List1.Text & [Ô].jpg[Ô]
End If
Next i
obrigado, Alisson. Deu exatamente o resultado que eu estava querendo. Veja o script:
Private Sub List2_Click()
Dim Pesquisa As String, I As Integer
For I = 0 To List2.ListCount - 1
If List2.Selected(I) Then
Pesquisa = List2.Text & [Ô].jpg[Ô]
End If
Next I
lblAtor.Visible = True
If Not (Dir([Ô]C:\Filmes\Images\Ator\[Ô] & Pesquisa)) = [Ô][Ô] Then
Image1.Visible = True
lblAtor.Caption = List2.Text
lblAtor.Caption = ConverteMaiuscula(lblAtor.Caption)
Set Image1 = LoadPicture([Ô]C:\Filmes\Images\Ator\[Ô] & Pesquisa)
With Image1
.Left = 105
.Height = 2692
.Top = 6508
.Width = 12665
End With
Else
Image1.Visible = False
lblAtor.Visible = False
If lblQuant.Visible = True Then lblQuant.Visible = False
MsgBox [Ô]Foto não encontrada...[Ô] & vbNewLine & _
List2.Text & [Ô].[Ô], vbOKOnly + vbApplicationModal + vbInformation, [Ô]Fotos de atores e diretores[Ô]
End If
End Sub
Muito obrigado pela colaboração Agradeço também a Omar2011 pela força.
Sirious.
Tópico encerrado , respostas não são mais permitidas