![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 24.03.2007
Сообщений: 314
|
![]()
Есть большое количество почти одинаковых процедур. Как можно одну из них вызвать рендомом?
|
![]() |
![]() |
![]() |
#2 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
Сгенерировать случайное число "а", затем
Код:
|
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,692
|
![]()
или так
![]() Код:
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 24.03.2007
Сообщений: 314
|
![]()
все гениальное просто!! спасибо большое, а то я уже в такие дебри полезла...
только вот теперь вопрос, почему когда я вот так вызываю процедуру, то оно пишет, что недостаточно параметров ShC3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); точнее я знаю почему - потому что нажатия на кнопку не происходит и ему неоткуда брать значения этих параметров. Как ее правильно вызвать? ShC3MouseDown(ShC3; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); - а остальные параметры? Последний раз редактировалось yulia; 20.10.2008 в 17:14. |
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,692
|
![]()
А у "ShC3" есть процедура OnMouseDown. Если да, то ничего вызывать не нужно, а просто присвоить указатель одной процедуре, другой:
ShC3.OnMouseDown:=ShC3MouseDown; И тогда все будет работать автоматически. |
![]() |
![]() |
![]() |
#6 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
Переменная должна быть объявлена глобальной.
И в первых строках вашего обработчика Код:
Иначе придется переопределять стандартную процедуру OnMouseDown. |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 24.03.2007
Сообщений: 314
|
![]()
спасибо, оно запустилась.... но процедуру, как я понимаю, не вызывает.
Процедура сама имеет вид: procedure TForm1.ShC3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ShC3.Brush.Color:=BelKlavNag; midiOutShortMsg (hmidi, $3C90+((vel) * $10000)); end; ну и потом я пишу: procedure TForm1.Button3Click(Sender: TObject); var i:integer; begin randomize; i:=random(24); case i of 0: begin ShC3.OnMouseDown:=ShC3MouseDown; ShC3.OnMouseUp:=ShC3MouseUp; end; ... и ничего не происходит ((( |
![]() |
![]() |
![]() |
#8 | ||
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() Цитата:
Цитата:
Где у вас сам вызов процедуры ShC3MouseDown ??? Последний раз редактировалось mihali4; 20.10.2008 в 18:40. |
||
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 24.03.2007
Сообщений: 314
|
![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вызов процедуры | igbizon | Общие вопросы Delphi | 5 | 02.09.2008 10:44 |
Вызов процедуры | Kashp | Общие вопросы Delphi | 4 | 31.03.2008 16:22 |
Вызов процедуры | Stanislav | Общие вопросы Delphi | 9 | 22.11.2007 19:01 |
Вызов процедуры | Илья Кибель | Помощь студентам | 7 | 17.09.2007 19:43 |
Вызов процедуры | Monoflextor | Общие вопросы Delphi | 2 | 28.04.2007 17:32 |