Т.е. допустим кликнул я на сферу, и она должна удалиться, удаляя её в её же событии OnClick я естественно получаю ошибку. Судя по всему нужно передать управление другому обработчику и удалить оттуда, но как грамотно это оформить в FireMonkey?
Для VCL нашёл такой способ:
const
WM_KILL_CONTROL = WM_USER+ 66; type TForm1 =class(TForm) ... private procedure WMKillControl(var msg:TMessage); message WM_KILL_CONTROL; .... procedure TForm1.WMKillControl(var msg: TMessage); var c : TControl; begin c := TControl(msg.LParam); ifnot Assigned ( c ) then Exit;
c.Free; windows.MessageBeep($FFFFFFFF); end;
procedure TForm1.Button1Click(Sender: TObject); begin // Sender.Free; // würde meistens eine Exception auslösen PostMessage(Self.Handle, WM_KILL_CONTROL, 0, Integer(Sender)); end;
Есть ли у FMX какой-то свой способ работающий под iOS как эти работают из чужого обработчика:
c[r].DisposeOf;
c[r] := nil;
и
c[r].Parent := nil;
c[r].Free;
c[r] := nil;
?
Метод Release насколько я понял это аналог Free, только отложенный; а как показала личная практика, на XE7 просто Free в мобильном приложении не достаточен, соответственно Release вероятно тоже или я ошибаюсь? (ещё не успел проверить)
Вопрос
Igor
Т.е. допустим кликнул я на сферу, и она должна удалиться, удаляя её в её же событии OnClick я естественно получаю ошибку. Судя по всему нужно передать управление другому обработчику и удалить оттуда, но как грамотно это оформить в FireMonkey?
Для VCL нашёл такой способ:
Есть ли у FMX какой-то свой способ работающий под iOS как эти работают из чужого обработчика:
и
?
Метод Release насколько я понял это аналог Free, только отложенный; а как показала личная практика, на XE7 просто Free в мобильном приложении не достаточен, соответственно Release вероятно тоже или я ошибаюсь? (ещё не успел проверить)
Изменено пользователем Brovin YaroslavСсылка на комментарий
6 ответов на этот вопрос
Рекомендуемые сообщения