Convidad 14/1/2012, 19:07
Abra o exemplo que enviei (Filmes.mdb) em modo de estrutura (com Shift pressionado).
Neste exemplo há vários forms com insersão de imagem, então abra, p.ex., o forFilmes (em modo design).
Exiba a Folha de Propriedades e selecione o botão "Inserir", cujo nome é AddPicture.
Na guia Eventos, na linha do evento Ao Clicar há um [Procedimento de evento]. Clique nesta linha e depois clique nos 3 pontinhos a direita, e verá o código do botão:
Private Sub AddPicture_Click()
On Error GoTo Trato
' Usar a caixa de diálogo Abrir arquivo a fim de escolher
' um nome de arquivo para a foto do ... .
If IsNull(NomeFilme) Then
NomeFilme.SetFocus
Info "Informe o nome do Filme"
Exit Sub
End If
getFileName
Exit Sub
Trato: MsgBox Err.Description
End Sub
Sub getFileName()
On Error GoTo Trato
' Exibe a caixa de diálogo Abrir arquivo a fim de escolher um nome
' de arquivo para o registro de ... atual. Se o usuário
' selecionar um arquivo, essa função exibe-o no controle de imagem.
Dim fileName As String
Dim result As Integer
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Selecionar foto de capa de filme"
.Filters.Add "Todos os arquivos", "*.*"
.Filters.Add "JPEGs", "*.jpg"
.Filters.Add "Bitmaps", "*.bmp"
.FilterIndex = 2
.AllowMultiSelect = False
.InitialFileName = fncOrigem(mFoto) 'veja esta função no módulo mdPasta
result = .Show
If (result <> 0) Then
fileName = Trim(.SelectedItems.Item(1))
Me![ImagePath].Visible = True
Me![ImagePath].SetFocus
Me![ImagePath].Text = fileName
Me![Park].SetFocus
Me![ImagePath].Visible = False
End If
End With
Exit Sub
Trato: MsgBox Err.Description
End Sub
No botão Remover, cujo nome é RemovePicture, há código para remover a imagem:
Private Sub RemovePicture_Click()
On Error GoTo Trato
' Remover o nome do arquivo do registro do ... e
' exibir o rótulo da mensagem de erro.
If IsNull(NomeFilme) Then
NomeFilme.SetFocus
Info "Informe o nome do Filme"
Exit Sub
End If
Me![ImagePath] = ""
hideImageFrame
ErrorMsg.Visible = True
Exit Sub
Trato: MsgBox Err.Description
End Sub
Obs.:
Use um controle Imagem para as fotos. Este controle no Access2003 é dasacoplado por natureza, mas, se não me engano, nas versões novas dá pra acoplar. Melhor é usar desacoplado (sem o controle na tabela), porque imagens acopladas causam um grande aumento no tamanho do seu bd.