Показать сообщение отдельно
  #3  
Старый 19.12.2013, 13:01
Curen Curen вне форума
Прохожий
 
Регистрация: 19.12.2013
Сообщения: 9
Версия Delphi: Delphi XE2
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
выложи минимальный проект воспроизводящий ошибку

Честно говоря, даже и не знаю, что Вам выложить, ведь уже все рассказал. В обработчике onClicke кнопки написано:
Код:
procedure TMainForm.newButtonClick(Sender: TObject);
var
Pnl : TPanel;
Rich, ObTrEd, ObTelEd : TRichEdit;
Ed : TEdit;
Bt : TButton;
TrSpBt, ObTrSpBT, TelSpBt : TSpeedButton;

begin
 Panel1.Free; //тут удаляю панель, на которой раньше находилась форма вместе со всеми объектами сразу

 Pnl := TPanel.Create(mainform); // Создаю на этой же форме эту же панель под тем же именем и теми же свойствами
 Pnl.Parent := ScrollBox1;
 Pnl.Top := 3; Pnl.Left := 3;
 Pnl.Width := 995; Pnl.Height := 294;
 Pnl.Visible := true;
 Pnl.Name := 'Panel1';
 Pnl.Caption := '';
 Pnl.BevelInner := bvNone;
 Pnl.BevelKind := bkNone;
 pnl.BevelOuter := bvNone;

 Rich := TRichEdit.Create(mainform); 
 Rich.Parent := Panel1; ... // Тут уже создаю сами объекты формы на панели. Полностью выкладывать не буду, ибо много объектов, да и код очень похож
 ...
 ShapkaEdit.SetFocus; // передаю фокус первому (сверху) объекту, чтобы пользователь сразу же мог начать вводить текст
end;
Админ: Пользуемся тегами для оформления кода!

Вот, в общем-то, и все. Повторюсь - если кликать мышью по кнопке - все работает без проблем. Если использовать горячие клавиши - то выходит ошибка. Я уже было подумал, что процедуре обязательным параметром должен быть передан вызывающий его объект. Но уже чего не передавал - и саму кнопку, и форму и вообще ничего. В итоге запулил все в отдельную процедуру вообще без параметров - с тем же результатом, т.е. от мыши работает, а от горячих клавиш нет. Думал еще на то, что может какой-то из удаляемых объектов находится в фокусе, так перед удалением панели менял фокус на другой объект, не находящийся на этой панели - с тем же результатом... Чё делать - не понимаю...
Ответить с цитированием