Подписаться на RSS рассылку
Главная » Учебник по Delphi для начинающих » Урок 4 - Изучаем компоненты TEdit, TMemo, TListBox

Урок 4 - Изучаем компоненты TEdit, TMemo, TListBox

Автор: Борисов Сергей

С кнопкой мы уже разобрались во втором уроке.

TEdit

Этот компонент представляет из себя текстовое поле ввода. У него есть такие же свойства как и у TButton.

Основные cвойсва:
Text — это текст который введен;
ReadOnly — разрешенн ли ввод;
MaxLength — максимальная длинна текста. Измеряется в колличестве символов;
HideSelection — будет ли сниматься выделение с текста при потере компонентом фокуса;
PasswordChar — символ отображаемый вполе вместо всех других символов - используется для скрытия пароля;

Основные события:
onChange — происходит при любом изменении отображаемого текста;
onClick — происходит при клике по компоненту;

Все остальные свойства аналогичны свойствам формы. Свойства формы рассмотренны в третьем уроке

Научимся программно извлекать введенные данные, а также записывать в поле. Для этого выложиv на форму 2 Button и 1 Edit.

Создаем событие по клику на первую кнопку и пишем следующий код:

ShowMessage('В Edit1 написан текст: '+Edit1.Text);

Текст "В Edit1 написан текст: " будет выводиться всегда во всех сообщениях. К нему мы прибавляем Edit1.Text, т.е. строчку содержащую текст введенный в Edit.

А по нажатию на вторую кнопку будем в поле Edit1 присваивать что-нибудь свое.

Edit1.Text:='Текст изменился';

В итоге у Вас должно получиться 2 процедуры:

procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessage('В Edit1 написан текст: '+Edit1.Text);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 Edit1.Text:='Текст изменился';
end;

Запускаем программу и пробуем.


TMemo

Основные свойства:
Lines — содержит все строки введенные в компонент;
ReadOnly — разрешенн ли ввод;
MaxLength — максимальная длинна текста. Измеряется в колличестве символов;
HideSelection — будет ли сниматься выделение с текста при потере компонентом фокуса;
ScrollBars — какие полосы прокрутки будут отображаться;
WantReturns — разрешено ли использовать клавишу Enter;
WantTabs — разрешено ли использовать клавишу Tab;
WordWrap — будет ли переноситься текст на новую строчку если не входит;

События аналогичны компоненту TEdit.

Теперь научимся работать с TMemo. Создайте новый проект (File –> New –> Application). Выложите на форму 1 TMemo и 1 TButton. Выделите Memo1 и найдите свойство Lines в инспекторе объектов. Щелкните по этому свойству, а затем по кнопке . Появится окно с текстом "Memo1" — это текст который будет в Memo при запуске программы. Его можно убрать, что и нужно сделать. Теперь создаем событие по нажатию на кнопку:

procedure TForm1.Button1Click(Sender: TObject);
begin
 Memo1.Lines.Add('Была нажата кнопка');
end;

Теперь после нажатия на кнопку в Memo1 добавится новая строчка.

Выложите еще одну кнопку и в событии onClick пишем:

Memo1.Lines.Delete(0);

Теперь после нажатия на вторую кнопку удалится самая первая строчка. "0" и означает что будет удалена нулевая строчка (нумерование ведется начиная с 0)

А если нам нужно взять i-тую строчку и вывести ее на экран мы пишем следующий код:

ShowMessage(Memo1.Lines[0]);

В данном случае мы извлекаем нулевую строчку.

Колличество написанных строк хранится тут:

Memo1.Lines.Count;

Обратите внимание, что тут нумерация идет с 1. А следовательно если будем прогонять все строки в цикле то будем писать так:

For i:=0 to Memo1.Lines.Count-1 do
begin
 {Выполняем то что нужно}
end;

Чтобы сохранить весь текст в файл просто пишем:

Memo1.Lines.SaveToFile('C:\Test.txt');

А чтобы загрузить из файла пишем:

Memo1.Lines.LoadFromFile('C:\Test.txt');

Чтобы очистить Memo:

Memo1.Clear;

TListBox

Основные cвойсва:
Items — коллекция строк;
MultiSelect — разрешено ли выделение нескольких строк;
Columns — колличество колонок;
Color — цвет фона;
Sorted — сортировка по алфавиту;

Остальные свойства были объяснены у других компонентов.

Добавление строчки делается так:

ListBox1.Items.Add('Текст');

А теперь разберемся как же добавить текст из Edit. Выложим на форму TListBox, TEdit и TButton. Создайте событие у кнопки onCreate:

ListBox1.Items.Add(Edit1.Text);

А если мы будем жать кнопку ничего не вводив в Edit, то будут добавляться пустые строки. Для того чтобы такого небыло просто перед добавлением сравним: пустое ли поле Edit. Если не пустое добавим. Сейчас разберем как это можно реализовать. Изменим ту же самую процедуру Button1Click. Вот как все должно выглядеть:

procedure TForm1.Button1Click(Sender: TObject);
begin
 if Edit1.Text<>'' then
 ListBox1.Items.Add(Edit1.Text);
end;

То же самое действие можно сделать немного по другому:

procedure TForm1.Button1Click(Sender: TObject);
begin
 if Edit1.Text<>'' then Exit;
 ListBox1.Items.Add(Edit1.Text);
end;

Exit означает завершение процедуры и прекращение ее выполнения дальше. Сначала проверяем написано ли что-нибудь в Edit1 и если там ничего не написанно то завершаем выполнение процедуры, тем самым строчка ListBox1.Items.Add(Edit1.Text); не будет выполненна, а значит и ничего не добавится.

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

ShowMessage(IntToStr(ListBox1.ItemIndex));

Если ничего не выделенно то ItemIndex=-1. Так как в процедуре ShowMessage входной параметр строкового типа, а ItemIndex целочисленного, то необходимо перевести из целочисленного типа в строковый. Проще говоря нужно перевести из Integer в String.

IntToStr — это и есть функция перевода из целочисленного типа в строковый, а StrToInt — обратно.

Можно не только получить выделенную строку, но и программно выделить нужную строку. Допустим нужно выделить 2 стрку:

ListBox1.ItemIndex:=1;

Так как нумерация ведется начиная с 0 то присваиваем не 2 а 1.

Чтобы удалить какую-либо строку:

ListBox1.Items.Delete(0);

В данном случае удаляем строку под номером 0 - самую первую в списке.

А как удалить выделенную строку? Очень просто:

ListBox1.Items.Delete(ListBox1.ItemIndex);

Чтобы очистить ListBox не совсем обязательно удалять каждую строчку можно просто вызвать функцию:

ListBox1.Clear;

Урок 5 - Изучаем компоненты TLabel, TPanel, TMainMenu

Просмотров: 39195

Обсудить на форуме

Copyright © 2008-2016 Программирование на Delphi для начинающих и не только

Полнота авторских прав на все материалы, опубликованные на сервере DelphiDevelop.ru принадлежит их авторам

Перепечатка материалов разрешается с указанием авторства и гиперссылки на первоисточник информации

Хостинг от uCoz

Автор проекта: Борисов Сергей

e-mail: save-x@yandex.ru

Связь с администрацией сайта