ТОП 10:

Представлення рядка у вигляді масиву символів



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

Var| MASS| : array|[1.100] of| Char|;

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

Компонент TListBox|

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

Компонент TComboBox|

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

Компонент TBitBtn|

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

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

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

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

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

Таблиця
Подія Опис події
OnActivate Форма отримує цю подію при активації
OnCreate|   Виникає при створенні форми (компонент TForm). У обробнику даної події слід задавати дії, які повинні відбуватися у момент створення форми, наприклад установка початкових значень
OnKeyPress|   Виникає при натисненні кнопки на клавіатурі. Параметр Кеу має тип Char і містить ASCII-код натиснутої клавіші (клавіша Enter клавіатури має код #13, клавіша Esc - #27 і так далі). Звичайна ця подія використовується у тому випадку, коли необхідна реакція на натиснення однієї з клавіш
OnKeyDown Виникає при натисненні клавіші на клавіатурі. Обробник цієї події отримує інформацію про натиснуту клавішу і стан клавіш Shift, Alt і Ctlr, а також про натиснуту кнопку миші. Інформація про клавішу передається параметром Кеу, який має тип Word
OnKeyUp   Є парною подією для OnKeyDown і виникає при відпуску раніше натиснутої клавіші
   

 

Питання для самоконтролю:

1. Що може бути значенням змінної символьного?

2. Яким типами можуть бути представлені рядки?

3. Яка функція визначає довжину рядка?

4. Яка функція визначає позицію входження підрядка в рядок?

5. Яка функція видаляє частину рядка?

6. Яка подія виникає при будь-яких змінах у вмісті редактора?

7. Який метод виділяє весь текст в елементі редагування?

8. Який метод вирізає текст в елементі редагування та поміщає його в буфер обміну?

9. Який метод всталяє текст в елемент редагування з буферу обміну?

10. Який метод копіює текст в елементі редагування та поміщає його в буфер обміну?


Лабораторна робота №7

Тема:Робота зі списками у Delphi.

Мета роботи: вивчити правила роботи з компонентами TListBox і TСomboBox. Написати програму для вивчення властивостей, методів та подій для простих та комбінованих списків.

Розробка проекту «Гороскоп»

Завдання. Створити програму, яка виконуватиме такі дії: користувач обирає зі списку ListBox знак зодіаку. В результаті на форму виводяться сприятливі та несприятливі дні для цього знаку зодіаку і в компоненті Image відображається малюнок, який відповідає обраному знаку зодіаку. Програма закінчує роботу при натисненні на кнопці «Вихід». написати програму так, щоб вхідні дані про сприятливі та несприятливі дні для всіх знаків зодіаку були задані в масиві. Зробити так, щоб при наведені курсору на поле компонента ListBox з’являлась підказка про те, що треба робити далі.

 

ХІД РОБОТИ

Алгоритм розробки проекту

1. Створити папку С:\Delphi\lab_7_1.

2. Завантажити середовище візуального програмування Delphi.

3. Розмістити на формі візуальні компоненти Label1, Label2, Label3, Label4, Label5, BitBtn1, Image1, ListBox1 встановити значення властивостей компонентів, описати порядок опрацювання подій згідно з таблицею.

Компонент Вкладка вікна «інспектора об’єктів » (Object Inspector) Властивість (Properties)/Подія (Events) Значення властивості /обробка події (тіло процедури обробки події
Forma1 Properties Caption (заголовок форми) Гороскоп
Color (колір форми) За вибором
Label1 Properties Caption Гороскоп на літо 2008
Font Шрифт, колір, розмір за вибором
Label2 Properties Caption Сприятливі дні
Font Шрифт, колір, розмір за вибором
Label3 Properties Caption Чисте поле
Font Шрифт, колір, розмір за вибором
Label4 Properties Caption Несприятливі дні
Font Шрифт, колір, розмір за вибором
Label5 Properties Caption Чисте поле
Font Шрифт, колір, розмір за вибором
BitBtn1 Properties Kind bkClose
Image1   Properties AutoSize false – розміри змінюватись не можуть
Stretch True
Picture Не має
ListBox1 Properties Items Овен, Тілець, Близнюки, Рак, Лев, Діва, Терези, Скорпіон, Стрілець, козеріг, водолій, Риби
Events Onclick const l1:array[0..11] of string=('1-26 червня, 10-20 липня, 1-10 серпня', '1-2 червня, 1-20 липня, 1-10 серпня','10-16 червня, 10-20 липня, 1-10 серпня', '1-26 червня, 10-25 липня, 1-10 серпня','1-26 червня, 10-20 липня, 4 серпня', '1-2 червня, 10-20 липня','1-26 червня, 10-20 липня, 1-10 серпня', '1-26 червня, 1 липня, 1-15 серпня','1-26 червня, 1-10 серпня', '1-26 червня, 10-20 липня, 1-10 серпня','',''); l3:array[0..11] of string=('26 серпня','26 серпня','26 серпня','20 серпня','2 серпня','12 серпня','5 серпня', '6 серпня','27 серпня','29 серпня','30 серпня','12 серпня'); begin label3.Caption:=l1[listbox1.itemindex]; label5.Caption:=l3[listbox1.itemindex]; case listbox1.ItemIndex of 0: image1.Picture.LoadFromFile('oven.bmp'); 1: image1.Picture.LoadFromFile('til.bmp'); 2:image1.Picture.LoadFromFile('bliz.bmp'); 3: image1.Picture.LoadFromFile('rak.bmp'); 4:image1.Picture.LoadFromFile('lev.bmp'); 5:image1.Picture.LoadFromFile('diva.bmp'); 6:image1.Picture.LoadFromFile('terez.bmp'); 7:image1.Picture.LoadFromFile('skorp.bmp'); 8:image1.Picture.LoadFromFile('str.bmp'); 9:image1.Picture.LoadFromFile('koz.bmp'); 10:image1.Picture.LoadFromFile('vodolej.bmp'); 11:image1.Picture.LoadFromFile('ribi.bmp'); end; end;

Підказка. Файли *.bmp повинні бути записані у поточну папку проекту у папці С:\Delphi\lab_7_1.

4. Зберегти проект у папці С:\Delphi\lab_7_1.

5. Запустити проект та перевірити правильність його виконання.

 

 







Последнее изменение этой страницы: 2016-04-18; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.233.215.196 (0.005 с.)