Изменение свойств кнопки (логические операции) в Delphi

 

Procedure TFormi. MyFirstButtonMouseMove (Sender: TObj ect ;

Shift: TShiftState; X, Y: Integer); begin

end;

 

He будем пока вдаваться в подробности передаваемых параметров. Просто на­пишите здесь код, показанный в листинге 7.1.

Procedure TFormi.MyFirstButtonMouseMove(Sender: TObj ect;

Shift: TShiftState; X, Y: Integer); var

index:integer; begin index: =random (4) ; case index of

0: MyFirstButton.Left:=MyFirstButton.Left+MyFirstButton.Width;

1: MyFirstButton.Left:=MyFirstButton.Left-MyFirstButton.Width;

2: MyFirstButton.Top:=MyFirstButton.Top+MyFirstButton.Height;

3: MyFirstButton.Top:=MyFirstButton.Top-MyFirstButton.Height;

end;

if MyFirstButton.LeftcO then MyFirstButton.Left: =0;

if (MyFirstButton.Left+MyFirstButton.Width)> MainForm.Width then MyFirstButton.Left:= MainForm.Width-MyFirstButton.Width;

if MyFirstButton.Top<0 then MyFirstButton.Top:=0;

if (MyFirstButton.Top+MyFirstButton.Height)> MainForm.Height then MyFirstButton.Top:= MainForm.Height-MyFirstButton.Height;

end;

Пока просто перепишите содержимое этого листинга. Скоро мы подробно рас­смотрим, что тут написано. Запустите программу и попробуйте нажать на кнопку. Как только попытаетесь навести на нее указатель мыши, кнопка будет убегать от вас.

 

Обязательно сначала посмотрите, как работает пример. Когда поймете принцип дей­ствия программы, возвращайтесь к чтению книги, и мы рассмотрим исходный код.

В разделе var объявлена одна переменная index типа целое число. В первой строке этой переменной присваивается случайное число с помощью функции

random:

index:=random(4);

Функция random возвращает случайное число. В качестве единственного пара­метра ей нужно передать число, которое будет означать максимально возможное случайное значение. В операторе передается цифра 4. Это значит, что функция вернет число от нуля до четырех (0 < X < 4). Само число 4 в диапазон возможных значений не входит, все случайные числа будут меньше него.

 

После этого проверяется, какое число сгенерировала функция random с помо­щью конструкции case:

 

case Переменная of

Значение1: Действие1;

Значение2: Действие2;

end;

Конструкция case сравнивает переменную с перечисленными между ключевы­ми словами of и end значениями, и если одно из них совпадает, то выполняет соот­ветствующее действие. Например, допустим, что наша переменная равна числу И3начение2м. В ЭТОМ случае будет выполнено пДействие2и. При ЭТОМ "Действие1" и другие выполняться не будут.

 

Если вам нужно, чтобы при равенстве значений выполнялось несколько дейст­вий, то необходимо заключить их в логические кавычки begin ... end, как это

показано в листинге

 

case Переменная of

Значение1:

begin

Действие1_1;

Действие1_2;

end;

Значение2:

begin

Действие2_1;

Действие2_2;

end;

end;

Теперь вернемся к нашему примеру. В нем используется следующий оператор case:

 

0: MyFirstButton.Left:=MyFirstButton.Left+MyFirstButton.Width;

1: MyFirstButton.Left:=MyFirstButton.Left-MyFirstButton.Width;

2: MyFirstButton.Top:=MyFirstButton.Top+MyFirstButton.Height;

3: MyFirstButton.Top:=MyFirstButton.Top-MyFirstButton.Height; end;

Если переменнаяindexравна 0, то выполнится действие:

MyFirstButton.Left:=MyFirstButton.Left+MyFirstButton.Width

Что ЭТО? Здесь свойству Left (левая ПОЗИЦИЯ) КНОПКИ MyFirstButton присваи­вается значение левой позиции этой же кнопки плюс ее ширина. Это значит, если вы попытались навести мышкой на кнопку, и функция Random сгенерировала 0, то левое значение кнопки будет увеличено на ширину кнопки. А это уже значит, что кнопка сдвинется от вас вправо. Если вы уже запускали пример, то поняли это.

 

Если значение переменной index равно 1, то наоборот, уменьшается левая по­зиция кнопки на ее ширину, т. е. кнопка убежит влево. Если значение переменной index равно 2, то увеличивается верхняя позиция кнопки на ее высоту, а кнопка убежит вниз. Надеюсь, что смысл понятен. Давайте двигаться дальше.

 

После конструкции case ... of ... end идет проверка: "Не убежала ли кноп­ка за пределы окна?" Сначала проверяется левая позиция кнопки.

if MyFirstButton.Left<0 then MyFirstButton.Left:=0 ;

Здесь идет проверка, если левая позиция кнопки MyFirstButton.Left меньше нуля, то установить ее в ноль.

 

В следующей строке проверяется, если левая позиция кнопки плюс ее ширина больше ширины окна, то левой позиции присвоить значение "ширина окна" минус "ширина кнопки":

if (MyFirstButton.Left+MyFirstButton.Width)>Forml.Width then MyFirstButton.Left:=Forml.Width-MyFirstButton.Width;

Точно так же проверяем и верхнюю позицию, чтобы она не вышла за пределы окна.

С оператором if, который здесь используется, мы уже немного познакомились в разд. 5.3.4. Конструкция if ... then выглядит следующим образом:

if Условие then Выполнить действие;

Если условие выполнено, то будет выполнено и действие. Если вы хотите вы­полнить два действия, то должны заключить их в логические скобки begin ... end. Например:

 

If Условие then begin

Действие1; Действие2; Действие3;

end;

В этом случае все действия верно. Таким образом, begin в одно, между begin и end будут выполнены, если условие ... end группирует последовательность действий

 

 

dle

Помоги проекту! Расскажи друзьям об этом сайте: