Posted to microsoft.public.excel.programming
|
|
VBA - Click mouse to change cursor to cross hair that spans th
Gary,
One way is put the browser in a frame and disable the frame. You also
disable the browser, but does the user need to interact with the browser ?
NickHK
"gary" wrote in message
...
Nick,
OK, I was able to upgrade to VB 6 (still VBA part of Excel) and rewrote
much
of my code so the WebBrowser1 control now resides on my UserForm1. I also
added a lblHoriz and lblVert to the UserFrom1 and did a "send forward" on
each of them; I also did a "send backward" to the browser. Now the cross
hairs move around the user form (I know how to adjust the length of the
lines) but the cross hairs DO NOT go on top of the browser control which
is
where I need them.
Any ideas?
Thanks for your continued patience,
Gary
"NickHK" wrote:
Gary,
The reason for that may be the same reason as in the thread "MSFlexgrid
in
Excel" in this NG.
I have VB6 installed so don't have that problem.
NickHK
"gary" wrote in message
...
Nick,
Also, I tried awhile back to start up IE as a control on the UserForm
without success. I got a licensing problem (This control could not be
created because it is not properly licensed) when I tried to draw the
control
on the UsereForm. I have no idea what the problem is since I am the
legal
owner of my copy of Excel and VBA.
Gary
"gary" wrote:
Nick,
The IE browser is completely separate from the User Form. The code
to
control the browser resides on the user form which is kicked off
from
excel
after the user has set several parameters. So besides needing to
put
cross
hairs on the IE browser, the cross hairs need to be responsive to
mouse
movements on the browser.
Gay
"NickHK" wrote:
Gary,
But you are attempting to draw cross hairs on IE that is
completely
separated from your userform and Excel ?
Or you do have a web browser control on your userform ?
NickHK
"gary" wrote in message
...
Nick,
The user form contains several controls to allow the user to
specify
what
charts he wants to see in the IE window. Once I have the
inputs I
attempt
to create an IE browser window and go to the URL that will get
the
desired
info. I would like the cursor to change to cross hairs while it
is
over
the
IE window so the user can more accurately get values that are
displayed
along
the borders.
I hope that makes sense.
Thanks for asking,
Gary
"NickHK" wrote:
Gary,
You've lost me now.
You are creating an instance of Internet Explorer at run time,
but
I do
not
see the connection between that and the userform.
You can place a web browser on a userform using the "Microsoft
web
Browser"
control.
You then want to put cross hairs over that ?
Is that what you are after ?
NickHK
"gary" wrote in message
...
Hi Nick,
Your solution is very elegant. All I had to add was to set
the
label
border
style to 1 (single line) so I could see the lines. It does
exactly
what I
asked. (Single one).
What I am actually trying to do is add cross hairs to an IE
object set
with
the following code.
The Addlabel dies at runtime with "Run time error Invalid
class
string"
which I think is due to the " ie.label.lblHoriz" not being
the
correct
way
to
add a label control to the IE object. I don't know what
would
be
correct.
Also I don't know how to make the correct event handler for
the
mouse
move
event while the mouse is on the IE form.
Any ideas?
Dim ie as Object
Sub Addlabel(strControl As String, intLeft As Integer,
intTop As
Integer,
intWidth As Integer, intHeight As Integer, strCaption As
String)
Dim mycmd As Control
Set mycmd = Controls.Add(strControl)
mycmd.Left = intLeft
mycmd.Top = intTop
mycmd.Width = intWidth
mycmd.Height = intHeight
mycmd.BorderStyle = 1
If strCaption < "" Then
mycmd.Caption = strCaption
End If
mycmd.Visible = True
End Sub
'
' not sure about this
'
Private Sub ie_MouseMove(ByVal Button As Integer, ByVal
Shift As
Integer,
ByVal X As Single, ByVal Y As Single)
lblHoriz.Top = Y
lblVert.Left = X
End Sub
Private Sub UserForm_Initialize()
With lblHoriz
.Height = 1
.Left = 0
.Width = Me.Width
End With
With lblVert
.Width = 1
.Top = 0
.Height = Me.Height
End With
set ie = CreateObject("InternetExplorer.Application")
ie.AddressBar = False
ie.MenuBar = False
ie.Toolbar = False
ie.Width = 600
ie.Height = 750
ie.Left = 0
ie.Top = 0
ie.navigate "www.yahoo.com"
With ie
While Not .readyState = READYSTATE_COMPLETE
DoEvents
Wend
' I can control scroll bars with:
.document.parentWindow.Scroll 100, 200
.Visible = True
'Add cross hairs here --NOT CORRECT
Call UserForm1.Addlabel( "ie.label.lblHoriz",2, 10, 175, 20,
"")
Call UserForm1.Addlabel( " ie.label.lblVert",2, 20, 175, 20,
"")
.end with
"NickHK" wrote:
Gary,
On a userform with 2 labels, lblHoriz and lblVert:
Private Sub UserForm_Initialize()
With lblHoriz
.Height = 1
.Left = 0
.Width = Me.Width
End With
With lblVert
.Width = 1
.Top = 0
.Height = Me.Height
End With
End Sub
Private Sub UserForm_MouseMove(ByVal Button As Integer,
ByVal
Shift
As
Integer, ByVal X As Single, ByVal Y As Single)
lblHoriz.Top = Y
lblVert.Left = X
End Sub
NickHK
"gary" wrote in message
...
I need the ability to allow the user to change the
cursor to
a
cross
hair
that covers the entire form that detected the mouse
event.
This
is
needed
so
user can read values along sides and bottom of form as
he/she
moves
mouse
over the form. I have been unable to find any vba code
to do
this.
Gary
|