Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






СПРАВКА. Для отображения на экране списка значений в 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

Приведенный выше пример не учитывает того обстоятельства, что любая подстрока может содержать любое количество пробелов. Их нужно удалить перед преобразованием строки в число.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.