6.3 Визуальное программирование в среде Lazarus
____________________________________________________________________
После того, как нам форма уже не нужна, мы ее закрываем оператором
Form2.Close;
Но закрытие формы еще не означает, что она удалена из памяти. Она еще
"жива зараза" и мы можем в любой момент ее снова показать методом
ShowModal, на случай, если пользователь повторно запустит функцию поиска.
Форма будет "окончательно" уничтожена после закрытия главного окна приложения. Следовательно, перед созданием формы мы должны проверить,
может быть, она уже была создана. Теперь уже перед оператором
Application.CreateForm(TForm2, Form2);
вставьте оператор
if not Assigned(Form2) then
Приведу окончательную редакцию обработчика Memo1KeyDown:
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if((Key = ord('F')) and (ssCtrl in Shift)) then begin
Memo1.SelStart:= 0;
Memo1.SelLength:= 0;
if not Assigned(Form2) then Application.CreateForm(TForm2, Form2);