Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Edit control won't receive Focus

Posted on 1998-03-30
10
269 Views
Last Modified: 2010-04-06
I'm beginning to think this problem is a Delphi problem....
A TBitBtn is pressed, the click event executes a function which does some various tasks, then it sets focus on an Edit control.  Well, the focus never really actually goes to the Edit control.  Why?  What can I do to fix this?

I have tried the following (keep in mind - No other processing/code occurs after the SetFocus.):
-Tested the currently ActiveControl and it actually shows the Edit control (but it still doesn't get focus).
-Executing ProcessMessages before and after the SetFocus.
-Setting focus to the form first, then the control.
-Re-showing the form and setting focus to the control.
0
Comment
Question by:bgold
10 Comments
 

Expert Comment

by:dotan
ID: 1361099
Try to set the focus to the edit control from the form by
using:

Form1.FocusControl(Edit1)
0
 

Author Comment

by:bgold
ID: 1361100
Unfortunately, your idea did not work.  I had also tried SetFocusedControl which also didn't work.  Why do you think the TBitBtn (on an MDI form, by the way) is not allowing focus to go from it to the child form control?  Other buttons work perfectly fine!
0
 

Expert Comment

by:phillipf
ID: 1361101
Try this to set focus.

form1.activeControl := edit1;


0
Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

 

Expert Comment

by:paulsinn
ID: 1361102
Have you set the 'Tabstop' property to True?

0
 

Author Comment

by:bgold
ID: 1361103
So far, none of the "obvious" type answers have worked.  Setting the active control did not work either.
0
 

Expert Comment

by:BigMadDrongo
ID: 1361104
If you send me your project to James_R_Bennett@SBPHRD.COM I'll have a look and see if I can make sense of why it's not recieving focus.

BigMadDrongo
0
 
LVL 5

Expert Comment

by:inter
ID: 1361105
Hi,
The thing you mentioned works fine when tested. Try to set the focus with the following:

PostMessage(Edit1.handle, wm_setfocus,0,0);
Regards,
Igor

0
 

Author Comment

by:bgold
ID: 1361106
Yes, Inter....that worked!!!  Finally!  If you resubmit it as an answer to my question, I'll award you the points.  By the way, do you have any explanation as to why that was the only thing that worked.  And just for kicks, why would a double-click event in a listbox not fire off?
0
 
LVL 3

Expert Comment

by:rickpet
ID: 1361107
You should always wrap focus calls around
  if WinControl.CanFocus then
    WinControl.SetFocus;

On to your first question...I would assume that you are doing something in your "function which does some various tasks".  From Danny Thorpe's book, Delphi Component Design..."WM_KillFocus Windows message has the special limitation that you should not cause a focus change while processing that message.  Failure to observe this will crash Windows."  So I would assume your doing something else to kick off a WM_KillFocus message to be processed, and Delphi will not let you move focus.  Now what your doing to kick off this message???

Rick Peterson
0
 
LVL 5

Accepted Solution

by:
inter earned 150 total points
ID: 1361108
Hi friends,
I have currenly no time to find the real cause but I promise it in few days. (Some kind of FINALS I have to pass)
The answer is to use:
PostMessage(Edit1.handle, wm_setfocus,0,0);
Regards,
Igor
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

The uses clause is one of those things that just tends to grow and grow. Most of the time this is in the main form, as it's from this form that all others are called. If you have a big application (including many forms), the uses clause in the in…
Creating an auto free TStringList The TStringList is a basic and frequently used object in Delphi. On many occasions, you may want to create a temporary list, process some items in the list and be done with the list. In such cases, you have to…
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below. https://filedb.experts-exchange.com/incoming/2017/03_w12/1151775/Permutations.txt https://filedb.experts-exchange.com/incoming/201…

840 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