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