Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
xVahax
18 / 17 / 0
Регистрация: 27.11.2012
Сообщений: 353
1

Вызвать из динамически созданного модуля процедуру создавшего модуля

21.06.2018, 21:59. Просмотров 678. Ответов 4
Метки нет (Все метки)

Всем привет.
Не знал как сформулировать тему - поэтому не бейте меня.

Такая ситуация:
Есть Модуль1 - форма (назовем Form1), кнопка и процедура (RunRun).
Есть Модуль2 - форма (назовем Form2) и кнопка (btStart).

Из Модуля1 создаю форму Модуля2 по нажатию кнопки:
Delphi
1
Form2:=TFormTwo.Create(Self);
Как мне сделать так, чтобы по событию нажатия кнопки btStart (Модуль2)
вызывалась процедура RunRun (Модуль1), но без явного указания имени формы: Form1.RunRun?

Т.е. сделал Модуль2 и больше не трогаю,
из любого другого создаю его и он выполняет нужную процедуру создателя.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2018, 21:59
Ответы с готовыми решениями:

Как создать процедуру обработки события OnChange для КАЖДОГО динамически созданного ComboBox?
В программе создаю несколько компонентов типа TComboBox var Form1: TForm1;...

Очистка динамически созданного Image
Не знаю как реализовать функцию очистки динамически созданного Image Создаю...

Удаление динамически созданного объекта
Код создания объекта: procedure TForm1.Book_Create(Sender: TObject); begin...

Процедура для динамически созданного объекта
Всем привет! Проблема в следующем: динамически создаю кнопки и записываю их в...

Данные из динамически созданного TEdit в массив
for i:=1 to n do begin with TEdit.Create(Form1) do begin Parent...

4
krapotkin
3444 / 3047 / 1051
Регистрация: 14.04.2014
Сообщений: 14,770
Записей в блоге: 15
21.06.2018, 22:54 2
Лучший ответ Сообщение было отмечено xVahax как решение

Решение

вариант как это сделать довольно прост - передать ссылку на процедуру и готово
вообще именно так заполняются все ссылки на обработчики всех событий компонентов
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
Type
TObjProc=procedure of object;
 
TForm2=class
..
pr:TObjProc;
end;
 
procedure TForm2.b1Click(...);
begin
  pr;
end;

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.MyProc();
begin
....
end;
 
procedure Tform1.Button1Click(Sender:TObject);
begin
f:=TForm2.Create(Self);
f.p:=MyProc;
f.showModal();
f.free;
end;
1
xVahax
18 / 17 / 0
Регистрация: 27.11.2012
Сообщений: 353
21.06.2018, 23:35  [ТС] 3
Спасибо большое, krapotkin!
Именно то, что мне нужно - оказалось все невероятно просто, а я через указатели пытался
0
northener
пофигист широкого профиля
3428 / 2327 / 631
Регистрация: 15.07.2013
Сообщений: 13,783
22.06.2018, 02:58 4
Цитата Сообщение от xVahax Посмотреть сообщение
без явного указания имени формы: Form1
Без явного указания имени переменной, хранящей указатель на конкретный экземпляр формы достаточно передать ссылку на экземпляр формы, а не на её метод.
Тем более что в примере krapotkin она уже явно передана и хранится в свойстве f.Owner.
Тем более, что при этом доступны все public методы вызвавшей формы, а не один конкретный.
0
krapotkin
3444 / 3047 / 1051
Регистрация: 14.04.2014
Сообщений: 14,770
Записей в блоге: 15
22.06.2018, 06:56 5
northener, нюанс в том, что Unit2 здесь ничего не знает о Unit1
и это в большинстве случаев более чем хорошо )

Добавлено через 20 секунд
Цитата Сообщение от xVahax Посмотреть сообщение
я через указатели
это и есть указатели)))
0
22.06.2018, 06:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2018, 06:56

Drag and drop динамически созданного объекта
Есть объект: TMyObjects = class (TGraphicControl) property OnDragDrop;...

Получить заголовок дочернего динамически созданного компонента
Доброго времени суток! Подскажите пожалуйста, каким образом можно обратиться к...

Как узнать caption динамически созданного компонента (панели)
// Создаем панель FormsList.Panel := TPanel.Create(pWindows); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru