Як перевірити, чи створена форма
Господа програмісти! Підкажіть.
Є MDI додаток. При натисканні на кнопку створюється форма з DBGrid. Викликається метод Show. Як зробити, щоб при повторному натисканні форма не створювалася ще раз, а просто показувалася. Тобто як перевірити, чи створена MDIChild форма.
if MDIChild1 <> nil then.
або заздрості прапор
за яким небудь ознакою форми Caption наприклад.
Form1.MDIChildCount
Form1.MDIChildren
З MDI будь уважним: прога точно не знає що з чілдом (є він чи ні) поетому найкраще робити так:
при "натисненні на кнопку":
if FrmTTN = nil then FrmTTN: = TFrmTTN.Create (self);
FrmTTN.WindowState: = wsMaximized;
FrmTTN.Show;
procedure TFrmMDIChild.FormClose (Sender: TObject; var Action: TCloseAction);
begin
Action: = CaFree;
end;
procedure TFrmTTN.FormDestroy (Sender: TObject);
begin
FrmMDIChild: = nil;
end;
Я довго шукав свого часу рішення цього питання і ось до чого прийшов
function ExistsForm (S: String): Boolean;
var i: integer;
begin
result: = False;
for i: = 0 to screen.FormCount-1 do
if uppercase (screen.Forms [i] .name) = uppercase (s) then result: = True;
end;
параметр - ім'я форми. Може і не шедевр, але працює безвідмовно.
Все це працює (і рішення Sergey13, і Fool). Тільки от якщо форму мінімізувати, то вона знову креатив. Хоча варто в OnClose Action: = caFree? Виходить дві створені форми.
Вибачте панове. Все запрацювало. Велике дякую.