- •2. Визуальные компоненты
- •2.1. Свойства
- •2.2. События
- •2.3. Методы
- •If Edit1.CanFocus then Edit1.SetFocus; {перед получением фокуса производится проверка на возможность передачи фокуса компоненту}
- •3. Работа с текстом
- •3.1. Использование надписей
- •3.2. Однострочный редактор
- •3.3. Общие свойства, события и методы компонентов редактирования
- •3.4. Класс tStrings
- •3.5. Многострочный редактор
- •3.6. Использование списков
- •3.7. Таблица String Grid
- •4. Кнопки и переключатели
- •4.1. Работа с кнопками
- •4.1.1. Стандартная кнопка
- •4.1.2. Кнопка с рисунком
- •4.2. Работа с переключателями
- •4.2.1. Переключатель с независимой фиксацией
- •If CheckBox1.Checked then MessageDlg ('Время истекло! ', mtError, [mbОк], 0);
- •4.2.2. Переключатель с зависимой фиксацией
- •4.3. Объединение элементов управления
- •5. Использование форм
- •5.1. Свойства, методы и события форм
- •5.2. Организация взаимодействия форм
- •5.3. Особенности модальных форм
- •5.4. Шаблоны форм
- •5.5. Процедуры и функции, реализующие диалоги
- •5.6. Стандартные диалоги
- •If OpenDialog1.Execute then // при отмене диалога открытие файла не происходит
- •If SaveDialog1.Execute then { Получить имя файла }
- •6.Главное и контекстное меню, панели инструментов
- •6.1. Класс tMenuItem
- •6.2. Cоздание главного и контекстного меню
- •6.3. Динамическая настройка меню
- •6.4. Панели инструментов
- •7. Создание графических изображений
- •7.1. Классы для работы с графикой
- •7.2. Основные компоненты для размещения изображений
- •7.3. Типы графических объектов
- •7.4. Создание диаграмм
- •8. Печать объектов
- •8.1. Класс tPrinter
- •8.2. Печать текста
- •Var fPrn: Text; // объявлена переменная типа Text.
- •8.3. Диалоговые окна для работы с принтером
- •8.4. Печать графических изображений
- •8.4.1. Печать форм
- •8.4.2. Печать диаграмм
- •9. Работа с датами
- •9.1. Преобразование даты
- •9.2. Компоненты для ввода дат
- •10. Сохранение параметров программы.
- •Ini : tIniFile; //объявляем переменную типа inifile
- •Ini : tIniFile; //объявляем переменную типа inifile
- •11. Обработка исключительных ситуаций
- •Var f: File; begin AssignFile(f, 'Somefile.Ext'); try // оператор, в котором возможна ошибка Reset(f); // работы с файлом finally CloseFile(f) end;
3.4. Класс tStrings
Класс TStrings является базовым классом для операций со строковыми данными и представляет собой контейнер для строк (коллекцию или массив строк). Для операций со строками класс TStrings предоставляет соответствующие свойства и методы. От класса TStrings происходит большое количество производных классов, например, TStringList.
Визуальные компоненты, способные работать со списками строк, имеют свойства, которые являются массивами строк, содержащихся в этих компонентах. Например, для списков ListBох и DBListBox и для групп зависимых переключателей RadioGroup и DBRadioGroup таким свойством является Items, а для многострочных редакторов Memo и DBMemo – Lines. Указанные свойства для ListBox и Memo доступны при разработке и при выполнении приложения, а для визуальных компонентов DBListBox и DBMemo, связанных с данными, – только при выполнении приложения.
Каждый элемент списка является строкой, к которой можно получить доступ по ее номеру в массиве строк. Отсчет элементов списка начинается с нуля. Например, для обращения к первому элементу Items нужно указать Items[0], ко второму – Items[1] и т.д. При операциях с отдельными строками нельзя обращаться к несуществующему элементу. Например, если список содержит три строки, то попытка работы с десятой строкой приведет к исключительной ситуации.
Свойство Count типа Integer задает число элементов в списке. Поскольку первый элемент списка имеет нулевой номер, то номер последнего элемента равен Count-l.
Пример присваивания элементам списка ListBox1 новых значений:
var n: integer;
for n := 0 to ListBox1.Items.Count – 1 do
ListBox1.Items[n] := 'Строка номер ' + IntToStr(n);
Методы Delete и Clear используются для удаления элементов списка.
Процедура Delete (Index: Integer) удаляет элемент с номером, заданным параметром Index. При попытке удаления несуществующей строки сообщение об ошибке не выдается, но метод Delete не срабатывает.
Пример удаления элемента списка:
procedure TForm1.Button2Click(Sender: TObject);
begin
ComboBox1. Items. Delete (4); //удаление пятой строки из комбинированного списка
end; //ComboBox1 при нажатии кнопки Button2
Процедура Clear очищает список, удаляя все его элементы.
Пример очистки элементов списка:
procedure TForm1.btnClearPersonalListClearClick(Sender: TObject)
begin
lbPersonal.Items.Clear; //очистка списка lbPersonal при нажатии кнопки btnClearPersonalList
end;
Методы Add и Insert служат для добавления/вставки строк в список.
Функция Add (const S: string): Integer добавляет заданную параметром S строку в конец списка, а в качестве результата возвращает положение нового элемента в списке. Процедура Insert (Index: Integer; const S: string) вставляет строку S на позицию с номером, определяемым параметром Index. При этом элементы списка, находившиеся до операции вставки в указанной позиции и ниже, смещаются вниз.
Пример добавления к комбинированному списку ComboBox1 строки:
procedure TForm1.Button1Click(Sender: TObject)
begin
ComboBox1.Items.Add('Нажата кнопка Button1');
end;
Методы AddStrings и Assign используются для согласования содержимого списков. Оба метода позволяют при вызове увеличить содержимое списка более, чем на один элемент.
Функция AddObject (const S: String; AObject: TObject): Integer добавляет в конец списка строку S и связанную с ней ссылку на объект, указываемую параметром AObject.
Процедура Assign (Source: TPersistent) присваивает один объект другому, при этом объекты должны иметь совместимые типы. Применительно к спискам в результате выполнения процедуры происходит копирование текста из одного списка в другой с заменой содержимого. Если размеры списков (число элементов) не совпадают, то после замены число элементов заменяемого списка становится равным числу элементов копируемого списка.
Функция Equals (Strings: TStrings): Boolean используется для определения, содержат ли два списка строк одинаковый текст. Если списки равны по длине и совпадают все их соответствующие элементы, то функция возвращает значение True.
Пример согласования двух списков по содержанию:
if not(ListBox2.Items.Equals(ListBox1.Items)) then
begin
ListBox2.Clear;
ListBox2.Items.AddStrings(ListBox1.Items);
end;
или
if not(ListBox2.Items.Equals(ListBox1.Items)) then
ListBox2.Items.Assign(ListBox1.Items);
Если списки не совпадают, то содержимое списка ListBox1 копируется в список ListBox2, в результате содержимое списков становится одинаковым.
Процедура Indexof (const S: String): Integer определяет, содержится ли строка S в списке. В случае успешного поиска процедура возвращает номер позиции найденной строки в списке; если строковый элемент не найден, то возвращается значение -1.
Пример добавления отсутствующей строки:
if MyList.IndexOf(MyObject)=-1 then MyList.Add(MyObject);
Процедура SaveToFile (const FileName: string) сохраняет строковые элементы списка в файле. Если заданный файл отсутствует на диске, то он создается. Символы файла кодируются в системе ANSI.
Пример сохранения строковых элементов списка в файле:
ListBox3.SaveToFile('A:\PRIMER\fio.txt');
Процедура LoadFromFile (const FileName: string) заполняет список содержимым указанного текстового файла, при этом предыдущее содержимое списка очищается. Если заданный файл отсутствует на диске, то возникает исключительная ситуация.
Пример загрузки содержимого списка:
procedure TForm1.FormCreate (Sender: TObject);
begin
ComboBox2.Items.LoadFromFile('A:\Result\data.txt');
end;
При конструировании приложения изменение списка строк выполняется с помощью редактора String List editor (Строковый редактор). Его вызов выполняется через Инспектор Объектов двойным щелчком мыши в области значения свойства типа TStrings.