Цитата:
Сообщение от 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;
Админ: Пользуемся тегами для оформления кода!
Вот, в общем-то, и все. Повторюсь - если кликать мышью по кнопке - все работает без проблем. Если использовать горячие клавиши - то выходит ошибка. Я уже было подумал, что процедуре обязательным параметром должен быть передан вызывающий его объект. Но уже чего не передавал - и саму кнопку, и форму и вообще ничего. В итоге запулил все в отдельную процедуру вообще без параметров - с тем же результатом, т.е. от мыши работает, а от горячих клавиш нет. Думал еще на то, что может какой-то из удаляемых объектов находится в фокусе, так перед удалением панели менял фокус на другой объект, не находящийся на этой панели - с тем же результатом... Чё делать - не понимаю...