Материал: Мансуров. Основы программирования в среде Lazarus. 2010

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

Рис. 6.41. Стандартный диалог выбора шрифта в Windows.

Рис. 6.42. Стандартный диалог выбора шрифта в Linux.

Точно так же пользователь может устанавливать цвет фона окна TMemo.

561

6.3 Визуальное программирование в среде Lazarus

____________________________________________________________________

Для этого используется компонент выбора цвета TColorDialog, располо-

женный в той же вкладке Dialogs. Видоизмените только что рассмотренный пример. Добавьте на форму компонент TColorDialog и кнопку, рис. 6.43.

Рис. 6.43. Форма приложения

Напишите следующий обработчик для кнопки "Изменить цвет фона":

procedure TForm1.Button3Click(Sender: TObject);

begin

if ColorDialog1.Execute then

Memo1.Color:= ColorDialog1.Color;

end;

Теперь пользователь может выбирать и устанавливать нужный ему цвет фона, рис. 6.44, 6.45.

Рис. 6.44. Стандартный диалог выбора цвета фона в Windows.

562

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

Рис. 6.45. Стандартный диалог выбора цвета фона в Linux.

Для дальнейшего нам понадобится умение работать с классом

TStringList. Класс TStringList имеет широкий набор свойств и мето-

дов для работы со списками строк. Рассмотрим основные свойства и методы этого класса.

 

Свойства класса:

 

 

Таблица 6.3

Count: integer;

 

Количество строк в наборе.

Strings[Index: Integer]:

 

Строка с индексом Index

string;

 

 

Text: string;

 

Весь набор строк представляется в виде одной

 

 

строки с разделителями возврат каретки и перенос

 

 

строки (#13#10) между строками.

Duplicates: TDuplicates;

 

Разрешает или не разрешает добавление одинако-

 

 

вых строк. Если Duplicates= dupIgnore

 

 

одинаковая строка не добавляется, при

 

 

Duplicates= dupAccept – добавление одина-

 

 

ковых строк в набор строк разрешено, при

 

 

Duplicates= dupError – при попытке добав-

 

 

ления одинаковых строк генерируется исключение

 

 

EListError

 

 

 

Sorted: boolean

 

Если Sorted= true – строки набора автоматиче-

 

 

ски сортируются по алфавиту.

563

6.3 Визуальное программирование в среде Lazarus

____________________________________________________________________

Методы класса:

 

Таблица 6.4

function Add(const S: string):

Добавляет строку в набор данных и

integer;

возвращает ее индекс

procedure AddStrings(Strings:

Добавляет к текущему набору новый

TStrings);

набор строк

procedure Append(const S:string) ;

Добавляет к текущему набору новый

 

набор строк, но не возвращает индекс

 

вставленной строки

procedure Assign(Source:

Уничтожает прежний набор строк и

TPersistent);

загружает из Source новый набор. В

 

случае неудачи возникает исключение

 

EсоnvertError

procedure Clear;

Очищает набор данных и освобождает

 

связанную с ним память

procedure Delete(Index: integer);

Уничтожает элемент набора с индек-

 

сом Index и освобождает связанную с

 

ним память

function Equals(Strings:TStrings):

Сравнивает построчно текущий набор

boolean;

данных с набором Strings и возвращает

 

True, если наборы идентичны

function IndexOf(const S:string):

Для строки S возвращает ее индекс или

integer;

-1, если такой строки в наборе нет

procedure Insert(Index: integer;

Вставляет строку в набор и присваива-

const S: strings;

ет ей индекс Index

procedure LoadFromFile (const Fi-

Загружает набор из файла

leName: string;

 

 

 

procedure LoadFromStream (Stream:

Загружает набор из потока

TStream) ;

 

 

 

procedure Move(Curindex, Newindex:

Перемещает строку из положения

integer;

Curindex в положение Newindex

procedure SaveToFile(const

Сохраняет набор в файле

FileName: string;

 

 

 

procedure SaveToStream (Stream:

Сохраняет набор в потоке

TStream);

 

function Find(const S: string; var

Поиск в отсортированном наборе строк

Index: integer):Boolean;

строки S. Если такая строка имеется, то

 

ее индекс содержится в параметре

 

Index. Если набор строк неотсортиро-

 

ван, то необходимо использовать

 

функцию IndexOf

Sort;

Сортирует строки списка, свойство

 

Sorted которого установлено в false, в

 

возрастающей алфавитной последова-

 

тельности. Если Sorted = true, то список

 

сортируется автоматически.

 

 

564

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

Как видите, свойства и методы класса TStringList практически совпа-

дают (кроме некоторых) с TMemo. Только строки в TStringList содержатся в свойстве Strings, а в TMemo в свойстве Lines.

Задавать значения строкам с помощью оператора присваивания можно только после того, как строка создана, например методами Add или

AddStrings.

Довольно часто TMemo заполняют содержимым какого-нибудь текстового файла или набор строк TStringList формируется из записей текстового файла. Для этого существует метод

LoadFromFile(const FileName: string);

где FileName имя файла, включая путь к нему. Если файл расположен в од-

ной папке с программой, путь указывать не обязательно.

Точно так же, набор строк можно сохранить в виде текстового файла мето-

дом

SaveToFile(const FileName: string);

При работе с текстовыми файлами следует иметь в виду, что при выводе в

TMemo файла с русским текстом, в Windows буквы будут отображаться некор-

ректно. Это вызвано тем, что текстовые файлы в Windows имеют кодировку

CP-1251. Необходимо сначала преобразовать содержимое файла в кодировку

UTF-8. Это можно сделать следующим образом:

procedure Ansi_UTF8; var

tfile: TStringList; str: string;

begin

565

Смотрите также:

11 Горм +
113
14
1433
1511
1632
199
204
2N4264RE
3773