18 / 17 / 0
Регистрация: 27.11.2012
Сообщений: 353
1

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

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

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

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

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

Т.е. сделал Модуль2 и больше не трогаю,
из любого другого создаю его и он выполняет нужную процедуру создателя.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.06.2018, 21:59
Ответы с готовыми решениями:

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

Не получается вызвать процедуру из модуля объекта
Есть обычное приложение 1С. пишу внешнюю обработку, в модуле объекта указано наименование Процедура...

Составить программу, вызывающую процедуры и функции созданного модуля.
Подскажите пожалуйста, как разработать библиотечный модуль. program abc; uses crt; var...

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

4
5012 / 3909 / 1292
Регистрация: 14.04.2014
Сообщений: 17,996
Записей в блоге: 18
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
18 / 17 / 0
Регистрация: 27.11.2012
Сообщений: 353
21.06.2018, 23:35  [ТС] 3
Спасибо большое, krapotkin!
Именно то, что мне нужно - оказалось все невероятно просто, а я через указатели пытался
0
пофигист широкого профиля
4398 / 2896 / 820
Регистрация: 15.07.2013
Сообщений: 16,718
22.06.2018, 02:58 4
Цитата Сообщение от xVahax Посмотреть сообщение
без явного указания имени формы: Form1
Без явного указания имени переменной, хранящей указатель на конкретный экземпляр формы достаточно передать ссылку на экземпляр формы, а не на её метод.
Тем более что в примере krapotkin она уже явно передана и хранится в свойстве f.Owner.
Тем более, что при этом доступны все public методы вызвавшей формы, а не один конкретный.
0
5012 / 3909 / 1292
Регистрация: 14.04.2014
Сообщений: 17,996
Записей в блоге: 18
22.06.2018, 06:56 5
northener, нюанс в том, что Unit2 здесь ничего не знает о Unit1
и это в большинстве случаев более чем хорошо )

Добавлено через 20 секунд
Цитата Сообщение от xVahax Посмотреть сообщение
я через указатели
это и есть указатели)))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.06.2018, 06:56

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Составить программу, вызывающую процедуры и функции созданного модуля
Составить программу, вызывающую процедуры и функции созданного модуля. Пользоваться информацией из...

Составить программу, вызывающую процедуры и функции созданного модуля.
Разработать библиотечный модуль program fds; var j,l:string;{peremenna9 tipa stroka}...

Составить программу, вызывающую процедуры и функции созданного модуля.
Составить программу, вызывающую процедуры и функции созданного модуля. Разработать библиотечный...

Разработать библиотечный модуль вызывающую процедуры и функции созданного модуля
Разработать библиотечный модуль вызывающую процедуры и функции созданного модуля. Пользоваться...


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

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

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