Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delphi -Мет по лабраб_ Часть_2.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.51 Mб
Скачать

7.3.4. Создание процедуры-обработчики события ComboBox1KeyPress

В соответствии с заданием необходимо, чтобы при нажатии клавиши Enter строка символов, которую пользователь набрал в поле редактирования, переносилась в список выбора компонента ComboBox1.

Для создания процедуры-обработчика этого события необходимо в Инспекторе Объектов выбрать компонент ComboBox1, на странице Events (События) найти событие OnKeyPress и дважды щелкнуть «мышью» по его правой части. Курсор установится в тексте процедуры procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char), которая осуществляет обработку события нажатия клавиши на клавиатуре. Наберите операторы этой процедуры, пользуясь текстом модуля UnStr.

В результате выполнения этой процедуры при нажатии клавиши Enter строка из поля редактирования переносится в список выбора и очищается поле редактирования.

7.3.5. Создание процедуры-обработчики события нажатия клавиши «мыши» ComboBox1Click

Создание процедуры procedure TForm1.ComboBox1Click(Sender: TObject) выполняется аналогично процессу создания процедуры-обработчика события OnKeyPress компонента ComboBox1 (см. раздел 7.3.4).

Пользуясь текстом модуля UnStr, наберите операторы, которые осуществляют основной алгоритм обработки символов выбранной строки.

7.3.6. Работа с приложением

Запустите созданное приложение. Занесите с помощью окна редактирования исходные данные в список выбора компонента ComboBox1. Ввод каждой строки завершайте нажатием клавиши Enter. Далее раскройте список выбора, щелкните «мышью» по нужной строке в результате будет определено количество слов в строке и произойдет замена строчных букв прописными.

Преобразование строчных букв в прописные основано на том, что код строчной буквы больше кода прописной. Код прописных букв от «а» до «я» больше соответствующих строчных букв на 32 (см. таблицу кодов Ansi). Например, код символа «а» равен 224, а код символа «А» 192. Эта закономерность сохраняется и для остальных букв русского алфавита.

7.4. Текст модуля UnStr

Unit UnStr;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Buttons;

type

TForm1 = class(TForm)

Label1: TLabel;

ComboBox1: TComboBox;

Label2: TLabel;

Label3: TLabel;

BitBtn1: TBitBtn;

Label4: TLabel;

Label5: TLabel;

procedure FormActivate(Sender: TObject);

procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);

procedure ComboBox1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

//Обработка события активизации Формы

procedure TForm1.FormActivate(Sender: TObject);

begin

ComboBox1.SetFocus;

end;

// Обработка события ввода символа и нажатия клавиши Enter

procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);

begin

// если нажата клавиша Enter, то строка из поля редактирования

// переносится в список выбора ComboBox1

if key=#13 then

begin

ComboBox1.Items.Add(ComboBox1.Text);

ComboBox1.Text:=''; // очистка окна редактирования

end;

end;

// Обработка события нажатия клавиши «мыши» в списке выбора

procedure TForm1.ComboBox1Click(Sender: TObject);

var

st : string;

n,i,nst,ind: integer;

begin

n:=0; // n содержит количество слов

ind:=0;

nst:=ComboBox1.ItemIndex; // определение номера выбранной строки

st:=ComboBox1.Items[nst]; // st присваивается выбранная строка

// Определение количества слов в выбранной строке st

for i:=1 to Length(st) do

case ind of

0: if st[i]<>' ' then //если встретился символ

begin

ind:=1;

n:=n+1; //количество слов увеличивается на единицу

end;

1: if st[i]=' ' then //если встретился пробел

ind:=0;

end;

Label3.Caption:=IntTotr(n); //вывод количества слов в Label3

// Замена строчных символов русского языка на прописные

for i:=1 to Length(st) do

if (st[i]>='а') and (st[i]<='я') then

st[i]:=chr(ord(st[i])-32);

Label5.Caption:=st; //полученная строка выводится в Label5

end;

end.