Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
СПРАВКА. Для отображения на экране списка значений в Lazarus предназначен компонент ListBox
Для отображения на экране списка значений в Lazarus предназначен компонент ListBox. Этот компонент имеет в своем составе объект-список, содержащий набор строк с ассоциированными с ними произвольными объектами. Для того, чтобы отобразить последовательно на экране данные, которые вводятся в строку ввода, можно выполнить оператор ListBox1.Items.Add(Edit1.Text). Если нужно вывести в ListBox элементы массива, то используют оператор ListBox1.Items.Add(IntToStr(a[i])). Комбинированная строка ввода (поле со списком) ComboBox объединяет в себе возможности строки ввода Edit и списка ListBox. Добавить элемент в список можно вызовом ComboBox1. Items.Add(< строка>). Свойство DroppedDown логического типа указывает, отображается ли раскрывающийся список в данный момент. Свойство доступно только на этапе выполнения программы. Например, ComboBox1. DroppedDown: =true. Установку начальных значений можно задать в обработчике события OnCreate для формы. Это событие возникает в момент создания формы. Размещение операторов в этом обработчике во многих случаях эквивалентно размещению операторов в секции инициализации модуля. Заготовка обработчика этого события создается при выполнении двойного щелчка по форме Form1. Методы ListBox1.Clear, ComboBox1.Clear, Memo1.Clear и Edit1.Clear позволяют очистить соответствующие компоненты. В компоненте Edit можно ввести сразу все элементы массива, разделяя их пробелами. Нужно помнить, что количество пробелов-разделителей может быть любым.Цикл для пропуска пробелов между словами:
while (st[i]=' ') and (i< =length(st)) do inc(i); Слова можно пропустить аналогичным циклом: while (st[i]< > ' ') and (i< =length(st)) do inc(i);
Эти два цикла должны быть включены во внешний цикл, который закончится тогда, когда закончится строка. Пример выделения всех слов строки st: i: =1; while i< =length(st) do begin while (st[i]=' ') and (i< =length(st)) do inc(i); k: =i; while (st[i]< > ' ') and (i< =length(st)) do inc(i); sl: =copy(st, k, i-k); {обработка выделенного слова sl} end;
В отличие от строки ввода, текстовый редактор Memo может содержать любое количество строк. Его свойство text представляет собой строку, состоящую из находящихся в поле Memo строк, разделенных последовательностью символов с кодами 13 и 10 (конец строки и переход на новую строку). Эти символы добавляются в поле Memo при нажатии клавши Enter. Для выделения подстроки, содержащей элемент массива, нужно найти символ с кодом 13 (#13), скопировать в новую подстроку, а затем удалить ее вместе с кодами 13 и 10 и продолжить поиск конца строки. В приведенном ниже фрагменте программы вначале в строку st записывается содержимое всего окна memo1. Затем отыскивается позиция конца первой строки (n) и эта строка копируется в st1 и удаляется из st. На рисунке 3 приведен результат работы программы.
procedure TForm1.Button1Click(Sender: TObject); var st, st1: string; n: integer; begin st: =memo1.Text; n: =pos(#13, st); st1: =copy(st, 1, n-1); label1.Caption: ='Первый элемент = '+st1; delete(st, 1, n+1); ShowMessage('остальные элементы: '+#13+st); end;
Рисунок 3 - Результат обработки memo.text Приведенный выше пример не учитывает того обстоятельства, что любая подстрока может содержать любое количество пробелов. Их нужно удалить перед преобразованием строки в число.
|