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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2013, 20:47   #1
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию Запуск процедуры из переменной

Есть две кнопки. Как сделать что бы по нажатию на вторую произошла запись в переменную, а затем из этой переменной произошел запуск процедуры.
Такой код не устраивает:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Клик1');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Button1.Click;
end;
Нужно что то типа такого
Код:
s:='Form1.'+'Button1'+'.Click';
В переменную вписали что нужно вызывать. А вот как теперь запустить эту переменную s?
Или подскажите как подобное можно реализовать?
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 05.05.2013, 21:45   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

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

При необходимости запускать выбранную процедуру или функцию создается тип такой процедуры/функции, описывается соответствующая переменная и в эту переменную записывается адрес нужной функции. После этого записанную функцию можно вызвать по имени переменной.
s-andriano вне форума Ответить с цитированием
Старый 05.05.2013, 22:03   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Но можно так =)
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Button1Click');
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  BtnClick:TNotifyEvent;  //Prototype of procedure(Sender:TObject);
begin
  BtnClick:=Button1Click;
  BtnClick(self);
end;
Человек_Борща вне форума Ответить с цитированием
Старый 05.05.2013, 22:07   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Код:
if s='Form1.'+'Button1'+'.Click' then
Button1.Click;
eval вне форума Ответить с цитированием
Старый 05.05.2013, 22:15   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

а ваще если есть ртти то можно
eval вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов и запуск процедуры Евгений_Магистр Общие вопросы Delphi 5 24.04.2012 11:33
Запуск процедуры drossell Помощь студентам 2 22.11.2010 11:28
Запуск вшеншнего приложения с параметром от переменной INT Leximus Общие вопросы Delphi 3 02.10.2010 15:37
Запуск процедуры из процедуры с дополнением 1sal1 Общие вопросы Delphi 3 06.10.2008 21:54
Потеря переменной при выходи из процедуры Kaz Помощь студентам 3 07.06.2007 03:24