Получение практических навыков визуального программирования в интегрированной среде разработки Delphi
Автор: Степанюк Александр Юрьевич Должность: преподаватель Учебное заведение: ГБПОУ РК "Симферопольский политехнический колледж" Населённый пункт: г.Симферополь Наименование материала: Методическая разработка Тема: Получение практических навыков визуального программирования в интегрированной среде разработки Delphi Раздел: среднее профессиональное
Тема 3.1: Среда программирования Delphi
Цель: Получить практические навыки визуального программирования
в
интегрированной среде разработки Delphi.
Оборудование: IBM – совместимые компьютеры.
Место проведения: Компьютерный класс.
Техника безопасности: См. инструкцию.
Ход
работы:
Класс TStrings - один из основополагающих классов в Delphi. Работа
очень многих компонентов построена на имеющемся в их составе свойстве
класса TStrings. Например, это свойство Items у ListBox и RadioGroup, Lines у
Memo и т.д. и т.п. Класс TStrings применяется для хранения любых объектов
наследников класса TObject и связанных с ними текстовых строк. Свойства
класса TStrings называются наборами строк.
TStrings – абстрактный класс. Обратиться к нему можно лишь при «по-
средничестве»
соответствующего
компонента.
Если
необходимо
создать
экземпляр
класса TStrings
вне
компонентов,
используйте
объект-потомок
TStringList,наследующий свойства и методы TStrings. Например,
var SL:
TStringList; begin
SL := TStringList.create; // Но не SL := TString.create!
SL.add 'Строка');
…
end;
К строкам и объектам, хранящимся в
TStrings
,
можно обратиться с
помощью индексированных свойств
property Strings[i: integer]: string;
default; property Object [i: integer]:
TObject;
Атрибут default означает, что имя индексированного свойства может быть
опущено, например, следующие обращения равнозначны:
ListBoxl.items.strings[!]:='Строка' ;
ListBoxl.items[1]
: — '
Строка';
Для
программиста
свойство
типа TStrings
выглядит
как
обычный
массив строк, но индекс в таком массиве находится в диапазоне целых чисел
0 - 32767. Пример: Items[0]:=’text1’ - записать строку в 1-й элемент набора
строк, Items[1]:=’text2’ - во второй элемент и т.д. Общее число строк можно
опреде-лить, обратившись к свойству Count (тип integer) класса TStrings.
Класс TStrings также применяется для хранения пар вида «параметр-
значение». При чтении (записи) свойства
property Values[const Name: string]: string;
ищется строка, содержащая подстроку вида Name=значение и
возвращается (записывается) значение после символа = . Например,
ListBox1.Items.Values[‘y’]:=1; приведет к появлению в списке строки y=1.
1
Лабораторная работа №32
Другие свойства и методы класса TStrings:
property Count: inte-
ger;
Число пар строк и объектов.
function Add(const S:
string): integer;
Добавляет строку в конец набора и возвра-
щает присвоенный ей номер.
function AddOb-
ject(const S: string;
AObject: Tobject): in-
teger;
Добавляет строку и объект. Возвращает
присвоенный паре номер
procedure AddStrings
(Strings: TStrings);
Добавляет в конец набора другой набор
TSrings.
procedure InsertObject
(I: integer; const S:
string; AObject: TOb-
ject);
Вставляет объект AObject и строку S под
индексом I.
procedure Delete (I:
integer);
Удаляет строку с индексом I.
function IndexOf
(const S: string):
integer;
Возвращает номер в наборе строки S. Если она
не найдена, функция возвращает -1.
function Equals
(Strings: TStrings):
boolean;
Сравнивает набор строк вызвавшего этот
метод объекта с набором Strings и возвращает
True, если они совпадают.
procedure
Move(I1,I2:integer);
Перемещает пару строка объект с позиции I1
в позицию I2.
procedure Exchange
(I1,I2: integer);
Меняет местами пары строка^объект с
индексами I1 и I2.
procedure LoadFromFile
(const FileName:
string);
Загружает набор строк из файла
procedure SaveToFile
(const FileName:
string);
Сохраняет набор строк в файле
Рассмотрим
следующий
пример.
Создадим
приложение,
в
котором
выбранные кнопки «прячутся» в списке ListBox,
а при выборе их из списка
появляются на прежнем месте. Доступ к содержимому списка происходит
через свойство Items типа TStrins.
Порядковый номер выбранного элемента
списка можно узнать с помощью свойства ItemIndex компонента ListBox.
Нумерация начинается с нуля.
1. Разместите на форме три кнопки Button1, Button3, Button3, строку
Label и список ListBox1, как это показано на рисунке 1.
2
Лабораторная работа №32
Рисунок 1 – Форма программы
2. Создайте обработчик события OnClick для кнопки Button1:
procedure TForm1.Button1Click(Sender:
TObject); begin
(Sender as TControl).visible := False;
ListBox1.Items.AddObject((Sender as TButton).caption,
Sender)
; end;
Метод AddObject добавляет в список и заголовок кнопки, и саму
кнопку.
Свойство Visible позволяет скрывать элемент, не уничтожая его.
3. Назначьте этот обработчик аналогичным событиям других кнопок,
как
это делалось в п.7 предыдущей лаб.работы.
Комментарий.
Параметр Sender
т и п а TObject
описан
в
заголовках
процедур-обработчиков событий. Через этот параметр передается ссылка на
объект-источник
события.
Так
как Sender
относится
к
классу TObject
-
абстрактному классу на верху иерархии компонентов Delphi, то в процедуру
может быть передан любой компонент (будучи наследником TObject он тоже
TObject)
. Параметр Sender
обычно
игнорируют,
но
его
необходимо
использовать, когда несколько компонентов обращаются к одному и тому же
обработчику событий, как в данном примере. Тогда Sender позволяет узнать,
кто конкретно этот обработчик вызвал.
Оператор as
в
примере
сообщает
компилятору,
что
объект Sender
следует рассматривать как принадлежащий классу «кнопка».
4.
Создайте обработчик для события OnClick объекта ListBox1:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
with ListBox1
do begin
(Items.Objects[ItemIndex] as TButton).visible := true;
Items.Delete(ItemIndex); end; end;
При выполнении программа будет иметь следующий вид (Рисунок 2).
3
Лабораторная работа №32
Рисунок 2 – Работа программы
Задание :
Измените
программу,
чтобы
в
список
можно
было
заносить
разнородные элементы: кнопки, панели и др. Более подробную информацию
об использовании операторов is и as можно получить в [1].
Контрольные вопросы
1. Каково назначение и возможности среды визуального программирования
Borland Delphi?
2. Назначение окон Borland Delphi.
3. Каково назначение палитры компонент?
4. Назначение пиктографических кнопок среды Borland Delphi.
5. Описать окно кода программы и инспектора объектов.
Литература
1.
Культин Н. Б. Основы программирования в Delphi XE. — СПб.: БХВ-
Петербург, 2011. — 416 с.: ил. + CD-ROM — (Самоучитель)
2.
Семакин И.Г Основы программирования и баз данных: учебник для
студ.
учреждений
сред.
проф.
образования.
—
М.:
Издательский
центр
«Академия», 2014. — 224 с.
3.
Семакин
И.Г.,
Ше стаков
А.П.
Основы
алгоритмизации
и
программирования: учебник для студ учреждений сред. проф. образования —
М. : Издательский центр «Академия», 2013.— 304 с.
4.
Семакин И. Г. Основы алгоритмизации и программирования. Практикум:
учеб. пособие для студ учреждений сред. проф. образования / Семакин И. Г.,
Шестаков А. П. — М.: Издательский центр «Академия», 2013. — 144 с.
4