Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

Привет всем!
Из названия вопроса, думаю, сложно понять, что именно мне нужно
Попытаюсь расписать поподробнее:
на фоме есть несколько кнопок, связанных с моими процедурами, и 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
Репутация: 387
По умолчанию

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

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

Как вариант:
Код:

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
Репутация: 51
По умолчанию

всем спасибо, особенно 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,842
Репутация: 6832
По умолчанию

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

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


00:42.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru