- •Лабораторные работы по курсу «Программирование»
- •Составил: Маврин с.А.
- •Общие сведения
- •«Среда разработки Borland Delphi 7»
- •Главное окно
- •Лабораторная работа №1 «Приложение. Модули и формы»
- •Демонстрационный пример
- •Следует запомнить!
- •Общее задание
- •Лабораторная работа № 2 «Компоненты для отображения и редактирования текста Label, Edit, Memo»
- •Пример решения задачи
- •Задачи по вариантам
- •Лабораторная работа № 3 «Класс tStrings. Компоненты для отображения списка строк ListBox, ComboBox»
- •Лабораторная работа № 4 «Работа с компонентами ImageList, ComboBoxEx»
- •Общее задание
- •Лабораторная работа № 5 «Компоненты-оболочки для специализированных окон диалогов»
- •Общее задание
- •Лабораторная работа № 6 «Компоненты – переключатели и флажки, их группирование»
- •Вопрос 1. С какого служебного слова начинается описание модуля в Object Pascal?
- •Вопрос 2. В Object Pascal служебное слово Inherited означает:
- •Вызов унаследованного метода;
- •Вопрос 3. В Turbo Pascal 7 в главной программе невозможно описание вида:
- •Общее задание
- •Лабораторная работа № 7 «Организация меню. Главное и контекстное меню. Компонент tActionList»
- •Лабораторная работа № 8 «Создание компонентов. Графический и оконный элемент управления»
- •Лабораторная работа № 9 «Использование готовых изображений. Компонент Image». «Создание простейших графических примитивов в Delphi»
- •Лабораторная работа № 10 «Компонент Timer Создание простейшей анимации»
- •Лабораторная работа № 11 Создание интерактивной обучающей системы с использованием мультимедийных возможностей Delphi
- •Список рекомендуемой литературы
Лабораторная работа № 3 «Класс tStrings. Компоненты для отображения списка строк ListBox, ComboBox»
TStrings – это абстрактный класс. Он предназначен для хранения в памяти списка строк (набора строк). TStrings используется в таких компонентах как Memo (многострочный редактор текста), ListBox и ComboBox (элементы управления для отображения списка строк). Например, компонент Memo имеет свойство Lines, имеющее своим типом класс TStrings. В компонентах ListBox и ComboBox таким свойством является свойство Items. Рассмотрим элементы класса TStrings:
Элемент |
Описание |
property Count:integer |
Количество хранимых строк |
property Strings[Index: integer]:String |
Свойство-массив. Организует доступ к строке по ее индексу |
function Add(const S:String):integer |
Добавляет строку в конец списка, и возвращает ее индекс |
procedure Append(const S:String) |
Добавляет строку в конец списка |
procedure AddStrings(Strings:TStrings) |
Добавляет строки из другого списка в конец данного списка |
procedure Assign(Source:TPersistent) |
Копирует содержимое другого списка в данный |
procedure Clear |
Удаляет все строки из списка. Count=0. |
procedure Delete(Index: integer) |
Удаляет строку по заданному индексу |
function Equals(Strings:TStrings):Boolean |
Выясняет, совпадает ли полностью данный список строк с другим списком строк |
procedure Exchange(Index1:integer;Index2:integer) |
Меняет местами строки по их заданным индексам |
function IndexOf(const S:String):integer |
Выясняет индекс заданной строки |
procedure Insert(Index:integer; const S:String) |
Вставляет строку S перед строкой с индексом Index |
procedure LoadFromFile(const FileName:string) |
Загрузка строк из текстового файла |
procedure SaveToFile(const FileName:string) |
Сохранение строк в текстовый файл |
Класс TStrings является абстрактным, так как он содержит абстрактные (нереализованные) методы Clear, Delete, Insert. В компонентах Memo, ListBox, ComboBox – встроен механизм управления свойствами типа TStrings. Однако если вы хотите хранить список строк без использования специальных компонентов, вы можете воспользоваться классом TStringList. Этот класс является потомком класса TStrings и в нем переопределены все абстрактные элементы класса TStrings.
Примечание. В Delphi элементы любого списка индексируются с 0. Схематически список строк можно представить следующим образом:
0 строка1
1 строка2
2 строка3
3 строка4
4 строка5
Количество строк равно в данном случае 5. То есть свойство Count=5.
Указания по решению задачи
Создать приложение с использованием указанного в задаче компонента. Если в задании не указано на какое событие необходимо осуществить действие, то можно использовать любое событие рассматриваемого компонента или использовать дополнительные компоненты (например, компонент Button).
Пример решения задачи
Составьте программу, в которой при выборе элемента в выпадающем списке ComboBox, заголовок главной формы будет изменен на строку, являющуюся значением выбранного элемента списка ComboBox.
Создадим новое приложение. Выберем меню File > New > Application. Обратимся к вкладке Standard палитры компонентов Delphi, и поместим на форму компонент ComboBox (Рис. 1).
Рис. 1. Редактируемая форма. Компонент ComboBox1.
Заполним список несколькими значениями. Вызовем редактор свойства Items компонента ComboBox1 (Рис. 2).
Рис. 11. Редактор свойства Items компонента ComboBox1.
Установим в свойство ItemIndex компонента ComboBox1 значение 0. Это позволит списку изначально отображать первый элемент (Рис. 12).
Рис. 12. Редактируемая форма. Компонент ComboBox1.
При выборе элемента выпадающего списка происходит событие OnSelect этого компонента. Создадим обработчик события OnSelect компонента ComboBox1. В обработчике компонента будем изменять заголовок формы на текст выделенного в списке элемента:
procedure TForm1.ComboBox1Select(Sender: TObject);
begin
Form1.Caption:=ComboBox1.Text;
end;
Приложение. Некоторые функции модуля SysUtils.
Функция |
Описание |
function IntToStr(Value:integer):string |
Переводит целое число в строку |
function StrToInt(Value: string): integer |
Переводит строку в целое число |
function StrComp(Str1:PAnsiChar; Str2:PAnsiChar):integer |
Сравнивает две строки. Возвращает 0 если строки совпадают. Если вы используете переменные типа string, то в функцию необходимо помещать преобразованный тип. Например:
… var s1,s2:string; … if StrComp(PAnsiChar(s1), PAnsiChar(s2))=0 then … |
function Trim(const S:String):string |
Функция возвращает строку равную строке S, но с удаленными концевыми пробелами |
Вариант 1
Составьте программу, в которой при выборе элемента в выпадающем списке ComboBox, заголовок главной формы будет изменен на строку, являющуюся значением выбранного элемента списка ComboBox.
Вариант 2
Составьте программу, которая при отпускании правой кнопки мыши над списком ListBox, будет выдавать информационное сообщение, содержащее индекс выделенного элемента этого списка
Вариант 3
Составьте программу, в которой при нажатии левой кнопки мыши элементы списка ListBox сортируются по алфавиту
Вариант 4
Составьте программу, которая выясняет, совпадает ли содержимое двух списков строк, представленных компонентами ListBox и ComboBox
Вариант 5
Составьте программу, выясняющую, сколько элементов списка ListBox содержат символ «V»
Вариант 6
Составьте программу, удаляющую из списка ListBox выделенный элемент по нажатию правой кнопки мыши над ним.
Вариант 7
Составьте программу, которая при выборе элемента из списка ComboBox, будет выяснять, существует ли этот элемент в списке ListBox.
Вариант 8
Составьте программу, организующую добавление и удаление элементов списка ListBox
Вариант 9
Составьте программу, выясняющую все ли элементы списка ComboBox различны
Вариант 10
Составьте программу, поиска в списке заданного слова X
Вариант 11
Составьте программу, утраивающую каждый третий символ в каждом элементе списка ListBox
Вариант 12
Составьте программу, удаляющую из списка ListBox те элементы, что стоят на четных местах
Вариант 13
Составьте программу, удаляющую те элементы списка ListBox, что стоят на нечетных местах
Вариант 14
Составьте программу, в которой при выборе элементов, представляющих числовые значения, в списке ComboBox, в соответствие с выбранным значением (числом), будет изменяться ширина главной формы.
Вариант 15
Составьте программу, удаляющую из списка ListBox те элементы, что не встречаются в списке ComboBox
Вариант 16
Составьте программу, выясняющую, сколько раз в списке ListBox встречается его последний элемент
Вариант 17
Составьте программу, в которой, при выборе элемента в списке ListBox в компонент Memo будет добавляться его значение.
Вариант 18
Составьте программу, загружающую из файла элементы списка ComboBox.
Вариант 19
Составьте программу, вычеркивающую из списков ListBox и ComboBox те элементы, что встречаются в них одновременно
Вариант 20
Составьте программу, в которой при отпускании правой кнопки мыши над списком ListBox в него будет заноситься элемент, значение которого есть текст компонента Edit
Вариант 21
Составьте программу, организующую добавление и удаление элементов списка ListBox
Вариант 22
Составьте программу, удаляющую те элементы списка ListBox, что не встречаются в ComboBox
Вариант 23
Составьте программу, выясняющую, все элементы списка ComboBox одинаковы
Вариант 24
Составьте программу, позволяющую при выборе элемента списка ComboBox добавлять элемент с таким же значением в список ListBox
Вариант 25
Составьте программу, позволяющую мышью переносить элемент из одного списка ListBox в другой список ListBox
Вариант 26
Составьте программу, которая позволяет записывать индексы одновременно выделенных нескольких элементов списка ListBox в редактор текста Memo, при двойном щелчке на нем.
Вариант 27
Составьте программу, выясняющую, сколько элементов списка ListBox, находятся в выделенном состоянии. Если не один, то записать значения выделенных элементов в список ComboBox
Вариант 28
Составьте программу, определяющую, сколько в списке ListBox повторяющихся строк
Вариант 29
Составьте программу, в которой в зависимости от выбранного элемента списка ComboBox изменяется текст всплывающей подсказки редактора текста Edit
Вариант 30
Составьте программу, удаляющую из списка ListBox те элементы, что не встречаются в списке ComboBox
Вариант 31
Составьте программу, выясняющую, какой из элементов списка ListBox имеет максимальную длину
Вариант 32
Составьте программу поиска чаще всего встречающегося элемента списка ComboBox
Вариант 33
Составьте программу, выясняющую, совпадают ли первый и последний элементы списка ComboBox
Вариант 34
Составьте программу, заменяющую каждый элемент списка ListBox, имеющий четный индекс, символом «0»
Вариант 35
Составьте программу, позволяющую добавлять, удалять элементы списка ListBox, и сохранять их в текстовый файл
Вариант 36
Составьте программу, добавляющую в список ComboBox те элементы списка ListBox, что имеют нечетный индекс
Вариант 37
Составьте программу, выясняющую, сколько элементов списка ListBox встречаются в списке ComboBox
Вариант 38
Составьте программу, в которой при двойном щелчке мышью на компоненте ListBox, все его элементы переносятся в список ComboBox
Вариант 39
Составьте программу, позволяющую при выборе элемента списка ComboBox, изменять текст в редакторе Edit на текст выбранного элемента списка
Вариант 40
Составьте программу вставки после каждого элемента списка ListBox строки «XXX»