Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Лабораторная работа №14 Использование компонентов отображения.



Цель лабораторной работы: Ознакомить студентов с компонентами отображения. Научиться составлять каркас простейшей программы в среде DELPHI. Закрепить полученные на лекции знания. Написать и отладить программу.

Теория:

· Компоненты класса TLabel (метки) предназначены для размещения на форме различного рода текстовых надписей. Вы можете изменить шрифт и цвет метки, если дважды щелкнете на свойство Font в Инспекторе Объектов. Вы увидите, что это легко сделать и во время выполнения программы, написав всего одну строчку кода.

Property AutoSize: Boolean; Указывает, будет ли метка изменять свои размеры в зависимости от помещенного в ее свойство Caption текста (True - будет)
Property FocusControl: TWinControl; Содержит имя оконного компонента, который связан с меткой (выбор компонента Label приводит к перемещению фокуса на связанный с ним компонент)
TtextLayout = (tlTop, tlCenter, tlBottom);   Property Layout: TTextLayout; Определяет выравнивание текста по вертикали относительно границ метки: tlTop - текст располагается вверху; tlCenter - текст центрируется по вертикали; tlBottom -текст располагается внизу
Property ShowAccelChar: Boolean; Если содержит True, символ & в тексте метки предшествует символу-акселератору
Property Transparent: Boolean; Определяет прозрачность фона метки. Если False, фон закрашивается собственным цветом Color, в противном случае используется фон родительского компонента
Property WordWrap: Boolean; Разрешает/запрещает разрыв строки на границе слова. Для вывода многострочных надписей задайте AuroSize=False, WordWrap=True и установите подходящие размеры метки

· TEdit

Компонент класса TEdit представляет собой однострочный редактор текста. С его помощью можно вводить и/или отображать достаточно длинные текстовые строки. Следует помнить, что этот компонент не распознает символы конца строки (#13#10).

 

Property AutoSelect: Boolean; Указывает, будет ли выделяться весь текст в момент получения компонентом фокуса ввода
Property AutoSize: Boolean; Если True и BorderStyle = bsSingle, высота компонента автоматически меняется при изменении свойства Font. Size
TBorderStyle = bsNone..bsSingle; Property BorderStyle: TBorderStyle; Определяет стиль обрамления компонента: bsNone - нет обрамления; bsSingle – компонент обрамляется одной линией
TEditCharCase = (ecNormal, ecUpperCase, ecLowerCase);   Property CharCase: TEditCharCase; Определяет автоматическое преобразование высоты букв: ecNormal - нет преобразования; ее UpperCase - все буквы заглавные; ecLowerCase -все буквы строчные. Правильно работает с кириллицей
Property HideSelection: Boolean; Если False, выделение текста сохраняется при потере фокуса ввода
Property MaxLength: Integer; Определяет максимальную длину текстовой строки. Если имеет значение 0, длина строки не ограничена
Property Modified: Boolean; Содержит True, если текст был изменен
Property OnChange: TNotifyEvent; Определяет обработчик события OnChange, которое возникает после любого изменения текста
Property OEMConvert: Boolean; Содержит True, если необходимо перекодировать текст из кодировки MS-DOS в кодировку Windows и обратно
Property PasswordChar: Char; Если символ PasswordChar определен, он заменяет собой любой символ текста при отображении в окне. Используется для ввода паролей
Property ReadOnly: Boolean; Если содержит True, текст не может изменяться
Property SelLength: Integer; Содержит длину выделенной части текста
Property SelStart: Integer; Содержит номер первого символа выделенной части текста
Property SelText: String; Содержит выделенный текст

 

Методы компонента:

 

procedure Clear; Удаляет весь текст
procedure ClearSelection; Удаляет выделенный текст
procedure CopyToClipboard; Копирует выделенный текст в Clipboard
procedure CutToClipboard; Копирует выделенный текст в Clipboard, после чего удаляет выделенный текст из компонента
function GetSelTextBuf(Buffer: PChar; BufSize: Integer): Integer; Копирует не более BufSize символов выделенного текста в буфер Buffer
procedure PasteFromClipboard; Заменяет выделенный текст содержимым Clipboard, а если нет выделенного текста, копирует содержимое Clipboard в позицию текстового курсора
procedure SelectAll; Выделяет весь текст
Procedure SetSelTextBuf(Buffer: PChar); Заменяет выделенный текст содержимым Buffer, а если нет выделенного текста, копирует содержимое Buffer в позицию текстового курсора

 

Задание: Установить все используемые свойства в приложении программным путем.

Вариант №1

Определить что, все цифры данного четырехугольника числа N различны;

Вариант №2

Определить что, данные числа x, y являются координатами точки, лежащей в первой координатной четверти;

Вариант №3

Определить что, цифры данного трехзначного числа N являются членами арифметической прогрессии;

Вариант №4

Определить что, сумма двух действительных чисел a и b являются целым числом, т.е. дробная часть суммы равна нулю;

Вариант №5

Определить что, данное натуральное число a кратно числу b, но не кратно числу с.

Вариант №6

Определить что, данное четырехзначное число читается одинаково слева направо и справа налево;

Вариант №7

Составить программу, которая проверяла бы, не приводит ли суммирование двух целых чисел А и В к переполнению (т.е. к результату большему, чем 32767). Если будет переполнение, то сообщить об этом, иначе вывести сумму этих чисел.

Вариант №8

Определить что, число С является средним арифметическим чисел а и b;

Вариант №9

Программа – льстец. На экране появляется вопрос «Кто ты: мальчик или девочка? Введи Д или М». В зависимости от ответа на экране должен появиться текст «мне нравятся девочки! » или «Мне нравятся мальчики! ».

Вариант №10

Проверить, является ли четырехугольник со сторонами a, b, c, d ромбом.

Вариант №11

Определить, является ли треугольник со сторонами a, b, c равнобедренными.

Вариант №12

Составить программу, определяющую результат гадания на ромашке – «любит – не любит», взяв за исходное данное количество лепестков п.

Вариант №13

Определить что, данные числа C и D являются соответственно квадратом и кубом числа а;

Вариант №14

Определить, является ли треугольник со сторонами A, B, C равносторонним.

Вариант №15

Среди чисел A, В, С определить количество отрицательных.

Контрольные вопросы:

  1. Основные составные части Delphi?
  2. Какие функции преобразования вы знаете?
  3. Какие компоненты служат для ввода и вывода данных?
  4. Какие типы свойств существуют?
  5. Как изменить значение свойства компонента программно?

Лабораторная работа №15 Использование компонентов редактирования.

Цель работы: Применение теоретических навыков на практике. Ознакомить студентов с компонентами ввода-вывода. Закрепить полученные на лекции знания. Написать и отладить программу.

Теория:

· TEdit - стандартный управляющий элемент Windows для ввода. Он может быть использован для отображения короткого фрагмента текста и позволяет пользователю вводить текст во время выполнения программы.

· TButton позволяет выполнить какие-либо действия при нажатии кнопки во время выполнения программы. В Delphi все делается очень просто. Поместив TButton на форму, Вы по двойному щелчку можете создать заготовку обработчика события нажатия кнопки. Далее нужно заполнить заготовку кодом.

Функции преобразования:

IntToStr Перевод целого числа в строковое
StrToInt Наоборот
FloatToStr Перевод вещественного числа в строку
StrToFloat Наоборот

· TMaskEdit

Специализированный редактор TMaskEdit предназначен для ввода текста, соответствующего некоторому шаблону, задаваемому свойством EditMask: String. Если это свойство не задано, TMaskEdit работает как обычный редактор TEdit.

Шаблон состоит из трех частей, отделенных друг от друга символами «; ». Первая часть задает маску ввода, вторая - это символ «О» или «I», определяющий, записывается ли в Text результат наложения маски или исходный текст («О» - исходный текст). В третьей части указывается символ, который в окне редактора будет стоять в полях, предназначенных для ввода символов.

Описатели полей ввода представлены в следующей таблице:

 

Символ Поле
L должно содержать букву
может содержать букву
А должно содержать букву или цифру
а может содержать букву или цифру
С должно содержать любой символ
с может содержать любой символ
О должно содержать цифру
может содержать цифру
# может содержать цифру, «+», «-»

 

Специальные символы:

Символ Значение
\ Следующий символ - литерал. Позволяет вставить в маску литералы из символов описателей полей ввода и специальных символов
  На это место вставляется символ-разделитель Windows для часов, минут, секунд
/ На это место вставляется символ-разделитель Windows для полей даты.
/ Разделитель частей шаблона
! Подавляет все ведущие пробелы
> Все следующие за ним поля ввода преобразуют буквы к заглавным
< Все следующие за ним поля ввода преобразуют буквы к строчным
о Отменяет преобразование букв

Пример: Найти сумму 2 чисел – целого и вещественного.

1. Загрузить Delphi (ПУСК -> Программы -> BorlandDelphi6 -> Delphi6

2. Открыть новое приложение File| New|Application, если новое приложение не создалось

3. Перенесите на пустую форму, кнопку TButton со страницы Standard палитры компонент. Затем щелкните курсором мыши в нужном месте формы. На форме появится кнопка, Delphi присвоит имя по умолчанию – Button1.

4. Так же перенесите 2 компоненты TEdit, 4 - TLabel.

5. Выделите на форме компонент Button1 – кнопку. Перейдите в Инспектор Объектов и измените свойство Caption (надпись), которое по умолчанию равно Button1 на «Выполнить»

6. Аналогично измените свойство Caption у компонет Label на: Label1 > > «Число1», Label2 > > «Число 2», Label3 > > «Результат», а у компоненты Labe4 свойство Caption удалить.

7. Удалите в Edit1 и в Edit2 значение в свойстве Text.

8. Расположите компоненты как на рисунке

9. Теперь необходимо написать обработчик события при нажатии кнопки. Нажмите 2 раза на кнопке, появится редактор кода программы, напишите следующее не удаляя все. что за вас написал Delphi:

procedure TForm1.Button1Click(Sender: TObject);

var a: integer;

b, c: real;

begin

a: = StrToInt(Edit1.text); {ввод числа из компонеты Edit}

b: =StrToFloat (Edit2.Text); {и перевод из строки в число}

c: =a+b;

Label4.Caption: =FloatToStr(c); {вывод результата в Label4}

end;

  1. Запустите приложение Run | Run F9
  2. Введите числа в поля «Число 1» и «Число 2», а затем нажмите кнопку «Выполнить».
  3. Для завершения приложения нажмите «Х» на заголовке формы.
  4. Сохраните приложение File| Save Project as, создайте свою папку и нажмите «Сохранить»

Свойство является важным атрибутом компонента. Свойства служат двум главным целям. Во-первых, они определяют внешний вид формы или компонента. А во-вторых, свойства определяют поведение формы или компонента.

Существует несколько типов свойств, в зависимости от их “природы”, т.е. внутреннего устройства.

· Простые свойства - это те, значения которых являются числами или строками. Например, свойства Left и Top принимают целые значения, определяющие положение левого верхнего угла компонента или формы. Свойства Caption и Name представляют собой строки и определяют заголовок и имя компонента или формы.

· Перечислимые свойства - это те, которые могут принимать значения из предопределенного набора (списка). Простейший пример - это свойство типа Boolean, которое может принимать значения True или False.

· Вложенные свойства - это те, которые поддерживают вложенные значения (или объекты). Object Inspector изображает знак “+” слева от названия таких свойств. Имеется два вида таких свойств: множества и комбинированные значения. Object Inspector изображает множества в квадратных скобках. Если множество пусто, оно отображается как []. Установки для вложенных свойств вида “множество” обычно имеют значения типа Boolean. Наиболее распространенным примером такого свойства является свойство Style с вложенным множеством булевых значений. Комбинированные значения отображаются в Инспекторе Объектов как коллекция некоторых величин, каждый со своим типом данных. Некоторые свойства, например, Font, для изменения своих значений имеют возможность вызвать диалоговое окно. Для этого достаточно щелкнуть маленькую кнопку с тремя точками в правой части строки Инспектора Объектов, показывающей данное свойство.

 

Задание:

Вариант №1

Составить программу, которая проверяла бы, не приводит ли суммирование двух целых чисел А и В к переполнению (т.е. к результату большему, чем 32767). Если будет переполнение, то сообщить об этом, иначе вывести сумму этих чисел.

Вариант №2

Определить что, число С является средним арифметическим чисел а и b;

Вариант №3

Программа – льстец. На экране появляется вопрос «Кто ты: мальчик или девочка? Введи Д или М». В зависимости от ответа на экране должен появиться текст «мне нравятся девочки! » или «Мне нравятся мальчики! ».

Вариант №4

Проверить, является ли четырехугольник со сторонами a, b, c, d ромбом.

Вариант №5

Определить, является ли треугольник со сторонами a, b, c равнобедренными.

Вариант №6

Составить программу, определяющую результат гадания на ромашке – «любит – не любит», взяв за исходное данное количество лепестков п.

Вариант №7

Определить что, данные числа C и D являются соответственно квадратом и кубом числа а;

Вариант №8

Определить, является ли треугольник со сторонами A, B, C равносторонним.

Вариант №9

Среди чисел A, В, С определить количество отрицательных.

Вариант №10

Определить что, все цифры данного четырехугольника числа N различны;

Вариант №11

Определить что, данные числа x, y являются координатами точки, лежащей в первой координатной четверти;

Вариант №12

Определить что, цифры данного трехзначного числа N являются членами арифметической прогрессии;

Вариант №13

Определить что, сумма двух действительных чисел a и b являются целым числом, т.е. дробная часть суммы равна нулю;

Вариант №14

Определить что, данное натуральное число a кратно числу b, но не кратно числу с.

Вариант №15

Определить что, данное четырехзначное число читается одинаково слева направо и справа налево;

Контрольные вопросы:

  1. Основные составные части Delphi?
  2. Какие функции преобразования вы знаете?
  3. Какие компоненты служат для ввода и вывода данных?
  4. Какие типы свойств существуют?
  5. Как изменить значение свойства компонента программно?

 

 

Лабораторная работа №16 Использование компонентов многострочного редактора для обработки строковых данных.

 

Цель работы: Применение теоретических навыков на практике. Ознакомить студентов с компонентами ввода/вывода строк на форме приложения с использованием окна Watch. Закрепить полученные на лекции знания. Написать и отладить программу

Теория:

Окно наблюдения (View| Debug Windows| Watch). Ctrl+F5 на переменной – откроется окно наблюдения и в нем появится имя переменной и ее значение или выделить курсором выражение (Ctrl+F5) и в окне наблюдения значение этого выражения.

Существует ряд стандартных функций и процедур для работы со строками.

· Функция Length (s) выдает длину строки s.

· Функция Concat (s1, s2,.., sn) возвращает строку s1+s2+..+sn.

· Функция Copy (s, p, k) возвращает фрагмент строки s, который начинается в позиции p и имеет длину k.

· Функция Pos (s1, s) ищет первое вхождение подстроки s1 в строку s и возвращает номер первого символа s1 в строке s или 0 если не нашли.

· Процедура Delete (s, p, k) удаляет из строки s фрагмент, который начинается в позиции p и имеет длину k.

· Процедура Insert (s, s1, p) вставляет в строку s подстроку s1, начиная с заданной позиции p.

Турбо паскаль позволяет производить преобразования числовых значений в строковые и наоборот. Для этого используются процедуры Str (X: n: d, S) и Val (S, X, e). Первая получает их числа X строку S с изображением этого числа, в которой не менее n символов и из них d знаков после запятой. Параметры n и d необязательные. Вторая процедура получает из строки S число X. При успешном результате e=0.

Пример: Заменить в строке «А» на «О».

  1. Переместить на форму компоненты: 2 Edit, Label, Button1 и измените значения их свойств.
  2. Расположите компоненты как показано на рисунке и при 2 нажатии на кнопке введите текст программы:

procedure TForm1.Button1Click(Sender: TObject);

var s1: string;

i: integer;

 

begin

s1: = Edit1.text; {ввод строки в переменную s1}

 

for i: =0 to length(s1) do

begin

if s1[i]='А' then

begin

delete (s1, i, 1);

insert('О', s1, i);

end;

end;

Edit2.Text: =s1; {вывод новой строки}

end;

Задания: Используя компоненту Edit, выполнить следующие действия:

Вариант №1

Ввести последовательность символов, предшествующую символу " пробел" и выяснить: есть ли среди них буква А, сколько раз встретился символ "." , заменить букву В на *

Вариант №2

Ввести произвольную последовательность из 20 символов и выяснить, - сколько среди них точек, сколько среди них пробелов, сколько среди них букв Д.

Вариант №3

Ввести произвольную последовательность символов, предшествующую символу! и выяснить, есть ли среди них буквы, входящие в слово КУРС и сколько раз какая из этих букв встретилась.

Вариант №4

Ввести последовательность символов, предшествующих точке и выяснить, встретились ли среди них буквы, входящие в слово ТУР

Вариант №5

Ввести последовательность символов, заканчивающихся * выяснить: сколько пробелов, сколько букв А, сколько букв С, все буквы А заменить на точку

Вариант №6

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

Вариант №7

Ввести последовательность символов, предшествующих символу * и выяснить сколько среди них букв S, A, R. Все буквы S заменить на точку

Вариант №8

Ввести произвольную последовательность символов, предшествующую символу “.“ и определить: сколько символов введено, есть ли среди них символ пробел, все встретившиеся буквы “A“ заменить символом “*“.

Вариант №9

Вывести произвольную последовательность из 15 символов и определить, есть ли среди них буквы, входящие в слово «Мера». Если они найдены, заменить их символом пробел.

Вариант №10

Ввести строку символов, состоящую из N слов, разделённых пробелом и определить, сколько слов введено, кроме того, вывести все слова отдельно «столбцом».

Вариант №11

Ввести произвольную последовательность из 30 символов и определить, есть ли среди них буквы входящие в слово “ШИНА” и сколько среди символов пробелов

Вариант №12

Ввести последовательность символов, предшествующую символу " пробел" и выяснить: есть ли среди них буква Н, сколько раз встретился символ «=», заменить букву «Н» на «? »

Вариант №13

Ввести произвольную последовательность из 20 символов и выяснить, - сколько среди них точек, сколько среди них пробелов, сколько среди них букв Ш.

Вариант №14

Ввести последовательность символов, предшествующих точке и выяснить, встретились ли среди них буквы, входящие в слово МИР

Вариант №15

Ввести последовательность символов, предшествующих символу « - » и выяснить сколько среди них букв Н, Ю, Х. Все буквы Ю заменить на точку

Контрольные вопросы:

  1. Какие функции над строками вы знаете?
  2. Как произвести ввод и вывод строки в приложении?
  3. Какие компоненты необходимы для работы со строками?

 


 

 

Лабораторная работа №17 Использование компонентов многострочного редактора для одномерных массивов.

Цель работы: Применение теоретических навыков на практике. Ознакомить студентов с компонентами вывода текста на форме приложения. Закрепить полученные на лекции знания. Написать и отладить программу

 

Теория:

· TMemo - иная форма TEdit. Подразумевает работу с большими текстами. TMemo может переносить слова, сохранять в Clipboard фрагменты текста и восстанавливать их, и другие основные функции редактора. TMemo имеет ограничения на объем текста в 32Кб, это составляет 10-20 страниц. (Есть VBX и “родные” компоненты Delphi, где этот предел снят).

Пример: Найти сумму 5 чисел в одномерном массиве.

Разместите не форме компоненты Memo1, 2 - Label, Button, Edit, как на рисунке. В свойстве Memo Lines| TString… удалить текст «Memo1» и «OK».

procedure TForm1.Button1Click(Sender: TObject);

var a: array [0..9] of integer;

sum, i: integer;

begin

sum: =0;

for i: =0 to 4 do

begin

a[i]: =StrToInt(Memo1.Lines[i]);

sum: =sum+a[i];

end;

Edit1.Text: =IntToStr(sum);

end;

Вводите все значения в Memo1!!!!

Задания:

Вариант №1

Дан массив натуральных чисел А(10). Найти сумму элементов, кратных данному К.

Вариант №2

Дана последовательность целых чисел а1, …, а10. Выяснить, какое число встречается раньше – положительное или отрицательное.

Вариант №3

Дана последовательность действительных чисел а1, …, а10. Заменить все ее члены, большие данного Z, этим числом. Подсчитать количество замен.

Вариант №4

Дан массив действительных чисел, размерность которого 10. Подсчитать сколько в нем отрицательных, положительных и нулевых элементов.

Вариант №5

Даны целые числа а1, а2, …, а10.Вывести на печать только те числа, для которых выполняется а[i] < i.

Вариант №6

Даны натуральные числа а1, а2, …, а10.Подсчитать количество чисел у которых остаток от деления на М равен L (O < L < M - 1).

Вариант №7

При поступлении в вуз абитуриенты, получившие “двойку” на первом экзамене, ко второму не допускаются. В массиве А[10] записаны оценки экзаменующихся, полученные на первом экзамене. Подсчитать, сколько человек не допущено ко второму экзамену.

Вариант №8

Дана последовательность чисел, среди которых имеется один нуль. Вывести на печать все числа, включительно до нуля.

Вариант №9

Дана последовательность действительных чисел а1, а2, …, а10. Подсчитать те ее элементы, которые принадлежат отрезку [c, d].

Вариант №10

Дана последовательность целых положительных чисел. Найти произведение только тех чисел, которые больше заданного числа М. Если таких нет, то выдать сообщение об этом.

Вариант №11

Последовательность а1, а2, …, аn состоит из нулей и единиц. Поставить в начало этой последовательности нули, а затем единицы.

Вариант №12

В последовательности действительных чисел а1, а2, …, а10, есть только положительные и отрицательные элементы. Вычислить произведение отрицательных элементов P1 и произведение положительных элементов P2. Сравнить модуль Р2 с модулем Р1 указать, какое из произведений по модулю больше.

Вариант №13

Дан массив действительных чисел. Среди них есть равные. Найти первый максимальный элемент массива и заменить его нулём

Вариант №14

Даны целые числа а1, а2, …, а10. Наименьший член этой последовательности заменить целой частью среднего арифметического всех членов, остальные члены оставить без изменений.

Вариант №15

Даны действительные числа а1, а2, …, а10. Требуется умножить все члены последовательности на квадрат ее наименьшего члена, если а10 > 0, и на квадрат ее наибольшего члена, если а10 < 0.

Контрольные вопросы:

1. Какой компонент используется для работы с одномерным массивом?


Поделиться:



Популярное:

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


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.126 с.)
Главная | Случайная страница | Обратная связь