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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2010, 12:00   #1
iiunbreakableii
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 89
По умолчанию как повторно вызвать процедуру?

Привет всем!
Из названия вопроса, думаю, сложно понять, что именно мне нужно
Попытаюсь расписать поподробнее:
на фоме есть несколько кнопок, связанных с моими процедурами, и radiogrpoup.
Необходимо после клика на элемент из radiogroup выполнить процедуру, которая была вызвана последней.
У меня есть один вариант, но он мне как-то не по душе:
Код:
...
type
  TMainForm = class(TForm)
    procedure myproc1;
    procedure myproc2;
    procedure myproc3;
...
    procedure RedoLastProcedure(Code:integer);
    procedure RadioGroup1Click(Sender: TObject);
...
var
  LastProcedureCode:integer;
...
procedure TMainForm.myproc1;
begin
  LastProcedureCode:=0;
  ...
end;

procedure TMainForm.myproc2;
begin
  LastProcedureCode:=1;
  ...
end;

procedure TMainForm.myproc3;
begin
  LastProcedureCode:=2;
  ...
end;
...
procedure TMainForm.RedoLastProcedure(Code: integer);
begin
  case Code of
    0: myproc1;
    1: myproc2;
    2: myproc3;
    ...
  end;
...
end;

procedure TMainForm.RadioGroup1Click(Sender: TObject);
begin
  RedoLastProcedure(LastProcedureCode);
end;
Есть варианты получше (очень надеюсь)?
iiunbreakableii вне форума Ответить с цитированием
Старый 24.06.2010, 12:19   #2
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

По-моему и так хорошо (я когда суть вопроса прочитал, сразу же подумал о некой глобальной переменной, в которую будет производиться запись номера последней использованной процедуры, а потом смотрю - у вас в коде тоже самое)!
Чем вас собственный вариант не устраивает?
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 24.06.2010, 12:27   #3
iiunbreakableii
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 89
По умолчанию

даже и не знаю, может тем, что процедура RedoLastProcedure может разростись. я надеялся что можно это дело упростить, люблю оптимизировать
iiunbreakableii вне форума Ответить с цитированием
Старый 24.06.2010, 12:47   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Как вариант:
Код:
var
  LastProcedureCode:procedure;
...
procedure TMainForm.myproc3;
begin
  LastProcedureCode;
  ...
  LastProcedureCode:=myproc3;
end;
...
Цитата:
что процедура RedoLastProcedure может разростись
Задача какая?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.06.2010, 13:04   #5
iiunbreakableii
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 89
По умолчанию

всем спасибо, особенно Stilet!
Можно сказать что всё упростилось до одной строки
Код:
procedure TMainForm.myproc3;
begin
  RadioGroup1.OnClick:=myproc3;
  ...
end;
Вопрос закрыт : )

Последний раз редактировалось iiunbreakableii; 24.06.2010 в 13:07.
iiunbreakableii вне форума Ответить с цитированием
Старый 24.06.2010, 13:09   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Можно сказать что всё упростилось до одной строки
ох не нравится мне такое закрытие...
Цитата:
Вопрос закрыт : )
Ну и славненько.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.06.2010, 13:24   #7
iiunbreakableii
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 89
По умолчанию

а чем именно не нравится, если не секрет?
iiunbreakableii вне форума Ответить с цитированием
Старый 24.06.2010, 13:29   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А тем что ты постоянно перецепляешь обработчики... Так и пардонте, фаркоп, поломается... (шутка)
т.е. я хочу сказать что ты сам потом можешь запутаться в том что когда и где у тебя вызывается. Будешь грешить на одну процедуру, а она оказывается в этот момент времени вообще не задействована.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.06.2010, 13:32   #9
iiunbreakableii
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 89
По умолчанию

буду предельно внимателен, сенсей
iiunbreakableii вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
писал программу вылезло "попытка вызвать процедуру как функцю" объясните че не так PlayHard Паскаль, Turbo Pascal, PascalABC.NET 8 15.05.2010 00:25
вызвать процедуру fize Помощь студентам 4 14.01.2010 01:51
как вызвать процедуру? ai\ekcah^p Паскаль, Turbo Pascal, PascalABC.NET 4 25.06.2009 11:21
Как вызвать процедуру ??? Marat Помощь студентам 8 02.03.2007 15:11