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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2011, 22:54   #1
Борис Владимирович
 
Регистрация: 01.12.2011
Сообщений: 4
По умолчанию процедуры в delphi.

процедура
x:=5;
y:=5;
=====какой-то код====
end;


мне требуется записать в эту процедуру код, который должен изменять x и у, находящиеся непосредственно в самой процедуре, но меняться они должны только после того как я нажму на кнопочку, располагающуюся на панели TtoolBar.

Последний раз редактировалось Борис Владимирович; 01.12.2011 в 23:06.
Борис Владимирович вне форума Ответить с цитированием
Старый 01.12.2011, 22:57   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

плюсую любого, кто сможет внятно объяснить, что написано выше )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 01.12.2011, 23:08   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

запоминайте где то что было нажатие на кнопку, а потом просто if.

Цитата:
плюсую любого, кто сможет внятно объяснить, что написано выше )
1)некоторым на репу пофиг.
2)вы не сможете поднять репутацию никому.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.12.2011, 23:50   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

БВ, вынесите объявление X,Y за пределы процедуры. В обработчике клика по кнопочке присвойте в эти переменные какие нужно вам значения.
Цитата:
меняться они должны только после того как я нажму на кнопочку
Это условие выполнено. Обращайтесь к вашей процедуре и используйте эти переменные. На большее фантазии исходя из вашего ТЗ не хватает
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.12.2011, 02:11   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Цитата:
мне требуется записать в эту процедуру код, который должен изменять x и у, находящиеся непосредственно в самой процедуре, но меняться они должны только после того как я нажму на кнопочку,
Это не возможно.

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

Тут 2 решения:
1. передовать в вызываемую процедуру новые значения через параметры и плясать от этого.
2. Воспользоваться глобальными переменными.

Второе не рекоммендуется(А что если како-то TtHread влезет в глоб. переменную и изменит её в ходе выполнения процедуры SAmeProc? Будет пИичально...).

допустим так:
Код:
procedure TForm1.SameProc(aNewX,aNewY:Integer; const aBtnPushed:Boolean = false); //обьявлено в public формы
var
  x,y:Integer; //Локальные переменные, инициал. только при переходе компилятора к этому коду. И уничтожаются после выхода из кода процедуры. 
begin
 if aBtnPushed then //Если кнопка нажата,
 begin
  x:=aNewX; //в локальную переменную зададим новое значение.
  y:=aNewY;
 end;
  
 if ((x<>0) or (y<>0)) then
 begin
 //Если X и Y локальные были изменены сотворим действие.
 end;
end;

procedure TForm1.ToolButtonClick(Sender: Tobject);
begin
  SameProc(0,0,True); //кнопка нажата, переменые не поменялись
  SameProc(100,-100,True); //кнопка нажата, переменые поменялись, и в вызванной процедуре произошли действия. 
end;

Последний раз редактировалось Человек_Борща; 02.12.2011 в 02:20.
Человек_Борща вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции и процедуры на Delphi a_klimov Помощь студентам 1 21.11.2011 12:49
Процедуры(Delphi) CAMOBAP Помощь студентам 3 14.03.2011 13:28
Процедуры и функции (Delphi) <Maria> Помощь студентам 2 13.10.2010 19:29
Хранимые процедуры в Delphi 5 lexaltd БД в Delphi 2 15.02.2010 13:24
объединить процедуры (Delphi) Joy Помощь студентам 4 28.05.2009 17:23