37828

ОБРОБКА ПОДІЙ У DELPHI. КОМПОНЕНТИ TLISTBOX І TCOMBOBOX

Лабораторная работа

Информатика, кибернетика и программирование

Типи даних для роботи з рядками Короткі рядки типу ShortString і String[N]:Короткі рядки мають фіксована кількість символів. Рядок ShortString може містити 255 символів. Рядок String[N] може містити N символів але не більш 255. На етапі виконання програма визначає необхідну довжину ланцюжка символів і звертається до ядра операційної системи з вимогою виділити необхідну пам'ять.

Украинкский

2013-09-25

69 KB

6 чел.

ЛАБОРАТОРНА РОБОТА №8

Тема роботи: ОБРОБКА ПОДІЙ У DELPHI. КОМПОНЕНТИ TLISTBOX І TCOMBOBOX

Мета роботи: вивчити обробку подій і компоненти TListBox і TComboBox. Створити дизайн і програму обробки рядків з використанням цих компонентів.

Рекомендована література:

  1.  Бобровский С. И. Delphi 7. Учебный курс. - С.Пб. Питер, 2004. – 735 с.
  2.  Я. М. Глинский Інформатика. Алгоритмізація і програмування. Книжка 1. -  Львів, 2003. – 198 с.
  3.  Симонович С.В., Евсеев Г.А. Занимательное программирование:Delphi. – М.: АСТ-Пресс Книга; Издательство «Развитие», 2003. – 368 с.
  4.  Кен Хендерсон. Руководство Разработчика баз данных в Delphi 2. – К. Диалектика, 1997, - 543 с.

Контрольні запитання:

  1.  Які типи рядкових змінних у Delphi Ви знаєте?
  2.  Вкажіть на особливості кожного типу рядкових змінних.
  3.  Що називають обробником подій у Delphi&
  4.  Який інструментарій використовують для створення коду обробника подій?

Теоретичні відомості.

1. Типи даних для роботи з рядками

Короткі рядки типу ShortString і String[N]:Короткі рядки мають фіксована кількість символів. Рядок ShortString може містити 255 символів. Рядок String[N] може містити N символів, але не більш 255. Перший байт цих перемінних містить довжину рядка.

Довгий рядок типу String : При роботі з цим типом даних пам'ять виділяється в міру необхідності (динамічно) і може займати всю доступну програмі пам'ять. Спочатку компілятор виділяє для перемінної 4 байти, у яких розміщається номер комірки пам'яті, починаючи з якої буде розташовуватися символьний рядок. На етапі виконання програма визначає необхідну довжину ланцюжка символів і звертається до ядра операційної системи з вимогою виділити необхідну пам'ять.

Процедури і функції для роботи з короткими і довгими рядками представлені в додатку.

Широкий рядок типу WideString : Уведена для забезпечення сумісності з компонентами, заснованими на OLE-технології. Від типу String відрізняється тільки тим, що для представлення кожного символу використовується не один, а два байти.

Нуль-термінальний рядок типу Pсhar : Являє собою ланцюжок символів, обмежений символом #0. Максимальна довжина рядка обмежена тільки доступній програмі пам'яттю. Нуль-термінальні рядки широко використовуються при звертаннях до API-функцій Windows (API - Application Program Interface - інтерфейс прикладних програм).

Представлення рядка у виді масиву символів: Рядок може бути описаний як масив символів. Якщо масив має нульову границю, він сумісний з типом PChar.

Var

MasS : array[1..100] of Char;

На відміну від нуль-термінального рядка тут довжина має фіксоване значення і не може змінюватися в процесі виконання програми.

2. Компонент TlistBox

Компонент TListBox являє собою список, елементи якого вибираються за допомогою клавіатури або миші. Список елементів задається властивістю Items, методи Add, Delete і Insert якого використовуються для додавання, видалення і вставки рядків. Об'єкт Items (TString) зберігає рядка, що знаходяться в списку. Для визначення номера виділеного елемента використовується властивість ItemIndex.

3. Компонент TСomboBox

Комбінований список TComboBox являє собою комбінацію списку TListBox і редактори TEdit, тому практично усі властивості запозичені у цих компонентів. Для роботи з вікном редагування використовується властивість Text як у TEdit, а для роботи зі списком вибору - властивість Items як у TListBox. Існує. П'ять модифікацій компонента, обумовлених його властивістю Style. У модифікації csSimple список завжди розкритий, в інших він розкривається після натискання кнопки праворуч від редактора.

4. Компонент TbitBtn

Компонент TBitBtn розташований на сторінці Additonal палітри компонентів і являє собою різновид стандартної кнопки TBotton. Його відмінна риса - наявність растрового зображення на поверхні кнопки, що визначається властивістю Clyph. Крім того, мається властивість Kind, що задає одну з 11 стандартних різновидів кнопок. Натискання будь-якої з них, крім bkCustom і bkHelp закриває модальне вікно і повертає в програму результат mr*** (наприклад bkOk - mrOk). Кнопка bkClose закриває головне вікно і завершує роботу npoграммы.

5. Обробка подій

Про усіх подіях, що відбуваються, таких, як створення форми, натискання кнопки миші або клавіатури і т.д., ядро Windows інформує вікна шляхом посилки відповідних повідомлень. Середовище DELPHI дозволяє приймати й обробляти більшість таких повідомлень. Кожен компонент містить обробники повідомлень на сторінки Events інспектори об'єктів.

Для створення обробника події необхідно розкрити список компонентів у верхній частині вікна інспектора об'єктів і вибрати необхідний компонент. Потім, на сторінці Events, натисканням лівої клавіші миші вибрати обробник і двічі клацнути по його лівій (білої) частини. У відповідь DELPHI активізує вікно тексту програми і покаже заготовку процедури обробки обраної події.

Кожен компонент має свій набір обробників подій, однак деякі з них властиві більшості компонентів. Найбільше часто застосовувані події представлені в табл. 8.1.

Таблиця 8.1

Подія

Опис події

OnActivate

Форма одержує цю подію при активації

OnCreate

Виникає при створенні форми (компонент TForm). В обробникі даної події варто задавати дії, що повинні відбуватися в момент створення форми, наприклад установка початкових значень   

OnKey Press

Виникає при натисканні кнопки на клавіатурі. Параметр Key має тип Char і містить ASCII-код натиснутою клавішею (клавіша Enter клавіатури має код #13, клавіша Esc - #27 і т.д.). Звичайно ця подія використовується в тому випадку, коли необхідна реакція на натискання однієї з клавіш

OnKeyDown

Виникає при натисканні клавіші на клавіатурі. Обробник цієї події одержує інформацію про натиснуту клавішу і стан клавіш Shift, Alt і Ctrl, а також про натиснуту кнопку миші. Інформація про клавішу передається параметром Key, що має тип Word

OnKeyUp

Є парною подією для OnKeyDown і виникає при відпусканні раніше натиснутої клавіші

OnClick

Виникає при натисканні кнопки миші в області компонента

OnDblClick

Виникає при подвійному натисканні кнопки миші в області компонента

Хід виконання роботи.

Завдання: написати програму підрахунку числа слів у довільному рядку. Як роздільник може бути будь-яка кількість пробілів. Для введення рядків і  роботи з ними використовувати ТСоmbоВох. Уведення рядка закінчувати натисканням Enter. Для виходу з програми використовувати кнопку Close.

Панель діалогу буде мати вигляд (мал.8.1). Текст програми приведений нижче.

Unit Unit1;

Interface

Uses

 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;

type

 Tunit_Lab5 = class(TForm)

   ComboBox1: TComboBox;

   Label1: TLabel;

   Label2: TLabel;

   Label3: TLabel;

   BitBtn1: TBitBtn;

   Button1: TButton;

   Procedure FormActivate(Sender: TObject);

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

   Procedure ComboBox1Click(Sender: TObject);

 Private

   { Private declarations }

 Public

   { Public declarations }

 end;

var

 Unit_Lab5: TUnit_Lab5;

Implementation

{$R *.DFM}

// Обробка події активізації форми

Procedure TUnit_Lab5.FormActivate(Sender: TObject);

begin

 ComboBox1.SetFocus; //Передача фокуса ComboBox1

end;

// Обробка події натискання лівої клавіші миші

Procedure TUnit_Lab5.ComboBox1KeyPress(Sender: TObject; var Key: Char);

begin

 if Key =#13 then //Якщо натиснуто клавішу Enter те...

 begin

// Рядок з вікна редагування заноситься в список вибору

   ComboBox1.Items.Add(ComboBox1.Text);

   ComboBox1.Text := ''; //Очищення вікна редагування

 end;

end;

Procedure TUnit_Lab5.ComboBox1Click(Sender: TObject);

var

 St : string;

 n, і, nst, ind  : integer;

begin

 n := 0; //Містить число слів обраного рядка

//Містить кількість слів

 ind := 0;

//Визначення номера обраного рядка

 nSt := ComboBox1.ItemIndex;

//Занесення обраного рядка в перемінну st

 St := ComboBox1.Items[nst];

//Перегляд усіх символів рядка st

 for i := 1 to Length(St) do

 begin

   Case ind of

     0: if St[і] <>'' then

        begin

//Якщо зустрівся символ після пробілу

//кількістьслів збільшується на одиницю

          ind := 1;

          n   := n+1;

        end;

// Якщо зустрівся пробіл після символів

     1: if St[i] ='' then ind := 0;

    end;

  end;

  Label3.Caption := IntToStr(n); //Виведення кількості слів у Label3

end;

end.

Варіанти завдання

В усіх завданнях вихідні дані вводити за допомогою компонента TEdit у компонент TListBox або за допомогою властивості Text у властивість Items компонента рядка закінчувати натисканням клавіші Enter. Для виходу з програми використовувати кнопку Close. Для розрахунків уводити кілька різних рядків.

  1.  Дано рядок, що складаєтьсяться з груп нулів і одиниць. Кожна група відокремлюється від інший одним або декількома пробілами. Знайти кількість груп з п'ятьма символами.
  2.  Дано рядок, що складаєтьсяться з груп нулів і одиниць. Знайти і вивести на екран саму коротку групу.
  3.  Дано рядок, що складаєтьсяться з груп нулів і одиниць. Підрахувати кількість символів у самій довгій групі.
  4.  Дано рядок, що складаєтьсяться з груп нулів і одиниць. Знайти і вивести на екран групи з парною кількістю символів.
  5.  Дано рядок, що складаєтьсяться з груп нулів і одиниць. Підрахувати кількість одиниць у групах з непарною кількістю символів.
  6.  Дано рядок, що складаєтьсяться з літер, цифр, ком, крапок, знаків “+”, “-“ . Виділити підрядок, що відповідає запису цілого числа (тобто починається зі знака “+” або “-” і усередині підрядка немає літер, ком і крапок).    

7. Дано рядок символів, що складається з літер, цифр, ком, крапок, знаків ”+" і "-". Виділити підрядок, що відповідає записи речовинного числа з фіксованою крапкою.

8. Дано рядок символів, що складається з літер, цифр, ком, крапок, знаків ”+”і "-''. Виділити підрядок, що відповідає запису дійсного числа з крапкою, що плаває.

9. Дано рядок символів, що складається з довільних десяткових цифр, розділених пробілами. Вивести на екран числа цього рядка в порядку зростання їхніх значень.

10. Дано рядок символів, що складається з довільних десяткових цифр, розділених пробілами. Вивести парні числа цього рядка.

11. Дано рядок символів, що складається з довільного тексту англійською мовою, слова розділені пробілами. Вивести на екран слова цього тексту в порядку, що відповідає латинському алфавітові.

12. Дано рядок символів, що складається з довільного тексту англійською мовою, слова розділені пробілами. Вивести на екран порядковий номер слова, що накриває k-ю позицію (якщо на k-ю позицію попадає пробіл, то номер попереднього слова).

13. Дано рядок символів, що складається з довільного тексту англійською мовою, слова розділені пробілами. Розбити вихідний рядок на двох підрідка, причому перша довжиною k символів (якщо на k-ю позицію попадає слово, то його варто віднести до другого рядка, доповнивши першу пробілами до k позицій).

14. Дано рядок символів, що складається з довільного тексту англійською мовою, слова розділені пробілами. Вивести на екран порядковий номер слова максимальної довжини і номер позиції рядка, з яким воно починається.

15. Дано рядок символів, що складається з довільного тексту англійською мовою, слова розділені пробілами. Вивести на екран порядковий номер слова мінімальної довжини і кількість символів у цьому слові.

16. Дано рядок символів, що складається з довільного тексту англійською мовою, слова розділені пробілами. У кожнім слові замінити першу літеру на прописну.

17. Дано рядок символів, що складається з довільного тексту англійською мовою, слова розділені пробілами. Видалити перших k слів з рядка, зрушивши на їхнє місце наступні слова рядка.

18. Дано рядок символів, що складається з довільного тексту англійською мовою, слова розділені пробілами. Поміняти місцями i-і і j-і слова.

19. Дано рядок символів, що складається з довільного тексту англійською мовою, слова розділені пробілами. Поміняти місцями першу й останню літери кожного слова.

20. Дано рядок символів, що складається з довільного тексту англійською мовою, слова розділені пробілами. Замінити літери латинського алфавіту на відповідні їм літери російського алфавіту.

21. Дано рядок символів S1 S2 …Sm у якій можуть зустрічатися цифри, пробіли, літера "Е" і знаки "+", "-". Відомо, що перший символ S1 є  цифрою. З даного рядка виділити подстроки, розділені пробілами. Визначити, чи є перший підрядок числом. Якщо так, то з'ясувати: ціле або дійсне число, додатнє або відємне.

22. Дано рядок символів, що містить деякий текст російською мовою. Розробити програму форматування цього тексту, тобто його розбивки на окремі рядки ( по k символів у кожнім рядку ) і вирівнювання по правій границі шляхом  вставки між окремими словами необхідної кількості пробілів.

23. Дано рядок символів, що містить деякий текст російською мовою. Замінити літери російського алфавіту на відповідні їм літери латинського алфавіту.

24. Дано рядок символів, що містить деякий текст. Розробити програму, що визначає, чи є даний текст паліндромом, тобто чи читається він ліворуч праворуч так само, як і праворуч ліворуч (наприклад, “А троянда упала на лапу Азора”).

25. Скласти програму, що читає по рядках текст іншої програми (увести з клавіатури) мовою Pascal, виявляє коментарі і виводить них на екран.

26. Скласти програму, що читає по рядках текст іншої  програми (увести з клавіатури) мовою Pascal, підраховує кількість ключових слів “begin” і “end” і виводить на екран відповідне  повідомлення.

27. Скласти програму, що задане число від 1до 1999 виводить на екран римськими цифрами.

28. Дано текст із заголовних латинських літер. Визначити, чи є цей текст правильним записом римськими цифрами від 1 до 999, і, якщо є, вивести на екран це число арабськими цифрами в десятковій системі.

29. Дано текст із k символів. Вивести на екран тільки рядкові російські літери, що входять у цей текст.

30. Дано текст із k символів. Вивести на екран за абеткою всі різні прописні російські літери, що входять у цей текст.


 

А также другие работы, которые могут Вас заинтересовать

8313. Вища фізика. Конспект лекцій 7.33 MB
  Частина 1. Механіка. Тема 1. Вступ. Кінематика поступального руху. Вступ. Кінематика поступального руху (2 год.) Мета: Ввести основні поняття механіки. План Елементи кінематики. Поступальний рух. Радіус-вектор, траєкторія, шлях, переміще...
8314. Экономическая оценка обновления парка подвижного состава АТП 391 KB
  Экономическая оценка обновления парка подвижного состава АТП Методические указания содержат определение потребности предприятия в материальных и трудовых ресурсах, расчет экономических показателей деятельности предприятия (затраты, доходы, прибыль),...
8315. Сложение элементов столбцов матрицы и нормирование вектора 215.5 KB
  Сложение элементов столбцов матрицы и нормирование вектора Часть 1. Сложение элементов в столбцах матрицы. Задача 1: Просуммировать элементы столбцов заданной матрицы размером mхn. Результат получить в одномерном массиве размером n Задача была выпол...
8316. Численные методы на Mathcad’е 594.01 KB
  Численные методы на Mathcad’е Введение Сегодня не часто вспоминают о том, что компьютеры были созданы в первую очередь для проведения научных расчетов. До сих пор научные и инженерные расчеты остаются одной из важнейших, хотя, пожалуй, и не сам...
8317. Развитие агентской сети страховой компании. Методическое пособие 438.45 KB
  Развитие агентской сети страховой компании. Методическое пособие. Книга 1 Оглавление Глава. Характеристика профессии страхового агента Психологические основы страхования Представления и стереотипы, связанные с профессией страхового агента Влияние ...
8318. Прикладная информатика в экономике. Организация производственных практик 367.87 KB
  Прикладная информатика в экономике. Организация производственных практик В работе, рекомендованной учебно-методическим советом института менеджмента и бизнеса Дальневосточного государственного университета, представлены организационно-методические п...
8319. Личность в системе профессиональной подготовки 520 KB
  Профессиональная подготовка - одна из важнейших сфер жизни общества Прогрессивное движение выражается в развитии, совершенствовании и усложнении профессий, а, следовательно, в требований профессиональной подготовки. Современная тенденция формировать...
8320. Введение в Интернет-образование 370.5 KB
  Введение в Интернет-образование Освещаются основные аспекты использования в образовании сети Интернет. Рассмотрено современное состояние и перспективы Интернет-обучения. Представлен понятийный аппарат и терминология Интернет-образо...
8321. Теория и методология формирования адаптивно-организационного поведения персонала 563.57 KB
  Теория и методология формирования адаптивно-организационного поведения персонала В монографии разработаны адекватные современным российским условиям теоретические и методологические подходы к управлению механизмом формирования адаптивного органи...