
Лекция 4 Работа с текстом.pptx
- Количество слайдов: 52
Работа с текстом
Работа с текстом • Компоненты Delphi для работы с текстом: – TLabel – надпись/ метка – TEdit – однострочное поле редактирования – TMemo – многострочное поле редактирования – TList. Box - список – TCombo. Box – комбинированный список – TRadio. Group – список зависимых переключателей – и др
Некоторые свойства компонента TEdit Основное свойство – Text Основное событие - On. Change Property Modified: Boolean; Содержит True, если текст был изменен. Property Password. Char: Char; Если символ задан, он заменяет собой любой символ текста при отображении в окне. Property Read. Only: Boolean; Если содержит True, текст не может изменяться Property Sel. Length: Integer; Содержит длину выделенной части Property Sel. Start: Integer; Номер первого символа выделенной части
Некоторые свойства компонента TEdit Property Sel. Text: String; Содержит выделенную часть текста Методы Procedure Clear; Удаляет весь текст. Procedure Clear. Selection; Удаляет выделенный текст Procedure Copy. To. Clipboard; Копировать, Procedure Cut. To. Clipboard; вырезать, вставить Procedure Paste. From. Clipboard; выделенную часть Property Select. All; Выделить весь текст
Некоторые свойства компонента TMemo Основное свойство – Lines Property Scroll. Bars: TScroll. Style; Определяет наличие полос прокрутки. Property Text: String; Содержит весь текст без разбиения на строки. Специфичные методы класса аналогичны методам класса TEdit. TMemo
Компоненты TMemo и TEdit Пример. Найти и выделить текст из поля Edit 1 в многострочном поле Memo 1. Procedure TForm 1. Button 1 Click(Sender: TObject); var k: integer; Begin Memo 1. Hide. Selection : = false; k : = pos(Edit 1. Text, Memo 1. Text); if k>0 then begin Memo 1. Sel. Start : = k-1; Memo 1. Sel. Length : = Length(Edit 1. Text); end; End;
Список TList. Box • Представляет собой стандартный для Windows список выбора. • В компоненте предусмотрена возможность программной прорисовки элементов, поэтому список может содержать не только строки, но и произвольные изображения
Некоторые свойства компонента TList Основное свойство – Items Property Canvas: TCanvas; Канва для программной прорисовки элементов Property Columns: Long. Int; Определяет количество колонок элементов в списке Property Item. Height: Integer; Высота элемента в пикселях (если Style = lb. Owner. Draw. Fixed) Property Item. Index: Integer; Содержит индекс сфокусированного элемента Property Multi. Select: Boolean; Разрешает / отменяет возможность выбора нескольких элементов
Некоторые свойства компонента TList Property Sel. Count: Integer; Содержит количество выбранных элементов Property Selected[X: Integer] : Boolean; Содержит признак выбора для элемента с индексом X (нумерация с нуля) Property Sorted: Boolean; Разрешает / отменяет сортировку строк в алфавитном порядке Property Multi. Select: Boolean; Разрешает / отменяет возможность выбора нескольких элементов
Некоторые свойства компонента TList Property Style: TList. Box. Style; Определяет способ прорисовки элементов: lb. Standard – элементы рисует Windows lb. Owner. Draw. Fixed – рисует программа, все элементы имеют высоту Item. Height lb. Owner. Draw. Variable – рисует программа, элементы имеют разную высоту
Классы- списки В Delphi используются три основных вида списков: · Классы TStrings и TString. List · Класс TList • Классы TCollection и TCollection. Item
Работа с текстом • Класс TStrings является базовым (абстрактным) классом для операций со строковыми данными и представляет собой контейнер для строк (коллекцию или массив строк)
Работа с текстом • Многие компоненты имеют свойства типа TStrings. Например: • • Memo -> Lines List. Box -> Items Combo. Box -> Items и т. д.
Некоторые свойства класса TStrings Свойство *Property Integer; Count: Описание Текущее количество строк в наборе. * Property Names [Index: Integer]: String; Для строки с индексом Index возвращает имя элемента строки Name, если это строка вида Name=Value (без пробелов! ‘My. Name=Alex’), в противном случае возвращает пустую строку. Property Objects[ Index: Integer]: t. Object; Абстрактное свойство, открывает доступ к объекту, связанному со строкой с номером Index.
Некоторые свойства класса TStrings Описание Свойство Property Абстрактное свойство, Strings[Index: Integer]: предназначено для получения строки String; с номером Index. Содержит строки объекта в виде одной большой строки с символами Property Text: String; возврата каретки и перехода на новую строку. * Property Values По части Name отыскивает в наборе [const Name: String]: и возвращает часть Value для строк String; вида Name=Value.
Класс TStrings Пример: 1. Заполнить список значениями «Строка №» 0, 1, 2 … for i: =0 to List. Box 1. Items. Count-1 do List. Box 1. Items[i]: = ‘Строка № ’+inttostr(i); 2. В начало каждой строки поля Memo добавить «*» for i: =0 to Memo 1. Lines. Count-1 do begin s : = Memo 1. Lines[i]; insert(‘*’, s, 1); Memo 1. Lines[i] : = s; end;
Некоторые методы класса TStrings Метод Описание Добавляет строку в конец Function Add(const набора данных и возвращает ее S: String): Integer; индекс Function Add. Object Добавляет строку в набор и (const S: String; связывает с ней объект. a. Object: t. Object): Возвращает индекс строки. Integer; Добавляет в набор группу строк. Procedure Если с этой группой связаны Add. Strings (Strings: объекты, то они тоже Tstrings); добавляются в список.
Некоторые методы класса TStrings Пример. При нажатии на кнопку 1, добавлять в Memo 1 информацию о дате и времени нажатия кнопки. Procedure TForm 1. Button 1 Click(Sender: TObject); Begin Memo 1. Lines. Add(‘Была нажата кнопка 1’+ Date. Time. To. Str(Date)); End;
Некоторые методы класса TStrings Пример. При нажатии на кнопку 2, в Memo 1 добавить содержимое списка List. Box и Memo 2. Procedure TForm 1. Button 2 Click(Sender: TObject); Begin Memo 1. Lines. Add. Strings(List. Box 1. Items); Memo 1. Lines. Add. Strings(Memo 2. Lines); End;
Некоторые методы класса TStrings Метод Procedure Insert (Index: Integer; const S: String); Procedure Insert. Object (Index: Integer; const S: String; a. Object: t. Object); Описание Абстрактный метод. Вставляет строку S в набор на позицию Index. Вставляет строку и объект в набор и присваивает им индекс Index.
Некоторые методы класса TStrings Метод Описание То же, что и Add, но не Procedure Append возвращает индекс вставленной (const s: String); строки. Уничтожает прежний набор строк и загружает из Source Procedure Assign новый набор. В случае неудачи (Source: Tpersistent); возникает исключение e. Convert. Error.
Некоторые методы класса TStrings Пример. При нажатии на кнопку 4, скопировать содержимое Memo 1 в Memo 2. Procedure TForm 1. Button 4 Click(Sender: TObject); Begin Memo 2. Lines. Assign(Memo 1. Lines); End;
Некоторые методы класса TStrings Метод Описание Абстрактный метод. Используется потомками для Procedure Clear; очистки набора и связанных с ним объектов. Абстрактный метод. Уничтожает элемент набора Procedure Delete( (строку) с номером Index и Index: Integer); освобождает связанную с ним память.
Некоторые методы класса TStrings Пример. При нажатии на кнопку 5, если количество элементов списка больше 5 – удалить 3 элемент; иначе очистить весь список. Procedure TForm 1. Button 5 Click(Sender: TObject); Begin if List. Box 1. Count>5 then List. Box 1. Items. Delete(2) else List. Box 1. Items. Clear; End;
Некоторые методы класса TStrings Метод Procedure Begin. Update; Procedure End. Update; Описание Дает возможность объекту определить, что производится модификация некоторого свойства. Сортировка строк при этом блокируется до вызова End. Update. Сбрасывает флаг изменения и при необходимости сортирует строки.
Некоторые методы класса TStrings Пример. При нажатии на кнопку 6 заполнить комбинированный список Combo. Box 1 элементами списка List. Box 1 четной длины Procedure TForm 1. Button 6 Click(Sender: TObject); Begin Combo. Box 1. Items. Begin. Update; Combo. Box 1. Items. Clear; for i: = 0 to List. Box 1. Count-1 do if not odd(length(List. Box 1. Items[i])) then Combo. Box 1. Items. Add(List. Box 1. Items[i]); Combo. Box. Items. End. Update; End;
Некоторые методы класса TStrings Метод Function Equals( Strings: t. Strings): Boolean; Procedure. Exchange (Index 1, Index 2: Integer); Procedure Move(Cur. Index, Nw. Index: Integer); Описание Сравнивает построчно текущий набор с набором Strings и возвращает True, если наборы идентичны. Меняет местами две строки. Если с ними связаны объекты, они также меняются местами. Перемещает строку с текущей позиции Cur. Index на позицию Nw. Index.
Некоторые методы класса TStrings Пример. При нажатии на кнопку 7 проверить идентичны ли элементы списков List. Box 1 и Combo. Box 1. Если да, то переместить первый элемент List. Box 1 на 2 -ю позицию, иначе поменять местами первый и последний элементы списка List. Box 1 Procedure TForm 1. Button 7 Click(Sender: TObject); Begin if Combo. Box 1. Items. Equals(List. Box 1. Items) then List. Box 1. Items. Move(0, 1) else List. Box 1. Items. Exchange(0, List. Box 1. Count-1); End;
Некоторые методы класса TStrings Метод Function (const S: Integer; Index. Of String): Function Index. Of. Name (const Name: String): Integer; Function Index. Of. Object (a. Object: Tobject): Integer; Описание Возвращает индекс первого найденного элемента, равного строке S. Если строка не найдена, возвращается – 1. Возвращает индекс первого найденного элемента, имя которого Name (в формате Name=Value). Если строка не найдена, то результат – 1. Возвращает индекс первой найденной строки, связанной с объектом a. Object или – 1, если такой объект не найден.
Некоторые методы класса TStrings Пример. При нажатии на кнопку 8 удалить из списка List. Box 1 все строки «Delphi» . Procedure TForm 1. Button 8 Click(Sender: TObject); Var n: integer; Begin while List. Box 1. Items. Index. Of(‘Delphi’)>=0 do begin n : = List. Box 1. Items. Index. Of(‘Delphi’); List. Box 1. Items. Delete(n); end; End;
Некоторые методы класса TStrings Метод Описание Procedure Загружает набор строк из файла, Load. From. File (const заданного в File. Name: String); Procedure Save. To. File (const File. Name: Сохраняет набор в файл File. Name. String);
Некоторые методы класса TStrings Пример. Содержимое Memo 1 записать в файл 1. txt. В List. Box 1 загрузить содержимое файла input. txt. Procedure TForm 1. Button 9 Click(Sender: TObject); Begin Memo 1. Lines. Save. To. File(‘ 1. txt’); List. Box 1. Items. Load. From. File(‘input. txt’); End;
Работа с текстом • Методы Add, Append, Insert, Clear и т. п. в классе TStrings – абстрактные. Поэтому следует использовать их через классыпотомков. Например, TString. List. Замечание: • Создавать экземпляры класса TStrings не рекомендуется, так как часть его методов – являются абстрактрными
Класс TString. List • TString. List - (cписок строк) это невизуальная структура данных хранящая в памяти список строк, и имеющая свойства и методы для работы со строками типа TString. Для работы со списком строк типа TString. List его сначала необходимо создать с помощью конструктора - Create: var Str. List: TString. List; begin Str. List: =TString. List. Create;
Некоторые свойства и методы класса TString. List Property Duplicates: TDuplicates; Свойство, позволяющее управлять возможностью размещения в наборе двух и более идентичных строк. TDuplicates = (dup. Ignore, dup. Accept, dup. Error ); Property Sorted: Boolean; Признак необходимости сортировки строк в алфавитном порядке. Function Find (const S: String; var Index: Integer) : Boolean; Ищет в отсортированном наборе строку S и в случае успеха в параметре Index возвращает ее индекс.
Некоторые свойства и методы класса TString. List Property On. Change: TNotify. Event; Определяет реакцию на изменение набора строк. Возникает последнего изменения. Property On. Changing: Tnotify. Event; Определяет реакцию на изменение набора строк. Возникает до очередного изменения.
Пример работы с TString. List Пример. Пусть в файле записана информация о росте и весе студентов группы. Нужно выделить группу студентов, чей рост или вес встречаются наиболее часто. Type TStud = record name: string[40]; rost: byte; ves: single; end; var f: file of TStud;
Procedure TForm 1. Button 1 Click(Sender: TObject); Var Rost. Lst, Kol. Lst, Nam. Lst: TString. List; x: TStud; k, kmax: integer; Begin assignfile(f); Reset(f); Rost. Lst : = TString. List. Create; Kol. Lst : = TString. List. Create; Namt. Lst : = TString. List. Create; kmax : = 1; while not eof(f) do begin Read(f, x); k : = Rost. Lst. Index. Of(inttostr(x. rost));
if k=-1 then begin Rost. Lst. Add(inttostr(x. rost)); Nam. Lst. Add(inttostr(x. name)); Kol. Lst. Add(‘ 1’); end else begin Nam. Lst[k]: =Nam. Lst[k]+’, ’+x. name; Kol. Lst[k]: =inttostr(strtoint(Kol. Lst[k])+1); end; if Kol. Lst[k]>Kol. Lst[kmax] then kmax : = k; end; Memo 1. Lines. Add(Nam. Lst[kmax]); End;
Самостоятельно • Работа с компонентами страницы Standard: – TLabel – TEdit – TMemo – TList. Box – TCombo. Box – TGroup. Box – TRadio. Group – TCheck. Box
ПРОЦЕДУРЫ И ФУНКЦИИ, РЕАЛИЗУЮЩИЕ ДИАЛОГИ
Процедуры и функции, реализующие диалоги • Вывод окна сообщений: – Show. Message – Message. Dlg. Pos • Окно для ввода информации: – Input. Box – Input. Query
Процедура SHOWMESSAGE procedure Show. Message(const Msg: String); Show. Message • Процедура отображает окно сообщения с кнопкой OK. • Заголовок содержит название исполняемого файла приложения, а строка Msg выводится как текст сообщения. If Edit 1. Text=‘’ then Show. Message(‘Введите текст!’); Show. Message
Функция MESSAGEDLG function Message. Dlg(const Msg: String; Message. Dlg Msg AType: TMsg. Dlg. Type; AButtons: TMsg. Dlg. Buttons; AType AButtons Help. Ctx: Longint): Word; Help. Ctx • Функция отображает окно сообщений в центре экрана для получения ответа пользователя. Параметры: • Msg - текст сообщения • AType – тип окна (mt. Warning, mt. Error, mt. Custom, тип окна mt. Information, mt. Confirmation ) • AButtons – набор кнопок окна (mb. Yes, mb. No, набор кнопок окна mb. Ok, mb. Cancel, mb. Help, mb. Abort, mb. Retry, mb. Ignore, mb. All)
Функция MESSAGEDLG function Message. Dlg(const Msg: String; Message. Dlg Msg AType: TMsg. Dlg. Type; AButtons: TMsg. Dlg. Buttons; AType AButtons Help. Ctx: Longint): Word; Help. Ctx • Для параметра AButtons имеются две константы: mb. Yes. No. Cancel и mb. OKCancel • Параметр Help. Ctx определяет контекст (тему) справки, которая появляется во время отображения диалога при нажатии F 1. Обычно Help. Ctx = 0
Функция MESSAGEDLG function Message. Dlg(const Msg: String; AType: TMsg. Dlg. Type; Message. Dlg AButtons: TMsg. Dlg. Buttons; Help. Ctx: Longint): Word; If Edit 1. Text=‘’ then Message. Dlg(‘Вы не ввели текст!’, mt. Warning, Message. Dlg [mb. OK, mb. Cancel], 0);
Функция MESSAGEDLG Var rez : TModal. Result; … Rez : = Message. Dlg(‘Сохранить файл? ’, Message. Dlg mt. Confirmation, [mb. Yes, mb. No], 0); if Rez = mr. Yes then … else … ;
Функция Message. Dlg. Pos function Message. Dlg. Pos(const Msg: string; Dlg. Type: TMsg. Dlg. Type; Buttons: TMsg. Dlg. Buttons; Help. Ctx: Integer; X: Integer; Y: Integer): Integer; • Функция работает также, как и Message. Dlg, но выводит окно сообщений в позиции, заданной координатами X и Y. Rez : = Message. Dlg. Pos(‘Сохранить файл? ’, Message. Dlg. Pos mt. Confirmation, [mb. Yes, mb. No], 0, 100);
Функция Input. Box function Input. Box(const ACaption: string; const APrompt: Input. Box string; const ADefault: string): string; • Функция отображает информации. окно для ввода Параметры: • ACaption - заголовок окна • APromt – Строка-предложение для ввода • ADefault – Текст, который записан в поле ввода при открытии окна
Функция Input. Box function Input. Box(const ACaption: string; const APrompt: Input. Box string; const ADefault: string): string; S : = Input. Box('Параметры сохранения файла', Input. Box 'Введите путь: ', 'c: 1. txt'); Show. Message(‘Вы ввели: ’, S);
Функция Input. Query function Input. Query(const ACaption: string; const APrompt: Input. Query string; var Value: string): boolean; • Функция отображает окно для ввода информации. • Возвращает TRUE, если в окне нажата кнопка OK, иначе FALSE Параметры: • ACaption - заголовок окна • APromt – Строка-предложение для ввода • Value – параметр, с которого считывается значение при открытии окна, и в который записывается введенный текст
Функция Input. Query var Value: string; f : boolean; … Value : = 'c: 1. txt' f : = Input. Query('Параметры сохранения файла', Input. Query 'Введите путь: ', Value); if f then …
Лекция 4 Работа с текстом.pptx