Визуальное программирование 3.ppt
- Количество слайдов: 15
Кнопки • TButton • TBit. Btn
• Класс TButton представляет из себя обыкновенную кнопку. Для размещения этого компонента на форме щелкните на иконке на вкладке Standard на Палитре компонентов. На нашей форме появится кнопка с именем Button 1. • Давайте посмотрим на ее свойства и события. • Ну естественно, что основное событие для кнопки - это On. Click. Оно возникает, когда мы на кнопке щелкаем мышкой. Кроме того, оно возникает, когда кнопка находится в фокусе (в этом случае на кнопке будет пунктирный прямоугольник) и вы нажимаете на пробел. Еще один способ вызвать это событие - это нажать комбинацию клавиш Alt + подчеркнутий в заголовке кнопки символ. И, наконец, событие может быть вызвано путем нажатия клавиш Enter или Escape. Вот все это мы сейчас и посмотрим в действии. Для перехода в окно кода сделайте двойной щелчок на нашей кнопке на форме. Delphi создаст заготовку для события On. Click: • procedure TForm 1. Button 1 Click(Sender: TObject); • Begin • end;
• Давайте сюда что-нибудь впишем. Например программно изменим надпись на кнопке: • procedure TForm 1. Button 1 Click(Sender: TObject); • begin Button 1. Caption: ='&start'; • end; • Обратите внимание на знак амперсанда (&) перед буквой s в слове start. При запуске программы следующая за ним буква будет подчеркнута, и тем самым нажатие комбинации клавиш Alt+s будет эквивалентно щелчку на кнопке мышкой: • Вообще-то у кнопки, как и у любого компонента, событий много. On. Click это только один из них (это событие по умолчанию, поэтому при двойном щелчке именно для него и появляется заготовка кода). Для просмотра всех событий (в том числе и On. Click) шелкните на вкладке Evants Инспектора объектов: » Если теперь сделать двойной щелчок на любом из событий в Инспекторе объектов, то для него появится заготовка кода. » У кнопки есть также свойство cancel булевского типа. По умолчанию оно равно false, и если вы его установите в true, то нажатие на клавишу cancel на клавиатуре будет эквивалентно щелчку на этой кнопке
• • • Есть и второй вид кнопки (класс TBit. Btn). Иконка для ее располагается на вкладке Additional Палитры компонентов: Расположите ее на форме. Большинство методов, свойств и событий у кнопки типа TBit. Btn совпадает с обычной кнопкой TButton, так что сейчас мы поговорим об отличиях. Прежде всего, на кнопке типа TBit. Btn может находится изображение. Оно задается свойством Glyph. Если вы в Инспекторе объектов нажмете на многоточие в строке с этим свойством, то появится окно Picture Editor, в которое вы можете загрузить изображение в формате *. bmp (воспользовавшись кнопкой Load). После этого на вашей кнопке появится изображение: Размер изображения должен быть 16 на 16 пикселов. Кстати, изображений в файле *. bmp может быть и несколько. Скажем, если вы сделаете два изображения (в этом случае размер сдвоенной картинки будет 32 на 16 пикселов), то второе из них (правое) будет использоваться, когда кнопка будет недоступка (т. е. ее свойство enabled будет равно false). В этом случае для недоступной кнопки мы получим что-то вроде: Еще одно важное свойство кнопки Bit. Btn - это свойство Kind. Оно позволяет задавать разные предопределенные изображения для нашей кнопки. Если вы его не меняли, то оно равно bk. Custom (Пользовательское). Еще возможные значения - это bk. OK, bk. Yes и другие стандартные значения. Вот как, например, будет выглядеть кнопка, если его свойство Kind равно bk. Yes: Свойство Caption при этом сгенерируется автоматически, но при желании его можно изменить.
Класс TEdit • • • Класс TEdit представляет из себя обычное поле для ввода текста. Соответствующий компонент расположен на вкладке Standard Палитры компонентов: Для изучения свойств Edit'а расположите его на форме. Самое важное свойство для этого компонента - это свойсто Text. Разумеется в нем хранится текст, введенный в наш Edit. Обратите внимание, что текст хранится именно как текст, и, если пользователь, скажем, введет в edit число 23, то оно будет хранится как строка "23", а не как число 23. Поэтому в такой строке содержится ошибка: . . . if Edit 1. Text>0 then Show. Message('Число положительное'); . . . Для превращения строки в целое число надо использовать функцию Str. To. Int: . . . if Str. To. Int(Edit 1. Text)>0 – then Show. Message('Число положительное'); . . . Аналогично для записи числа в Edit надо использовать конструкцию вида Edit 1. Text: =Int. To. Str(22);
• • • Из этой же серии относится и функции Str. To. Float и Float. To. Str. Рассмотрим еще несколько свойств. Свойство Max. Lenght определяет максимальную длину вводимого текста. Если оно равно нулю (это значение по умолчанию), то длина текста не ограничена. Из полезных свойств отметим также Auto. Select логического типа. Если оно установлено в true (а по умолчанию так оно и есть), то при получении фокуса нашим edit'ом весь текст в нем выделяется. Это может оказаться полезным, если пользователь скорей всего полностью заменит этот текст. Из свойств отметим еще свойство Password. Char. Оно понадобится при использовании нашего edit'а в качестве поля для ввода пароля. Это свойство позволяет задать символ для визуальной замены вводимых пользователем символов. Обычно в этом случае используется звездочка. Из событий для этого компонента чаще всего используется событие On. Change, On. Key. Down, On. Key. Press и On. Key. Up. Первое из них возникает, естественно, при изменении текста в нашем edit'е, последующие три - при нажатии и отпускании клавиши. Вот как, например, можно использовать событие On. Key. Press для ограничения ввода только цифрами: procedure TForm 1. Edit 1 Key. Press(Sender: TObject; var Key: Char); Begin if not (Key in ['0'. . '9']) – then Key: =#0 end; Edit понимает такие стандартные для Windows комбинации клавиш как Ctrl+C (для копирования текста в буфер), Ctrl+X (для вырезания текста), Ctrl+V (для вставки текста), Ctrl+Z (для отмены последнего действия).
Функции Message. Dlg и Show. Message • • Сначала обсудим функцию Message. Dlg (как более содержательную). Она используется для вывода на экран messagebox'а с неким сообщением и несколькими кнопками (Yes, No, OK и т. д. ), которое выглядит приблизительно так: Параметры у этой функции следующие. Первый задает строку, которая будет показываться в нашем сообщении (Как и все строи в Delphi, заключаем ее в одинарные кавычки). Второй параметр определяет иконку на нашем messagebox'е и сообщение в его заголовке. Возможные значения для этого параметра mt. Confirmation (Подтверждение), mt. Information (Сообщение), mt. Warning (Предупреждение), mt. Error (Ошибка). Обратите внимание, что при записи любого из перечисленных значений messagebox получит и соответствующий заголовок. Для этого параметра есть еще одно значение - mt. Custom. Если использовать его, то никакой иконки в нашем messagebox'е не будет, а заголовок будет совпадать с именем exe-файла.
• • • Третий параметр определяет кнопки, которые будут присутствовать на combobox'е. Вот некоторые из возможных значений: mb. Yes (кнопка Yes), mb. No (кнопка No), mb. Cancel (кнопка Cancel), mb. OK (кнопка OK). Если кнопок несколько, то они объединяются посредством квадратных скобок (например, если мы хотим, чтобы присутствовало две кнопки Yes и No, то пишем [mb. Yes, mb. No]). Последний, четвертый параметр - это идентификатор контекстной справки. В качестве результата функции Message. Dlg возвращает значение, информирующее о том, что за кнопку пользователь нажал в messagebox'е. Вот тесколько возможных значений: mr. Yes, mr. Cancel, mr. OK. А вот и пример использования функции Message. Dlg: if Message. Dlg('Выходим из программы? ', mt. Confirmation, [mb. Yes, mb. No], 0) = mr. Yes – then close; В этом фрагменте у пользователя спрашивается, надо ли выходить из программы, и при положительном ответе программа закрывается. • Теперь обсудим функцию Show. Message. У неё только один параметр - текст сообщения. Вот пример: • Show. Message('Сообщение'); • Ничего тут особо интересного нет. Отметим, что эта функция используется для вывода простых сообщений, которые не требуют ответа от пользователя (типа Yes, No и т. д. ).
Класс TCheck. Box • • • Компонент Check. Box расположен на вкладке Standard: Этом компонент используется для включению/отключения некоторых параметров. При этом на форме может быть несколько Check. Box'ов, и каждый из них можно включать/отключать независимо от других. Основное свойство для этого компонента - это свойство State. Оно может принимать три значения (именно три, а не два) - cb. Unchecked (неотмеченное состояние), cb. Checked (отмеченное состояние) и cb. Grayed (серое состояние). Серое состояние выглядит так (обратите, кстати, внимание, что рядом с компонентом уже есть надпись. Она определяется свойством Caption): Компонент может иметь такое состояние тогда, когда про соответствующий ему параметр нельзя сказать, включен он или нет. Например, если параметр отвечает за то, не является ли выделенный фрагмент шрифта полужирным, то если часть выделенного текста полужирная, а часть - нет, то логично использовать именно такое состояние. Если же такого неопределенного значения у параметра быть не должно, то свойство Allow. Grayed должно быть установлено в false (в этом случае при запуске программы при шелчке на Check. Box'е будут чередаваться только два состояния). Если же свойство Allow. Grayed компонента установлено в true, то при щелчке на таком компоненте будут чередаваться все три состояния. Еще одно свойство, показывающее состояние компонета - это свойство Checked. Оно равно true, если компонент отмечен, и false, если не отмечен (т. е. при этом его свойство State может принимать два значения - cb. Unchecked и cb. Grayed).
Класс TRadio. Button • Компонент Radio. Button расположен на вкладке Standard Палитры компонентов: • • Он используется для организации выбора из нескольких взаимоисключающих возможностей (при этом допускается выбор только одного варианта из нескольких). Например, на форме можно разместить две Radio. Button, и если вы выберите одну из них, то точка внутри другой пропадет: • •
• При этом все Radio. Button'ы в одном контейнере считаются принадлежащими одной группе. Если же вам надо организовать две или более независимых группы, то воспользуйтесть компонентом Group. Box на вкладке Standard: • • Разместите на форме два компонента Group. Box, и поместите в каждый из них по две Radio. Button'а (только размещать их надо не двойным щелчком на компоненте на Панели компонентов, а одинарным, с последующим щелчком внутри соответствующего Group. Box'а). Запустите программу. Теперь выбор между этими двумя группами можно производить независимо: •
Класс TList. Box • • • Экземпляр класса TList. Box представляет из себя список. Этом компонент расположен на вкладке Standard Палитры компонентов: Рассмотрим его основные свойства. Наверное, самое основное свойство для списка - это Items. Тип у него - TStrings. Именно в нем и хранятся элементы нашего списка. Для заполнения списка нажмите на кнопку с многоточием рядом с названием этого свойство в Инспекторе объектов: Появится окно String List Editor, в котором можно печатать элементы нашего списка (разделяя их нажатием клавиши Enter): • • С элементами списка можно работать и программно. Для этого используем это же самое свойство Items. Например, для добавления элемента в наш список надо написать что-то вроде
• • • List. Box 1. Items. Add('Новый элемент'); для очистки всего списка пишем List. Box 1. Items. Clear; Для удаления элемента из списка используется следующая конструкция: List. Box 1. Items. Delete(1); Параметр в скобках (у нас это единица) - это номер удаляемого элемента. В нашем примере фактически удаляется второй элемент списка, так как их нумерация начинается с нуля. Новые элементы по умолчанию добавляются в конец списка. Если нам надо добавить новый элемент списка на определенное место, то надо использовать конструкцию вида List. Box 1. Items. Insert(2, 'Roman'); В данном примере новый элемент Roman вставится на второе место (с точки зрения пользователя это будет третье место, так как их нумерация начинается с нуля). Свойство Item. Index служит для определения выделенного в списке элемента (оно доступно как для чтения, так и для записи). Элементы списка нумеруются с нуля, так что если выделен, например, третий элемент, то значение этого свойства равно 2. Если ни один элемент списка не выделен, то значение свойства Item. Index равно -1. Вот так, например, можно снять выделение с элемента списка: List. Box 1. Item. Index: =-1; Свойство списка Multi. Select определяет, можно ли выделять несколько элементов списка одновременно. Если оно равно false (значение по умолчанию), то выделять несколько элементов нельзя, а если true, то можно: • • • Свойство Sorted определяет, сортируются ли элементы списка. По умолчанию оно равно false, и если установить его в true, то список будет отсортирован и новые элементы будут вставлятся не в конец, а в соответствующее сортировке место.
Класс TCombo. Box • Combo. Box представляет из себя комбинацию Edit'а и List. Box'а. Иконка для него находится на панели Standard: • • У него, как и у списка (компонент TList. Box) основное свойство - Items. Его тип - TStrings. Оно определяет список строк нашего компонента. Добавление элементов, их удаление, очистка всего содержимого combobox'а происходит точно так же, как и для компонента TList. Box, так что если забыли, то посмотрите в предыдущем уроке. Выбранный пользователем элемент combobox'а можно определить с помощью свойства Text, а его номер - с помощью свойства Item. Index (нумерация, как и у List. Box'а, начинается с нуля). У Combo. Box'а можно выбрать один из предопределенных стилей, которые определяются свойством Style. Значение стиля по умолчанию - cs. Drop. Down. При таком стиле вы можете выбирать значение из списка нашего combobox'а и впечатывать его сами. Еще одно возможное значение - cs. Drop. Down. List. В этом случае пользователь сможет выбирать только те значения, которые есть в списке, другое же значение он впечатать в combobox не сможет. Это два самых распростаненных значения для стиля. Иногда используется стиль cs. Simple. В этом случае наш combobox будет выглядеть приблизительно так (т. е. выпадающий список превратится в нечто, напиминающее List. Box): • • У Combo. Box'а, как и у List. Box'а есть свойство Sorted логического типа. И работает оно точно также.
Визуальное программирование 3.ppt