PAULO CAMPELO - NAVEGAR E PRECISO...

USUARIO.EXCLUIDOS 03/12/2005 19:55:06
#117815
P.
- Eu ainda to começando a mexer no VB e queria fazer o seguinte: Colocar uma imagem (logotipo) e quando clicar na imagem ir para o site. Tem como?

'--------------------------------------------------------------

R.
Sim, é possível fazer isso de forma fácil.

Você provavelmente vai utilizar um controle PictureBox
ou Image para o logotipo. Ambos possuem os eventos Click,
e DblClick, o que lhe permite uma ação controlada.

Você pode fazer a navegação pelo site em um formulário
de sua própria aplicação, com o uso do Internet Controls
(controle WebBrowser) da Microsoft, ou ainda ativando o
cliente Web padrão do usuário, seja ele um Netscape,
Internet Explorer, Opera etc.

Segue um exemplo de código que pode ser útil para entender.
'-----------------------------------------------------------

No formulário principal (onde esteja a imagem-logo):
'...
Option Explicit
'...
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
'...
Private Sub Form_Load()
'...
'Aqui fica o caminho para a carga da imagem de logo,
'se você quiser carregar ao invés de incorporar ao
'formulário. Usei a "Pin", que vem com o Visual Studio.
Dim sLogo As String
sLogo = "D:\Arquivos de programas\Microsoft Visual Studio\Common\Graphics\Bitmaps\Assorted\Pin.bmp"
'...
'Aqui você determina o endereço do site (URL), o que
'poderá fazer diretamente na tag, em tempo de desenho
'ou carregar em tempo de execução á partir de um arquivo
'ou tabela. O conselho é não fazer como neste exemplo,
'onde está fixo no código.
Dim sURL As String
sURL = "http://www.vbmania.com.br"
'...
With Picture1
If Len(Dir(sLogo)) > 0 Then Set .Picture = LoadPicture(sLogo)
.Tag = sURL
.Refresh
End With
'...
End Sub
'...
Private Sub Picture1_Click() 'Pode ser no duplo-clique também.
On Error GoTo hell:
'Aqui estão as duas formas, por seu próprio
'formulário de navegação ou pelo cliente de
'Web padrão.
Dim frm As frmBrowser
Dim i As Long
If MsgBox("Navegar pela aplicação?", vbYesNo + vbQuestion) = vbYes Then
Set frm = New frmBrowser
With frm
.WebBrowser1.Navigate Picture1.Tag
.Show 1
End With
Unload frm
Else
i = ShellExecute(Me.hwnd, vbNullString, Picture1.Tag, vbNullString, App.Path, &H1)
End If
GoTo sai:
hell:
MsgBox Err.Description
Err.Clear
sai:
Set frm = Nothing
i = Empty
End Sub
'...


Para o formulário do navegador, o código poderia ser
simples também, algo como:
'Option Explicit
'...
'Private Sub Form_Resize() 'Ocupar o form todo...
'WebBrowser1.Visible = False
'WebBrowser1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
'WebBrowser1.Visible = True
'End Sub
'...
'Private Sub Form_Unload(Cancel As Integer)
'WebBrowser1.Stop
'WebBrowser1.Navigate Empty
'Me.Hide
'End Sub
'...
'Private Sub WebBrowser1_StatusTextChange(ByVal Text As String)
'Me.Caption = Text 'O caption do form acompanha o status
'End Sub
'...
'Private Sub WebBrowser1_TitleChange(ByVal Text As String)
'Me.Caption = Text 'O caption do form acompanha o status
'End Sub
'...

Copie o código, cole-o em seus respectivos formulários e execute com F8. No formulário principal, o controle é um PictureBox chamado Picture1 e no formulário de navegação, o controle WebBrowser chama-se WebBrowser1, ou seja, o nome padrão para ambos.

P.S.: Não esqueça de acrescentar o controle WebBrowser ao formulário de navegação. Ele é referenciado como Microsoft Internet Controls.

WEBMASTER 03/12/2005 20:56:15
#117822
vc tem uma didática interessante .
USUARIO.EXCLUIDOS 03/12/2005 21:51:23
#117825
Para resumir, gente.

Para um efeito do tipo HiperLink em uma imagem, um label ou qualquer outro componente de tela que possua o evento Click, basta acrescentar o código da função ShellExecute nesse evento, com o endereço do site.

Primeiro, no form ou em um módulo, declarar a API. Se quer que a chamada á função esteja disponível para toda a aplicação, faça em um módulo:

Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Se vai usar apenas em um form específico, faça:

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long


No evento Click do objeto (label, picturebox, image, textbox etc), faça a chamada da função:

ShellExecute (propriedade hWnd do form que chama a função), vbNullString, (endereço da página ou do site), vbNullString, App.Path, &H1

-------------------------------------------------------------

Pode-se criar uma função envoltória no módulo (é o recomendado), criando-se uma função genérica que faça o mesmo trabalho. Se o módulo só tiver essa finalidade, poderia ser assim:

Option Explicit

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Public Function HiperLink(ByRef Formulário as VB.Form, ByVal Endereço as String) as Boolean
ShellExecute Formulário.hWnd, vbNullString, Endereço, vbNullString, App.Path, &H1
End Function

Depois de colado o código acima em um módulo BAS, basta chamar a função de qualquer outro ponto da aplicação.

Por exemplo, se desejar que um Label sirva de atalho para o Internet Explorer, no código do evento Click faça:

Private Sub Label1_Click()
HiperLink Me, "http://www.vbmania.com.br"
End Sub

Para um controle Image, o código é similar:

Private Sub Image1_Click()
HiperLink Me, "http://www.vbmania.com.br"
End Sub

E por aí afora. Dúvidas? Pergunte!
USUARIO.EXCLUIDOS 04/12/2005 15:00:11
#117947

Isso tambem funciona:

Private Declare Function ShellExecute Lib "shell32" _
Alias "ShellExecuteA" _
(ByVal hWnd As Long, ByVal Operation As String, _
ByVal FileName As String, ByVal Parameters As String, _
ByVal Directory As String, ByVal ShowCmd As Integer) As Long

Const SW_RESTORE = 9

ShellExecute 0, "open", Text1.text, 0, 0, SW_RESTORE


WEBMASTER 04/12/2005 15:53:36
#117950
Professor

Compartilhe estas matérias conosco usando a seção dicas (pode mandar um txt direto para o site). é melhor pois é mais fácil de encontrar.
ARCE 04/12/2005 16:15:10
#117955
Professor!
Parabens muito legal mesmo
Abraços t+
USUARIO.EXCLUIDOS 04/12/2005 16:24:55
#117956
Ok, á partir de agora, seção dicas.

Postei aqui por ser resposta á uma dúvida específica de um e-mail interno do VBMania, mas que poderia ser interessante para mais alguém.

CARDOSO2911:
Sim, o ShellExecute identifica o tipo de operação com o Open, analiza o parà¢metro e acaba por "abrir" o link com a aplicação adequada. é uma das variantes da função, que pode ser usada para executar qualquer aplicação registrada do Windows á partir de seus arquivos, ou ainda, com parà¢metros específicos. Assim, dá para utilizar a mesma função (com algumas variações) para gerar novos e-mail, criar um novo projeto do VB etc.
Tópico encerrado , respostas não são mais permitidas