Лабораторная работа Программирование Среда Delphi

Лабораторная работа №32

Тема 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.

Другие свойства и методы класса TStrings:
property Count: integer;
Число пар строк и объектов.

function Add(const S: string): integer;
Добавляет строку в конец набора и возвращает присвоенный ей номер.

function AddOb-ject(const S: string; AObject: Tobject): integer;
Добавляет строку и объект. Возвращает присвоенный паре номер

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.


Рисунок 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).


Рисунок 2 – Работа программы

Задание:
Измените программу, чтобы в список можно было заносить разнородные элементы: кнопки, панели и др. Более подробную информацию об использовании операторов is и as можно получить в [1].


Контрольные вопросы
1. Каково назначение и возможности среды визуального программирования Borland Delphi?
2. Назначение окон Borland Delphi.
3. Каково назначение палитры компонент?
4. Назначение пиктографических кнопок среды Borland Delphi.
5. Описать окно кода программы и инспектора объектов.

Литература
Культин Н. Б. Основы программирования в Delphi XE. СПб.: БХВ-Петербург, 2011. 416 с.: ил. + CD-ROM (Самоучитель)
Семакин И.Г Основы программирования и баз данных: учебник для студ. учреждений сред. проф. образования. М.: Издательский центр «Академия», 2014. 224 с.
Семакин И.Г., Шестаков А.П. Основы алгоритмизации и программирования: учебник для студ учреждений сред. проф. образования М. : Издательский центр «Академия», 2013. 304 с.
Семакин И. Г. Основы алгоритмизации и программирования. Практикум: учеб. пособие для студ учреждений сред. проф. образования / Семакин И. Г., Шестаков А. П. М.: Издательский центр «Академия», 2013. 144 с.









Лабораторная работа №32


13PAGE 15


13PAGE 14415




15