Как получить список всех открытых форм моего программного обеспечения? - PullRequest
6 голосов
/ 23 сентября 2011

Я хочу попросить пользователя закрыть все открытые формы, прежде чем закрыть мое приложение.

Как автоматически получить список из открытых форм?

Я использую Delphi 2006, и не использую авто-создание формы, но я использую автоматически созданную форму с ссылкой var с Application.CreateForm.

С уважением.

Ответы [ 4 ]

17 голосов
/ 23 сентября 2011

Посмотрите на Screen.FormCount и Screen.Forms.

3 голосов
/ 23 сентября 2011

Возможное решение (я использую в C #) - хранить каждый открытый экземпляр формы в списке var.Например, у вас может быть глобальный список с именем openForms ;когда создается каждая форма, сама форма может добавить свою ссылку на openForms и удалить ее при закрытии.
Когда пользователь пытается закрыть ваше приложение, вы можете проверить, что число списков больше нуля и, еслипользователь хочет действительно закрыть, вы корректно закрываете каждый экземпляр формы, содержащийся в opensForms, прежде чем закрывать приложение.

1 голос
/ 23 сентября 2011

Я использую

Main.MDIChildCount >0

для детей от

0 голосов
/ 03 марта 2016
var
i:integer;
begin
  with Application do
   for i:=0 to componentcount-1 do
    if components[i] is TMyCustomForm          //your form class here, or simply TForm
    then showmessage(components[i].Name);
end;

Показывает формы MDI и не-MDI.

...