Jeremy Mullin
Jeremy Mullin

Reputation: 4240

How can I get the Delphi IDE's Main Form?

I'm writing a property editor for Delphi and I would like it to show up on the correct screen for multi-monitor support. In order to position it, I would like a reference to the "main" form for the Delphi IDE.

I've tried using the Application's MainForm property, and the Application object itself, but neither seems to work. I believe this is because the MainForm is actually the hidden TApplication instance referenced in this article by Nathanial Woolls (search for "application form"):

http://www.installationexcellence.com/articles/VistaWithDelphi/Original/Index.html

Does anyone know how to get a handle to the visible main form for the IDE. I'm trying to avoid something cheesy like iterating all forms and searching for "CodeGear RAD Studio" in the caption.

Upvotes: 3

Views: 3150

Answers (2)

Ondrej Kelle
Ondrej Kelle

Reputation: 37211

The IDE's main form is Application.MainForm. My quick test design package:

procedure DoStuff(Form: TCustomForm);
var
  S: string;
begin
  S := Form.Caption;
  Form.Caption := S + ' - this one';
  try
    ShowMessage(Format('%s [%s] on monitor %d', [Form.Name, Form.ClassName, Form.Monitor.MonitorNum]));
  finally
    Form.Caption := S;
  end;
end;

initialization
  DoStuff(Application.MainForm);

This in my case displays "AppBuilder [TAppBuilder] on monitor 0" and I can see the " - this one" suffix in the main form's caption. What doesn't seem to work in your case?

Upvotes: 4

Uli Gerhardt
Uli Gerhardt

Reputation: 14001

IIRC the main form is called TAppBuilder, so something like FindWindow('TAppBuilder',nil) might be a starting point for you.

Upvotes: 2

Related Questions