Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Убегающая кнопка


Автор: KPEHDEL 5.6.2010, 12:34
Здравствуйте, пытаюсь сделать убегающую кнопку которая будет убегать от мышки.
Делаю так:
Создаю форму, создаю мышку. Мышке пишу такой код:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Enter нажимать нечестно, пользуйся мышкой!');
end;
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  index : Integer;
begin
  index := random(4); //присваиваем переменной случайное значение от 0 до 3

//в зависимости от значения переменной, выбираем действие
case index of
  0: Button1.Left := Button1.Left + Button1.Width; //двигаем кнопку вправо, на значение ширины кнопки
  1: Button1.Left := Button1.Left - Button1.Width; //кнопка влево, на значение ширины
  2: Button1.Top := Button1.Top + Button1.Height; //кнопка вниз, на значение высоты
  3: Button1.Top := Button1.Top - Button1.Height; //кнопка вверх, на значение высоты
end; //case

  {Если кнопка вышла за пределы формы, вернем ее в положение 0}
  if Button1.Left < 0 then Button1.Left := 0; 
  if Button1.Top < 0 then Button1.Top := 0;

  if (Button1.Left + Button1.Width) > Form1.Width then
    Button1.Left := Form1.Width - Button1.Width;

  if (Button1.Top + Button1.Height) > Form1.Height then
    Button1.Top := Form1.Height - Button1.Height;

end;
end.




Выделяет строку:

Код

procedure TForm1.Button1MouseMove(тут ставит курсор)(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);


Не пойму в чём дело, помогите.

Автор: Proxin 5.6.2010, 12:53
что такое showmessage?

Автор: KPEHDEL 5.6.2010, 13:02
Показывает диалоговое окно. То есть если пользователь попытается нажать кнопку клавишей Enter появляется окно с текстом:"Enter нажимать нечестно, пользуйся мышкой!".
То есть дожно появлятся... До того, как вписал код благодоря которому кнопка должна убегать, появлялось.

Автор: Демо 5.6.2010, 13:47
А что не работает??

Автор: KPEHDEL 5.6.2010, 14:00
Если бы знал)))... Жму F9, выделяет эту строку procedure TForm1.Button1MouseMove(тут ставит курсор)(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);

Автор: anaxaim 5.6.2010, 14:20
KPEHDEL
Попробуйте так 

Код

procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
Randomize;
Button2.Left:=random(590)+5;
Button2.Top:=random(310)+5;
end;

Код намного меньше получается,а смысл почти один и тот же,только кнопка убегает не на свою длину,а рандомно по форме.
Значение в random(x) ставите в зависимости от размера своей формы. smile 
А на счет ошибки,вы бы написали,что за ошибка то?

Автор: KPEHDEL 5.6.2010, 14:43
Попробывал. Ошибка в том же месте, выделяется та жа строка.

Вот какая ошибко:
Undeclared indentifier:'Button1MouseMove'

Автор: anaxaim 5.6.2010, 15:01
Дак вы наверно сами прописываете эти слова)Нужно нажать на кнопку один на форме ,выбрать в свойствах Events свойство OnMouseMove и кликнуть 2 раза ,и эта процедура автоматически перенесется в код smile 

Автор: KPEHDEL 5.6.2010, 15:22
anaxaim, спасибо!) Но всё равно не получается, нажал раз на кнопку(выделил). Открываю вкладку Events, делаю двойной щелчёк на OnMouseMove, но в код ничего не переносится(

Автор: anaxaim 5.6.2010, 15:38
Нужно нажимать не на само слово,а справа где стрелочка 

Автор: KPEHDEL 5.6.2010, 17:48
И всё равно не получается. Щёлкаю по событию, появляется редактор кода, но в редактор кода процедура не добавляется.
Может надо щёлкнуть по события и вбить выше приведённый код?

Автор: Данкинг 5.6.2010, 18:07
Цитата(KPEHDEL @  5.6.2010,  18:48 Найти цитируемый пост)
Щёлкаю по событию, появляется редактор кода, но в редактор кода процедура не добавляется.

Попробуй то же самое на новом проекте (кто знает, чего ты там с этим намудрил).

Добавлено через 22 секунды
Цитата(Proxin @  5.6.2010,  13:53 Найти цитируемый пост)
что такое showmessage? 

Ни разу не встречал? smile 

Автор: anaxaim 5.6.2010, 18:10
Уж не знаю тогда почему,у меня ваш код работает нормально.
Вот программа в файле

Автор: Proxin 6.6.2010, 00:30
данкинг,
использую всегда messagebox, в крупных проектах пишу функцию-обёртку для него. showmessage никогда не ипользовал.

Автор: KPEHDEL 6.6.2010, 08:51
anaxaim, вот и я не знаю(
Я не могу скачать программу, скачивается html страница, не мог бы ты куда-нибудь залить? Я был бы очень благодарен.

Автор: anaxaim 6.6.2010, 11:57
KPEHDEL Держи
http://depositfiles.com/files/asu6egcy9

Автор: KPEHDEL 6.6.2010, 17:40
Всё, спасибо, понял в чём ошибка.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)