Solved

Forms Acitvation

Posted on 1998-08-27
9
183 Views
Last Modified: 2010-04-30
How can i open a vb form that can't get focus? (working with vb5 SP3,Win95)
0
Comment
Question by:Avi082798
9 Comments
 
LVL 1

Expert Comment

by:blwatkins
Comment Utility
I'm kind of confused on what you are trying to achieve?  You have a form that "Can't" get focus or you don't want it to get the focus when you load it?  Can you expand on you situation a little bit?
0
 
LVL 9

Expert Comment

by:cymbolic
Comment Utility
Once you show the form, it can get focus via mouse selection, but you can place event logic in the gotfocus event to shift focus back to another form, if that helps you any.  
0
 
LVL 9

Expert Comment

by:Dalin
Comment Utility
Try this:

' 1. In the general declaration area of your form (say form2 is the one you don't want focus), add:
Private Declare Function GetForegroundWindow Lib "user32" () As Long

'              2. drop a timer to your form (form2), set the interval to 5 (you can adjust this).
             
               3. In the form2_gotfocus Event, add: Timer1.enabled = True

'              3. in the timer1_timer event, add:
             Timer1.Enabled = false
'            If GetForegroundWindow() = Me.hWnd Then Form1.Show (or what ever form you want focus to be on)
'              This will give away focus in 10 milliseconds

Regards
Dalin
0
 

Author Comment

by:Avi082798
Comment Utility
This won't work because the form will filcker. And that's the one thing i don't want. But Thanks anyway.

Regards
Avi
0
Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

 

Expert Comment

by:FrankG082898
Comment Utility
I am assuming you are talking about a Form with the enabled property set to False.

Here's what I tried:

A project with two forms, Form1 and Form2.  A command button on Form1.  Enabled set to False on Form2.

Code in Form2:

Option Explicit

Public Sub ShowMe(frmCalling As Form)
    Me.Show vbModeless
    frmCalling.SetFocus
End Sub

Code in Form1:

Private Sub Command1_Click()
    Form2.ShowMe Me
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Dim i As Integer
   
    For i = 1 To Forms.Count - 1
        If Forms(i).Caption = "Form2" Then
            Unload Form2
        End If
    Next i
End Sub

I'm not sure this is what you want, but what I've basically done is put a method in Form2 that shows itself and returns focus to whatever form wants it opened.  The Unload event in Form1 is clean up to unload Form2 if it has been opened.  If you don't do this, the app won't terminate.


0
 

Expert Comment

by:FrankG082898
Comment Utility
Sorry, I noticed an error in my proposed solution.  In Form_Unload, i should go from 0 to Forms.Count - 1.
0
 

Author Comment

by:Avi082798
Comment Utility
Thanks, but it wont do it for me, your sample flickers and thats what i don't want.
0
 

Expert Comment

by:FrankG082898
Comment Utility
I'm not sure what you mean by "flickers".  I noticed that the previous solution allows you to click and momentarily give focus to the window which flashs the title bar from blue to gray.  Didn't notice that on my solution.  But, again, I guess I don't know what "flickers" means.
0
 
LVL 2

Accepted Solution

by:
Bhargava earned 200 total points
Comment Utility
Check if this helps

Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Public Const HWND_BOTTOM = 1
Public Const SWP_NOACTIVATE = &H10

Private Sub Form_Paint()
    Me.AutoRedraw = False
    SetWindowPos Me.hwnd, HWND_BOTTOM, 0, Screen.Height / 2, 0, Screen.Width / 2, SWP_NOACTIVATE
    Me.AutoRedraw = True
End Sub
0

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Introduction In a recent article (http://www.experts-exchange.com/A_7811-A-Better-Concatenate-Function.html) for the Excel community, I showed an improved version of the Excel Concatenate() function.  While writing that article I realized that no o…
You can of course define an array to hold data that is of a particular type like an array of Strings to hold customer names or an array of Doubles to hold customer sales, but what do you do if you want to coordinate that data? This article describes…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now