37828

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

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

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

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

Украинкский

2013-09-25

69 KB

7 чел.

ЛАБОРАТОРНА РОБОТА №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 символів. Вивести на екран за абеткою всі різні прописні російські літери, що входять у цей текст.


 

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

38231. Маркетинг. Ответы на экзаменационные вопросы 111 KB
  Сущность и эволюция маркетинга. Изучение маркетинга позволяет сделать максимально правильный выбор целевого рынка. Самой главной целью маркетинга является: поставить производимый товар или услугу вне конкуренции. Без маркетинга работа предприятия практически невозможна.
38232. Теория маркетинга. Сбытовая политика предприятия 394.5 KB
  Рынок совокупность существующих и потенциальных покупателей товара. Анализ маркетинговой среды: определение ёмкости рынка прогнозирование величины спроса проведение маркетинговых исследований выбор целевого сегмента и определение его профиля позиционирование товара и фирмы в целом. Разработка товарной политики: разработка новых товаров управление товарным ассортиментом разработка дизайна и качественных характеристик товара разработка упаковки и товарной марки определение комплекса дополнительных услуг. Применяется когда реальные...
38233. Организация маркетинга на предприятии, организационный механизм 62.5 KB
  Организационный механизм маркетинговое подразделение предприятия а управленческий разрабатываемый им план маркетинга который является составной частью бизнес-плана. Функциональная служба маркетинга включает в себя отделы где сотрудники специализируются на выполнении одной определённой функции маркетинга. Товарная служба маркетинга характеризуется те что служба состоит из отдела которая осуществляет деятельность по определённому товару группе товаров.
38234. Анализ маркетинговой среды 109.5 KB
  Видовые конкуренты это прочие разновидности того же товара способные удовлетворить конкретное желание покупателя. Конкуренты марки это разные марки одного и того же товара способные удовлетворить его желание. В данном случае разновидностями товара будут трех пяти и десятискоростные велосипеды. расположите по определённым характеристикам характеристики товара при его покупке.
38235. Товарная политика предприятия 82 KB
  Товары в зависимости от цели покупки и категории покупателя разделяют на потребительские и промышленные. Потребительские товары товары которые покупаются физическими лицами для личного некоммерческого потребления. Товары произведенотехнического назначения промышленные товары которые приобретаются предприятиями и организациями для промышленного потребления т. Потребительские товары делятся на группы виды в зависимости от покупательского поведения при их покупке: 1.
38236. Экономическая теория, ответы к экзамену 424.5 KB
  Можно сказать что экономическая наука явилась теоретическим отражением сути капитализма противоречивых явлений жизни людей разделенных на классы когда торжество идей свободы равенства и братства сочеталось с бременем наемного труда. В начальный период возникновения рынка они преимущественно приравнивали друг к другу результаты своего труда продукты созданные их руками или непосредственно полученные у природы и по праву им принадлежащие. В этих условиях основой соизмерения определяющей величину стоимости ценности этих вещей...
38237. Ценовая политика предприятия 68.5 KB
  На значение цены оказывают влияние многочисленные факторы которые можно разделить на внутренние и внешние. Здесь определяют нижнюю границу цены. Спрос определяется верхнюю границу цены чувствительности потребителей цен определяется с помощью показателя ценовой эластичности спроса. Расчёт дуговой эластичности Ер Q объёмы продаж P цена ΔQ изменение спроса ΔP изменение цены ΔQ = Q2 Q1 Знак при коэффициенте эластичности показывает тип связи между данными величинами: ценой и спросом а именно: указывает на прямую зависимость а...
38238. Сбытовая политика предприятия 59 KB
  Каналы распределения Сбытовая деятельность совокупность операций связанных с реализацией товаров: выбор посредников налаживание контактов с покупателем управление сбытовыми запасами транспортировка товаров заключение договоров на реализацию. Сбытовые агенты лица представляющие интересы определенных производителей при сбыте их товаров. Последние занимаются перепродажей товаров на условиях комиссии и получают вознаграждение от продавцов и покупателей. Сегодня услугами розничных магазинов самообслуживания пользуются представители всех...
38239. Маркетинговая коммуникативная политика 107.5 KB
  Телевидение Большой охват сочетание цвета звука изображения; возможность показать товар в действии; избирательность аудитории; чувственное воздействие Высокая стоимость mx из всех навязчивость; перегруженность рекламой; мимолетность рекламного контакта 2. ΔП прирост среднесуточного товарооборота R рентабельность рекламируемой продукции З затраты на рекламную компанию Психология цвета и символов в рекламе Согласно результатам полученным в ходе многочисленных психологических эксперементов учеными был сделан вывод что цвет...