|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.10.2008, 16:25 | #1 |
Форумчанин
Регистрация: 24.03.2007
Сообщений: 314
|
случайный вызов процедуры
Есть большое количество почти одинаковых процедур. Как можно одну из них вызвать рендомом?
|
20.10.2008, 16:37 | #2 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Сгенерировать случайное число "а", затем
Код:
|
20.10.2008, 16:41 | #3 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
или так
Код:
|
20.10.2008, 16:49 | #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. |
20.10.2008, 17:48 | #5 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
А у "ShC3" есть процедура OnMouseDown. Если да, то ничего вызывать не нужно, а просто присвоить указатель одной процедуре, другой:
ShC3.OnMouseDown:=ShC3MouseDown; И тогда все будет работать автоматически. |
20.10.2008, 17:53 | #6 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Переменная должна быть объявлена глобальной.
И в первых строках вашего обработчика Код:
Иначе придется переопределять стандартную процедуру OnMouseDown. |
20.10.2008, 18:20 | #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; ... и ничего не происходит ((( |
20.10.2008, 18:38 | #8 | ||
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Цитата:
Цитата:
Где у вас сам вызов процедуры ShC3MouseDown ??? Последний раз редактировалось mihali4; 20.10.2008 в 18:40. |
||
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 |