Я решил пойти по тому же пути. Есть некая главная форма с кнопкой, которую пользователь нажимает, выбирает на другой форме что-то и, по идее, должна выполниться какая процедура на первой форме.
Главных форм несколько, т.к. во многих местах приложения пользователь что-то выбирает. А форма выбора для всех одна.
Вопрос
x11
Т.к. у FMX/Android нет модальных форм, то я взял за пример работу с диалогами.
Есть работающий пример
TDialogService.InputQuery(cap, ['Введите имя: '], Val, InputDialogHandlerEditTelName); .... .... .... procedure TfmEditObject.InputDialogHandlerEditTelName(const AResult: TModalResult; const AValues: array of string); begin ... ... end;
Я решил пойти по тому же пути. Есть некая главная форма с кнопкой, которую пользователь нажимает, выбирает на другой форме что-то и, по идее, должна выполниться какая процедура на первой форме.
Главных форм несколько, т.к. во многих местах приложения пользователь что-то выбирает. А форма выбора для всех одна.
Я добавил в проект модуль, где написал:
type TCallBackProcSelectRef = reference to procedure(idRegion: integer; constsFullRegion: string); ... procedure CallBackProcSelect(idRegion: integer; const sFullRegion: string); implementation procedure CallBackProcSelect(idRegion: integer; const sFullRegion: string); begin fmMain.lbSelRegion.Text := sFullRegion; fmMain.idRegion := idRegion; end;
На форме выбора есть процедура
private procedure SelRegion2(CallBackProcSelectRef: TCallBackProcSelectRef); ... ... procedure TfmTree.SelRegion2(CallBackProcSelectRef: TCallBackProcSelectRef); begin CallBackProcSelectRef(TreeView1.Selected.Tag, TreeView1.Selected.Text); end;
здесь же, на форме выбора, на кнопке выбора есть строка:
SelRegion2(CallBackProcSelect);
вроде бы всё так же, как и с диалогами, но компилятор ругается:
Incompatible types: 'TCallBackProcSelectRef' and 'Procedure'
что я не правильно понял в анонимных процедурах, что я делаю не так?
Ссылка на комментарий
19 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.