views:

196

answers:

2

I have a main form and non-modal autocomplete form. How can I prevent the autocomplete form from being activated by the user, when the user clicks on the list in the autocomplete form?

So, basically I want the autocomplete form the receive the mouse click message when the users clicks, but to never become active, because it causes problems with a third-party component in the main form over which I have no control.

+4  A: 

Override CreateParams method of your form and add WS_EX_NOACTIVATE style to the extended styles.

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited;

  Params.WindowClass.ExStyle := Params.WindowClass.ExStyle or WS_EX_NOACTIVATE;
end;

(code written from memory, might contain typos)

Alex T.
Thanks, this should do it!
riot_starter
A: 

Use CreateParams (Alex T. answer) or you can try set YourForm.Enabled to False.

DiGi