Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2021, 16:20   #1
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 603
По умолчанию Общая процедура-реакция

Итак
Большую часть "обычных" и универсальных (т.е. которые могут пригодиться в других программах) процедур я создал себе еще один Юнит. И подгружаю его через Uses

Но вот что меня интересует - можно ли создать процедуру-реакцию, которая будет подгружаться с внешнего юнита? Ну и чтобы она была общей для всех форм программы

Для чего это надо:
Например, процедура, для того чтобы при вводе в Edit игнорировалось все, кроме цифр
Kronos913 вне форума Ответить с цитированием
Старый 23.06.2021, 18:12   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

а ЕСЛИ в какой-то момент потребуется выполнить несколько разных "общих" действий.
или сделать что-то кроме того есть в "общей"

лучше делать так
https://programmersforum.ru/showthread.php?t=337201
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 23.06.2021 в 18:19.
evg_m вне форума Ответить с цитированием
Старый 24.06.2021, 03:05   #3
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от Kronos913 Посмотреть сообщение
можно ли создать процедуру-реакцию, которая будет подгружаться с внешнего юнита?
Нельзя. Любой метод класса имеет неявный параметр Self, который передаёт ссылку на конкретный экземпляр класса, который его вызвал. Это магия компилятора. В своём коде вы это сделать не сможете. Так что только то, что предложил evg_m
northener вне форума Ответить с цитированием
Старый 25.06.2021, 07:38   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Сработало в D7:
Код:
procedure myproc(Self, Sender: TObject);
begin
  ShowMessage('myproc: ' + IntToStr(integer(Self)));
  Form1.btn1.OnClick := Form1.btn1Click;
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  ShowMessage('btn1Click: ' + IntToStr(integer(Self)));
  @btn1.OnClick := @myproc;
end;
Но насколько это корректно, не скажу.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 04.07.2021, 04:59   #5
D1973
Пользователь
 
Регистрация: 04.04.2018
Сообщений: 28
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
насколько это корректно
Я бы сказал, что это некорректно - обращение к объекту класса из функции, внешней по отношению к этому классу: что это, как не прямое нарушение принципа инкапсуляции?
D1973 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Си. Общая память Bayern_M Общие вопросы C/C++ 8 02.07.2015 09:15
общая папка CraZZy RabbIt Общие вопросы Delphi 15 18.02.2012 12:57
Общая переменная и процедура для двух форм? Polotenchik Общие вопросы Delphi 2 19.07.2009 12:20
Общая переменная Артэс Общие вопросы C/C++ 4 18.06.2009 16:24
Общая переменная А.Брей Помощь студентам 2 20.05.2007 18:13