Среда Delphi 7

Процесс обучения операторов ввода и вывода данных, создания программ с использованием оболочки Delphi 7. Основные свойства компонентов. Стандартные окна для ввода и вывода сообщений. Ввод данных из диалогового окна. Приложения по вкладкам формы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 10.06.2011
Размер файла 124,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Введение

В России Borland Delphi появляется в конце 1993 г. и сразу же завоевывает широкую популярность. Новые версии выходят практически каждый год. В них реализуются все новые мастера, компоненты и технологии программирования.

Действительно, процесс разработки в Delphi предельно упрощен. В первую очередь это относится к созданию интерфейса, на который уходит 80% времени разработки программы. Вы просто помещаете нужные компоненты на поверхность Windows-окна (в Delphi оно называется формой) и настраиваете их свойства с помощью специального инструмента (Object Inspector). С его помощью можно связать события этих компонентов (нажатие на кнопку, выбор мышью элемента в списке и т.д.) с кодом его обработки - и вот простое приложение готово. Причем разработчик получает в свое распоряжение мощные средства отладки (вплоть до пошагового выполнения команд процессора), удобную контекстную справочную систему (в том числе и по Microsoft API), средства коллективной работы над проектом, всего просто не перечислить. Вы можете создавать компоненты ActiveX без использования Microsoft IDL, расширять возможности web-сервера (скрипты на стороне сервера), практически ничего не зная об HTML, XML или ASP. Можно создавать распределенные приложения на базе СОМ и CORBA, Интернет- и intranet-приложения, используя для доступа к данным Borland DataBase Engine, ODBC-драйверы или Microsoft ADO. Появившаяся, начиная с Delphi 3, поддержка многозвенной технологии (multi-tiered) доступа к данным позволяет создавать масштабируемые приложения (относительно слабо зависящие от сервера БД) за счет перенесения методов обработки информации (бизнес-правил) на среднее звено.

Как уже говорилось ранее, в Delphi используется язык Object Pascal, который постоянно расширяется и дополняется Borland. Язык в полной мере поддерживает все требования, предъявляемые к объектно-ориентированному языку программирования. Как и положено строго типизированному языку, классы поддерживают только простое наследование, но зато интерфейсы могут иметь сразу несколько предков. К числу особенностей языка следует отнести поддержку обработки исключительных ситуаций (exceptions), а также перегрузку методов и подпрограмм (overload) в стиле C++. К числу удачных, на взгляд автора, относится также поддержка длинных строк в формате WideChar и AnsiChar. Последний тип (AnsiStrmg) позволяет использовать все прелести динамического размещения информации в памяти без всяких забот о ее выделении и сборке мусора Delphi делает это автоматически. Для поклонников свободного стиля программирования имеются открытые массивы, варианты и вариантные массивы, позволяющие размещать в памяти все, что душе угодно и смешивать типы данных.

Вы можете создавать свои собственные компоненты, импортировать ОСХ-компоненты, создавать <шаблоны> проектов и <мастеров>, создающих <заготовки> проектов. Мало того, Delphi предоставляет разработчику интерфейс для связи ваших приложений (или внешних программ) с интегрированной оболочкой Delphi (IDE).

Таким образом, вы можете использовать Delphi для создания как самых простых приложений, на разработку которых требуется 2-3 часа, так и серьезных корпоративных проектов, предназначенных для работы десятков и сотен пользователей. Причем для этого можно использовать самые последние веяния в мире компьютерных технологий с минимальными затратами времени и сил.

Объектом исследования является процесс обучения операторов ввода и вывода данных, создания программ с использованием данных операторов.

Предметом исследования являются различные виды задач на тему ввод и вывод информации и способы их решения.

Целью работы является разработка методики изучения операторов ввода и вывода данных в среде программирования Delphi.

Для достижения поставленной цели и проверки гипотезы необходимо решить следующие задачи:

1. подобрать теоретический материал, связанный с представлением операторов, с решением задач на использование данных компонент;

2. рассмотреть основные свойства каждого оператора;

3. подобрать примеры решения задач по каждому компоненту для демонстрации излагаемой теории;

1. Среда Delphi 7

Среда Delphi 7 представляет собой интегрированную оболочку разработчика, в которую входит набор специальных программ, ответственных за разные этапы создания готового приложения.

Исходный текст программы готовится в среде Delphi 7 с помощью встроенного редактора исходных текстов. Этот редактор специализирован. Он отличается гибкими возможностями цветового выделения различных элементов текста программы (ключевые слова, названия, операций, чисел строк) и предоставляет возможность быстрого ввода часто встречающихся конструкций.

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

Важнейшая характеристика разрабатываемой программы - удобство ее пользовательского интерфейса, наличие и доступность необходимых элементов управления. В системе Delphi 7 имеется специальный проектировщик форм, с помощью которого окна будущей программы подготавливаются в виде форм. Проектировщик позволяет подобрать оптимальные размеры окон, разместить и настроить всевозможные элементы управления и меню, добавить готовые изображения, указать заголовки, подсказки, надписи и так далее.

Компонентный подход

На этапе проектирования форм программа как бы составляется из готовых компонентов - частей машинного кода, которые можно добавлять к ней с помощью всего нескольких щелчков мыши. Компоненты располагаются на палитре компонентов, разделенной на несколько самостоятельных панелей.

Палитра компонентов

После запуска Delphi в верхнем окне горизонтально располагаются иконки палитры компонент. Если курсор задерживается на одной из иконок, под ней в желтом прямоугольнике появляется подсказка

Из этой палитры компонент вы можете выбирать компоненты, из которых можно строить приложения. Компоненты включают в себя как визуальные, так и логические компоненты. Такие вещи, как кнопки, поля редактирования - это визуальные компоненты; а таблицы, отчеты - это логические.

Понятно, что поскольку в Delphi вы визуальным образом строите свою программу, все эти компоненты имеют свое графическое представление в поле форм для того, чтобы можно было бы ими соответствующим образом оперировать. Но для работающей программы видимыми остаются только визуальные компоненты. Компоненты сгруппированы на страницах палитры по своим функциям. К примеру, компоненты, представляющие Windows «common dialogs» все размещены на странице палитры с названием «Dialogs».

Delphi позволяет разработчикам настроить среду для максимального удобства. Вы можете легко изменить палитру компонент, инструментальную линейку, а также настраивать выделение синтаксиса цветом.

Заметим, что в Delphi вы можете определить свою группу компонент и разместить ее на странице палитры, а если возникнет необходимость, перегруппировать компоненты или удалить неиспользуемые.

Компоненты обладают набором свойств, характеризующими их отличительные особенности. Некоторые свойства имеются практически у всех компонентов - такого, например, свойства Name (Имя). Другие свойства, например Caption (Заголовок), имеются у большинства компонентов - ведь заголовок необходим и для окна, и для кнопки. Некоторые свойства уникальны для конкретных компонентов, например свойство SimpleText (Простой текст), содержащее текст для компонентов Строка состояния.

Свойства компонентов в процессе проектирования формы настраиваются с помощью Инспектора объектов. Это специальная программа, показывающая список всех свойств данного компонента, отсортированных по категориям или в алфавитном порядке.

Значение любого свойства можно изменить, введя в соответствующее поле Инспектора объектов новую строку или выбрав нужное значение в раскрывающемся списке доступных значений. Некоторые свойства содержат вложенные подсвойства, например, свойство Font (Шрифт) характеризуется размеров, стилем, цветом, гарнитурой. Такие свойства удобней редактировать с помощью специальных редакторов, как стандартные (шрифт), так и специально разработанных для конкретного компонента.

Помимо свойств, компоненты содержат методы - программный код, обрабатывающий значение свойств (например, устанавливающий переключатель в нужное положение), а также событий - сообщения, которые компонент принимает от приложения, если во время работы программы выполняется определенное действие (например, изменяется состояние флажка). Программист может самостоятельно формировать реакции программы на любые события каждого компонента.

Правильно подбирая компоненты и настраивая их совместную работу путем использования свойств, предназначенных для связи компонентов друг с другом, нередко удается создать приложение, не написав вручную ни строчки исходного текста. В системе Delphi 7 существуют сотни готовых компонентов, и при решении многих задач бывает полезно предварительно поискать нужный компонент (например, в Интернете), вместо того, что бы выполнять работу по программированию, возможно, уже сделанную другими людьми. Компонентный подход к созданию программ позволяет повторно использовать готовые разработки и во многих случаях значительно повышать эффективность труда.

С помощью системы Delphi 7 можно создавать не только обычные программы (EXE-файлы), но и динамически подключаемые библиотеки DLL (своеобразные хранилища кода и ресурсов), новые элементы управления, а также компоненты, отвечающие требованиям различных стандартов на компонентные технологии (COM, ActiveX, CORBA и так далее).

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

2. Основные компоненты

2.1 Компонент Label - надпись (панель Standard)

Компонент Label предназначен для размещения на форме текстовой информации.

На форме размещаются объекты, соответствующие компонентам с палитры компонентов. Что бы создать на форме текстовое поле, надо:

· Выбрать панель Standard (Стандартная);

· Щелкнуть по кнопке Label (текстовое поле);

· Щелкнуть на том месте формы, где требуется поместить текстовое поле.

Основные свойства компоненты Label

Свойство

Описание свойства

Name

Имя в программе, используется для доступа к компоненту и его свойствам.

Caption

Текст, отображаемый в поле компонента.

Left

Расстояние от левой границы компонента до левой границы формы.

Top

Расстояние от верхней границы компонента до верхней границы формы.

Height

Высота компонента.

Width

Ширина компонента.

Font

Шрифт, который используется для отображения текста.

Color

Цвет фона (по умолчанию цвет фона сливается с цветом формы).

Transparent

Определяет прозрачность поля надписи:

· False - пространство метки закрашивается собственным цветом Color;

· True - сквозь метку будут видны расположенные за ней компоненты.

Aligment

Выравнивание текста в поле компонента:

· Taleft - по левому краю;

· taRight - по правому краю;

· taCenter - по центру.

AutoSize

Определяет размер компонента:

· True - вертикальный и горизонтальный размер компонента определяются размерами надписи;

· False - выравнивание текста внутри компонента выполняется свойством Aligment

WordWrap

Допускает перенос слов в длинной надписи:

· True - разрешает;

· False - не разрешает.

Для вывода многострочных надписей нужно установить подходящий размер компонента Label и задать свойства AutoSize= False и WordWrap= True.

ParentFont

Признак наследования компонентом характеристик шрифта формы, на которой находится компонент. Если значение свойства равно True, то текст выводится шрифтом, установленным для формы.

2.2 Компонент Edit - поле редактирования (панель Standard)

Компонента Edit представляет собой одностороннее редактируемое текстовое поле. Обычно его используют для ввода или отображения текстовой информации.

На форме размещаются объекты, соответствующие компонентам с палитры компонентов. Что бы создать на форме текстовое поле, надо:

· Выбрать панель Standard (Стандартная);

· Щелкнуть по кнопке Edit (текстовое поле);

· Щелкнуть на том месте формы, где требуется поместить текстовое поле.

В этом месте появится новый элемент управления. Черные маркеры по контору объекта указывают, что он выделен. Эти маркеры предназначены для изменения размеров объекта с помощью мыши. По умолчанию в Delphi 7 принято, что название нового объекта совпадает с его заголовком. Это название дается средой Delphi по следующему принципу. Берется название компонента, и к нему добавляется порядковый номер, начиная с единицы. Если теперь на форму поместить еще одно текстовое поле, то его название будет Edit2. если теперь взглянуть на исходный текст класса TMyForm, то окажется, что в разделе Private появилось новое поле:

Edit1: TEdit;

Оно было добавлено средой Delphi 7 в описание класса TMeForm автоматически.

У компонента TEdit (текстовое поле) свойства Caption (Заголовок) нет. Вместо него активно используется свойство Text (Текст), относящееся в инспекторе объектов к категории Localizable (настраиваемые). Это свойство содержит введенные пользователем данные в текстовом виде (тип String). Первоначально это свойство содержит строку, совпадающую с именем элемента управления (Edit1, Edit2). Текущее содержимое свойства Text (текст) каждого текстового поля формы лучше удалить и ввести вместо этого строки «0».

Основные свойства компоненты Edit

Свойство

Описание свойства

Name

Имя в программе, используется для доступа к компоненту и его свойствам.

Text

Содержит вводимый или выводимый текст.

Left

Расстояние от левой границы компонента до левой границы формы.

Top

Расстояние от верхней границы компонента до верхней границы формы.

Height

Высота компонента.

Width

Ширина компонента.

Font

Шрифт, который используется для отображения текста.

BorderStyle

Вид рамки компонента:

· Single - обычная;

· None - отсутствует.

AutoSize

Определяет размер компонента: если значение True, вертикальный размер компонента определяется размером шрифта (Font. Size) при условии, что BorderStyle= beSingle.

AutoSelect

Определяет, будет ли автоматически выделяться весь текст при передаче фокуса в поле редактирования.

MaxLength

Максимальная длина текстовой строки. Если MaxLength=0, то длина строки не ограничена.

Modified

Определяет изменения в тексте:

· True - текст изменялся;

· False - в противном случае.

ReadOnly

Задает возможность ввода текста в поле редактирования:

· True - ввод текста разрешен;

· False - поле предназначено только для чтения.

Пример: Написать программу перевода градусной меры угла в радианную меру.

Разместим на форме четыре компоненты Lebel для обозначения Величины угла в градусной мере, Градусы и Минуты и вывода Величины угла в радианной мере. Для Грабусов и Минут соответственно разместим 2 компоненты Edit, предворительно задав значение равное 0. Так же разместим кномку Batton1, для которой будем писать процедуру перевода градусной меры в радианную.

2.3 Стандартные окна для ввода и вывода сообщений

Вывод в окно сообщения.

Окна сообщений используются для привлечения внимания пользователя. При помощи окна сообщений программа может проинформировать об ошибке в исходных данных, или запросить подтверждение выполнения необратимых операций. Вывести на экран окно с сообщением можно при помощи процедуры ShowMessage или функции MessageDlg.

ShowMessage

Процедура выводит на экран окно с текстом и командной кнопкой ОК.

В общем виде конструкция вызова процедуры выглядит следующим образом: ShowMessage (сообщение).

Сообщение - это текст, который будет выведен в окне.

Следует обратить внимание на то, что в заголовке окна сообщения вводимой процедуры ShowMessage указывается название приложения, которое задается на вкладке Application окна ProjectOptions.

Если имя приложения не задано, то в заголовке будет имя исполнителя.

MessageDlg

MessageDlg является более универсальным, функция позволяет поместить в окно сообщения один из стандартных значков.

Задать количество и тип команд кнопок и определить какую из кнопок нажал пользователь.

В общем виде конструкция вызова функции выглядит следующим образом: MessageDlg (сообщение, тип_сообщения, [список кнопок], справка).

Сообщение - текст, который будет изображаться в окне сообщения. Тип сообщения - определенный внешний тип окна.

Параметр

Тип окна сообщения

mtInformation

Информационное

mtVarning

Предупредительное

mtError

Сообщение об ошибке

mtConfirmation

Запрос на подтверждение

mtCustom

Обычное

Список кнопок - это константа, перечисление происходит через запятую, они определяют тип кнопок окна сообщения.

Справка - номер окна справочной системы, которая будет выведена на экран если нажать на клавишу F1. Параметр равен 0, если исполнительная кнопка не предусмотрена.

Окно ввода - это стандартное диалоговое окно, которое появляется на экране в результате вызова функции inputBox. Значение функции inputBox - строка, которую ввел пользователь.

2.4 Ввод данных из диалогового окна. InputBoх

В общем виде инструкция ввода данных с использованием функции inputBox выглядит так: < Переменная >:= InputBox (Заголовок, Подсказка, Значение); где: Переменная - переменная строкового типа, значение которой должно быть получено от пользователя; Заголовок - текст заголовка окна ввода; Подсказка - текст поясняющего сообщения; Значение - текст, который будет находиться в поле ввода, когда окно ввода появится на экране.

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

Если во время работы программы пользователь введет строку и щелкнет на кнопке ОК, то значением функции inputBox будет введенная строка. Если будет сделан щелчок на кнопке Cancel, то значением функции будет строка, переданная функции в качестве параметра значение.

Следует еще раз обратить внимание на то, что значение функции inputBox строкового (string) типа.

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

2.5 Компонент Текстовая область Memo

Обойтись простым текстовым полем удается не всегда. Если пользователь должен ввести большой объем информации (например, полный почтовый адрес или произвольный комментарий), ему может понадобиться несколько строк текста.

В таком случае следует использовать компонент TMemo.

Компонент Memo представляет собой элемент редактирования текста, который может состоять из нескольких строк.

На форме размещаются объекты, соответствующие компонентам с палитры компонентов. Что бы создать на форме текстовую область, надо:

· Выбрать панель Standard (Стандартная);

· Щелкнуть по кнопке Memo;

· Щелкнуть на том месте формы, где требуется поместить текстовую область.

Основные свойства компоненты Memo

Свойство

Описание свойства

Name

Имя в программе, используется для доступа к компоненту и его свойствам.

Left

Расстояние от левой границы компонента до левой границы формы.

Top

Расстояние от верхней границы компонента до верхней границы формы.

Height

Высота компонента.

Width

Ширина компонента.

Font

Шрифт, который используется для отображения текста. Атрибуты шрифта одинаковы для всего текста.

ParentFont

Признак наследования свойств шрифта родительской формы.

Color

Цвет текста, находящегося в поле компонента.

Aligment

Выравнивание текста в поле компонента:

· taLeft - по левому краю;

· taRigth - по правому краю;

· taCenter - по центру.

WordWrap

Допускает перенос слов в длинной надписи:

· True - разрешает;

· False - не разрешает;

Для вывода многострочных надписей нужно установить подходящий размер компонента Label и задать свойство AuroSize=False и WordWrap=True.

ReadOnly

Компонент используется только для чтения:

· True - ввод данных разрешен;

· False - ввод данных запрещен.

MaxLength

Максимальная длина текстовой строки. Если MaxLength=0, то длина строки не ограничена.

ScrollBars

Определяет наличие в многострочном поле полос прокрутки:

· ssNone - полосы прокрутки отсутствуют;

· ssHorizontal - имеется горизонтальная полоса прокрутки;

· ssVertical - имеется вертикальная полоса прокрутки;

· ssBoth - имеются два полосы прокрутки.

CaretPos

Содержит координаты мигающего текстового курсора. Учитывая, что индексация начинается с 0:

· Memo1. CaretPOS.Y+1 - номер строки в которой расположен курсор;

· Memo1. CaretPOS.X+1 - номер символа в строке перед которым расположен курсор.

Lines

Содержит текст окна в виде списка строк. В процессе проектирования с помощью этого свойства можно открыть окно редактирования списка строк.

Lines. Count

Количество строк текста в поле Memo.

Text

Отображает содержимое свойства Lines в виде одной длинной строки, в которой границы отдельных строк определяются символами окончания строки.

При вводе текста для перехода на новую строку (к новому абзацу) обычно используется клавиша Enter. Однако в диалоговых окнах Windows эта клавиша часто применяется для завершения ввода. Способ использования клавиши Enter определяется значением свойства WantReturns. Если оно имеет значение True, то клавиша Enter позволяет переходить к новой строке внутри текстовой области, в противном случае она служит для завершения ввода и перехода к следующему элементу, а для перехода к новой строке применяется комбинация клавиш Ctrl+Enter.

Главное свойство данного компонента - Lines (Строки), имеющие тип TStrings. В нем хранится список строк, введенных пользователем. Эти строки можно обрабатывать всеми методами, доступными в классе TString, например, сохранять в файле:

Memo1. Lines. SaveToFile (`c:\Memo.TXT');

Если включена горизонтальная полоса прокрутки, значение свойства WordWrap игнорируется. Это свойство определяет, будет ли выполнятся автоматический перенос слов на новую строку при достижении правой границы области (при этом никаких символов новой строки в текст не добавляется - перенос отображается только на экране).

При выделении фрагмента текста в текстовой области в свойство SelStart записывается позиция первого выделенного символа, а в свойство SelLength - число выделяемых символов. Выделенный текст доступен через свойство SelText (тип String). Для выделения всего текста применяется метод SelectAll, для удаления выделенного текста - метод ClearSelection.

Чтобы очистить содержимое текстовой области, используется метод Clear, чтобы отменить последние изменение - метод Undo, а чтобы очистить буфер, хранящий историю изменений, и сделать такую отмену не возможной - метод ClearUndo.

Группа методов предназначена для работы с буфером обмена Windows. Для копирования выделенного текста в буфер обмена применяется метод CopyToClipboard, для вырезания текста - метод CutToClipboard, для вставки текста из буфера - метод PastFromClipboard.

Когда в текстовой области происходит изменение текста, генерируется событие OnChange.

Основную работу выполняет процедура TForm1. Button1Click, которая сначала проверяет, есть ли в поле Memo1 текст. Если текст есть (в этом случае значение свойства Lines. Count больше нуля), то процедура сравнивает количество введенных строк и размер массива. Если это количество превышает размер массива, то программа изменяет значение n, тем самым подготавливает ввод только первых SIZE строк.

2.6 Компонент переключатель TrackBar

Компонент TrackBar представляет собой элемент управления в виде ползунка, который пользователь может перемещать курсором мыши или клавишами во время выполнения. Таким образом, пользователь может управлять какими-то процессами: громкостью звука, размером изображения и т.п.

Различные варианты ползунков

На форме размещаются объекты, соответствующие компонентам с палитры компонентов. Что бы создать на форме переключатель, надо:

· Выбрать панель Win32;

· Щелкнуть по кнопке TrackBar;

Основное свойство компонента - Position. Это свойство можно задавать во время проектирования или программно во время выполнения. При перемещении пользователем ползунка можно прочитать значение Position, характеризующее позицию, в которую пользователь переместил ползунок. Для возможности такого чтения служит событие OnChange. В обработчике этого события можно прочитать значение Position и использовать его для управления каким-то компонентом.

Свойство Position - целое, значение которого может изменяться в пределах, задаваемых свойствами Min и Мах. По умолчанию Min = 0, Мах = 10, так что Position может принимать только 11 значений - от 0 до 10. Если задать большее значение Мах, соответственно увеличится количество возможных значений Position в диапазоне Min - Мах.

Свойство Orientation определяет ориентацию ползунка: trHorizontal - горизонтальная, trVertical - вертикальная.

Свойство TickMarks указывает размещение шкалы относительно компонента и может принимать значения: tmBottomRight - снизу или справа в зависимости от ориентации компонента (верхний и правый компоненты на рис. 3), tmTopLeft - сверху или слева в зависимости от ориентации компонента (нижний компонент на рис. 3), tmBoth - с обеих сторон (средний компонент на рис. 3).

Свойство TickStyle определяет способ изображения шкалы. Оно может принимать значения: tsAuto - автоматическая прорисовка шкалы, tsNone - отсутствие шкалы, tsManual - программное рисование шкалы с помощью метода SetTick (Value: Integer), который помещает метку шкалы в позицию, соответствующую величине Value. Метки, соответствующие началу и концу шкалы автоматически размещаются и в случае TickStyle = tsManual.

При TickStyle = tsAuto частота меток шкалы определяется свойством Frequency. Это свойство задает, сколько возможных значений Position лежит между метками. Например, если Frequency = 2, то метки будут соответствовать только каждому второму возможному значению позиции.

Свойства LineSize и PageSize определяют, насколько смещается ползунок, если пользователь управляет им с помощью соответственно клавиш со стрелками или клавишами PageUp и PageDown.

Свойства SelStart и SelEnd позволяют визуально выделить на шкале некоторый диапазон (см. средний компонент на рис. 3), который о чем-то говорит пользователю, например, рекомендуемый диапазон значений. При этом ничто не мешает пользователю выйти за пределы этого диапазона.

Пример: создать калькулятор.

Разместим на форме компоненты RadioButton для обозначения арифметических действий. Так же разместим 2 компоненты TrackBar, для обозначения операндов. Один компонент Label, для вывода результата. Компонент Button, для вычисления арифметических действий и компонент BitBtn выхода из программы.

2.7 Стандартная линейка прокрутки ScrollBar

Похож на ползунок по своим функциям и компонент ScrollBar, хотя выглядит он иначе и предназначен по замыслу для других целей. Этот компонент представляет собой стандартную линейку прокрутки Windows. Однако, он может использоваться и для целей прокрутки (впрочем, многие оконные компоненты Delphi имеют собственные полосы прокрутки), и для управления, подобного компоненту TrackBar.

На форме размещаются объекты, соответствующие компонентам с палитры компонентов. Что бы создать на форме список, надо:

· Выбрать панель Standard (Стандартная);

· Щелкнуть по кнопке ScrollBar;

· Щелкнуть на том месте формы, где требуется поместить текстовую область.

Основные свойства ScrollBar - Position, Min и Мах те же, что у компонента TrackBar. Свойство Kind, определяющее горизонтальное или вертикальное расположение полосы и принимающее соответственно значения sbHorizontal или sbVertical, аналогично свойству Orientation компонента TrackBar.

Имеются два свойства, отсутствующие у TrackBar: SmallChange и LargeChange. Они определяют соответственно «малый» сдвиг при щелчке на кнопке в конце полосы или нажатии клавиши со стрелкой, и «большой» сдвиг при перемещении на страницу щелчком рядом с бегунком или нажатии клавиш PageUp или PageDown.

Событие, соответствующее перемещению пользователем бегунка полосы прокрутки - OnScroll. В процедуру обработчика этого события передается по ссылке параметр ScrollPos - позиция бегунка, которую можно читать, но можно и изменять, и передается параметр ScrollCode, характеризующий вид перемещения бегунка. Этот параметр может иметь значения:

· scLineUp, scLineDown - «Малый» сдвиг: перемещение соответственно вверх или налево и вниз или вправо после нажатия кнопки полосы прокрутки или клавиши со стрелкой

· scPageUp, scPageDown - «Большой» сдвиг: перемещение на страницу щелчком рядом с бегунком или нажатием клавиш PageUp или PageDown

· scPosition - Пользователь переместил и освободил бегунок

· scTrack - Пользователь перемещает бегунок

· scTop, scBottom - Бегунок перемещен соответственно в крайнюю верхнюю или левую позицию и в крайнюю нижнюю или правую позицию

· scEndScroll - Окончание перемещения

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

1. После запуска программы в окне изображается две полосы прокрутки. Вертикальная полоса будет управлять движением по вертикали, горизонтальная - по горизонтали.

2. Наводя указатель мыши на одну из двух фигур, можно выбирать, какая из этих фигур связана с полосами прокрутки.

3. Требуются дополнительные объекты, с помощью которых ограничивается область движения фигур в окне.

4. Если полоса прокрутки активная, то она должна реагировать на клавиши ВВЕРХ, ВНИЗ, ВЛЕВО, ВПРАВО, PAGE UP, PAGE DOWN.

5. Для выхода из программы необходимо щелкнуть мышью на закрывающей кнопке в строке заголовка.

Описание плана разработки программы

1. Открыть новый проект.

2. Разместить на форме экземпляры компонентов: панель Panel, полоса прокрутки ScrollBar, фигура Shape.

3. Ввести дополнительную переменную логического типа num. Если она принимает значение True (Да), то текущей считается первая фигура. Значению False (Нет) соответствует вторая фигура. Эта переменная должна быть доступна во всех процедурах.

4. Выполнить следующие действия:

Выделенный

объект

Вкладка окна

Object Inspector

Имя свойства/

имя события

Действие

Form1

Properties

Caption

Установка имени формы

«Перемещение фигур»

Panel

(Вкладка Standard)

Properties

Height

Присвоить значение 161

Width

Присвоить значение 161

Caption

Оставить значение свойства

пустым

ScrollBar1

(Вкладка Standard)

Properties

Min

Присвоить значение 5

Max

Присвоить значение 145

Position

Присвоить значение 76

SmallChange

Присвоить значение 2

LargeChange (Большое

изменение)

Присвоить значение 20

Events

OnChange

if num then Shape1. Left:=

ScrollBar1. Position

else Shape2. Left:=

ScrollBar1. Position

ScrollBar2

(Вкладка Standard)

Properties

Kind

Выбрать значение sbVertical.

Горизонтальная полоса

прокрутки станет

вертикальной.

Min

Присвоить значение 5

Max

Присвоить значение 145

Position

Присвоить значение 76

SmallChange

(Малое изменение)

Присвоить значение 2

LargeChange

Присвоить значение 20

Events

OnChange

if num then Shape1. Top:=

ScrollBar2. Position

else Shape2. Top:=

ScrollBar2. Position

Shape1

(Вкладка

Additional)

Properties

Height

Присвоить значение 11

Width

Присвоить значение 11

Left

Присвоить значение 76

Top

Присвоить значение 76

Shape (Форма)

Выбрать значение stCircle

(Круг)

Brush (Кисть)

Выбрать для подсвойства

Color (Цвет кисти) значение

clAqua (голубой цвет)

Events

OnMouseMove

(При движении мыши)

Shape1. Brush. Color:=

clAgua;

Shape1. Brush. Color:=

clFuchsia;

Num:= True;

ScrollBar1. Position:=

Shape1. Left;

ScrollBar2. Position:=

Shape1. Top;

Shape2

(Вкладка

Additional)

Properties

Height

Присвоить значение 11

Width

Присвоить значение 11

Left

Присвоить значение 76

Top

Присвоить значение 76

Shape

Выбрать значение stSquare

(Квадрат)

Brush

Выбрать для подсвойства

Color (Цвет кисти) значение

clFuchsia (фиолетовый цвет)

Events

OnMouseMove

Аналогично Shape2

5. Сохраните проект, запустите и протестируйте его.

Листинг подпрограммы

procedure TForm1. ScrollBar1Change (Sender: TObject); // процедура для первой полосы прокрутки.

begin // выбор фигуры.

if num then Shape1. Left:= ScrollBar1. Position

else Shape2. Left:= ScrollBar1. Position

end;

procedure TForm1. ScrollBar2Change (Sender: TObject); // процедура для второй полосы прокрутки.

begin // выбор фигуры.

if num then Shape1. Top:= ScrollBar2. Position

else Shape2. Top:= ScrollBar2. Position

end;

procedure TForm1. Shape1MouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer); // процедура установки фигуры.

begin // выбор цвета кисти.

Shape1. Brush. Color:= clAgua;

Shape1. Brush. Color:= clFuchsia;

Num:= True;

ScrollBar1. Position:= Shape1. Left; // установка позиции первой фигуры.

ScrollBar2. Position:= Shape1. Top; // установка позиции второй фигуры.

end;

procedure TForm1. Shape2MouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer); // процедура установки фигуры.

begin // выбор цвета кисти.

Shape2. Brush. Color:= clFuchsia;

Shape2. Brush. Color:= clAgua;

Num:= False;

ScrollBar1. Position:= Shape2. Left; // установка позиции первой фигуры.

ScrollBar2. Position:= Shape2. Top; // установка позиции второй фигуры.

end;

procedure TForm1. FormCreate (Sender: TObject);

begin

num:= True;

end;

2.8 Компоненты ввода и вывода StringGrid

Компонент StringGrid представляет собой таблицу строк. Данные таблицы можно либо читать, либо редактировать.

На форме размещаются объекты, соответствующие компонентам с палитры компонентов. Что бы создать на форме таблицу строк, надо:

· Выбрать панель Additional;

· Щелкнуть по кнопке StringGrid;

· Щелкнуть на том месте формы, где требуется поместить текстовую область.

Основные свойства компоненты StringGrid

Свойства

Описание свойств

Name

Имя компонента. Используется в программе для доступа к компоненту и его свойствам.

ColCount

Количество колонок таблицы.

RowCount

Количество строк таблицы.

Cells

Соответствующий таблице двумерный массив. Ячейке таблицы, находящейся на пересечении столбца с номером col и строки с номером row, соответствует элемент Cells [col, row].

Cols [Index]

Элемент столбца с индексом Index.

Rows [Index]

Элемент строки с индексом Index.

ColWidtht [Index]

Ширина столбца с индексом Index.

RowHeights [Index]

Высота строки с индексом Index.

DefaultColWidth

Ширина столбца, заданная по умолчанию.

DefaultRowHeight

Высота строки, заданная по умолчанию.

FixedCols

Количество зафиксированных слева колонок таблицы. Зафиксированные колонки выделяются цветом и при горизонтальной прокрутке таблицы остаются на месте.

FixedRows

Количество зафиксированных сверху строк таблицы. Зафиксированные строки выделяются цветом и при вертикальной прокрутке таблицы остаются на месте.

GridLineWidth

Ширина линий, ограничивающих ячейки таблицы.

GridHeight

Высота таблицы.

GridWidth

Ширина таблицы.

Left

Расстояние от левой границы компонента до левой границы формы.

Top

Расстояние от верхней границы компонента до верхней границы формы.

Height

Высота поля таблицы.

Width

Ширина поля таблицы.

Options

Содержит параметры таблицы:

· goVertLine - наличие разделительных вертикальных линий;

· goHorzLine - наличие разделительных горизонтальных линий;

· goColSizing - возможность изменять размер столбца;

· goRowSizing - возможность изменять размер строки;

· goColMoving - возможность перемещать столбцы;

· goRowMoving - возможность перемещать строки;

· goEditing - возможность редактировать содержимое таблицы;

· goTab - разрешает (True) или запрещает (False) использование клавиши <Tab> для перемещения курсора в следующую ячейку таблицы;

· goAlwaysShowEditor - признак нахождения компонента в режиме редактирования. Если значение свойства False, то для того, чтобы в ячейке появился курсор, надо начать набирать текст, нажать клавишу <F2> или сделать щелчок мышью.

Font

Шрифт, используемый для отображения содержимого ячеек таблицы.

ParentFont

Признак наследования характеристик шрифта формы.

BorderStyle

Определяет рамку таблицы:

· bsNone - нет рамки;

· bsSingle - рамка толщиной один пиксель.

ScrollBars

Определяет полосы прокрутки:

· ssNone - нет полос;

· ssHorizontal - в таблицу вставляется горизонтальная полоса;

· ssVertical - в таблицу вставляется вертикальная полоса;

· ssBoth - в таблицу вставляются обе полосы;

Таблица StringGrid состоит из выделенных серым FixedCols и FixedRows - зафиксированных ячеек-заголовков, и обычных, белых ячеек. Содержимое Fixed ячеек недоступно редактированию, и меняется только программно. За возможность редактирования обычных ячеек отвечает одно из значений свойства Options.

Итак, компонент StringGrid имеет возможность адресации каждой отдельной ячейки по номеру столбца и строки. Содержимое ячейки (i, j), где где i - номер столбца, j - номер строки, имеет вид

StringGrid1. Cells [i, j]

и доступно как для чтения, так и для записи. Здесь, как и всегда, номера столбцов (i) и строк (j) отсчитываются от 0.

Выделенная ячейка таблицы имеет

номер столбца: StringGrid1. Col

номер строки: StringGrid1. Row

поэтому содержимое выделенной ячейки будет адресоваться так:

S:=StringGrid1. Cells [StringGrid1. Col, StringGrid1. Row];

Не правда ли, написание такой строки - утомительный процесс. Поэтому пользуйтесь оператором присоединения with:

with StringGrid1 do

S:=Cells [Col, Row];

Отдельно требуется осветить вопрос очистки содержимого таблицы StringGrid. Так как таблица StringGrid, в отличие от, например, компонента Memo, не имеет метода для очистки содержимого сразу всех ячеек, то для удаления внесённых в таблицу ранее данных приходится очищать каждую ячейку отдельно. Делается это двумя вложенными циклами for, пробегающими по столбцам и строкам:

var i, j: Integer;

begin

with StringGRid1 do

for i:=1 to RowCount-1 do // Заголовки строк не трогаем

for j:=1 to ColCount-1 do // Заголовки столбцов не трогаем

Cells [j, i]:='';

end;

Хотя, оказывается, есть метод для очищения содержимого целого столбца или строки:

StringGrid1. Cols[i].Clear; // Очищается столбец с номером i

StringGrid1. Rows[i].Clear; // Очищается строка с номером i

Очевидно, очищение этими методами гораздо быстрее. Однако будут очищены и ячейки фиксированной зоны, содержащие, например, названия строк и столбцов, которые удалять не нужно. Их после очистки нужно просто «написать» заново, на глаз эта манипуляция совершенно незаметна. Для очистки всей таблицы достаточно последовательно очистить только строки или только столбцы:

var i, j: Integer;

begin

with StringGRid1 do

for i:=1 to RowCount-1 do // Заголовки столбцов не трогаем - цикл от 1

begin

Rows[i].Clear;

Cells [0, i]:= «Заголовок строки i»;

end;

end;

Казалось бы, можно поступить и по-другому, просто обнулить количество строк или столбцов! Однако так делать неправильно, так как при их последующем добавлении может оказаться, что каждая ячейка содержит прежние данные. А в Delphi4 даже при уменьшении количества строк или столбцов содержавшиеся в них данные вообще не пропадали, а так и повисали в воздухе! Так что так можно поступать только если в добавляемых ячейках сразу будет новое непустое содержимое.

В среде Delphi для ввода и вывода матриц используют компонент StringGRid, который является таблицей, ячейки которой предназначены для чтения или редактирования данных. Отдельно типа данных для создания матриц не существует.

Свойства компонента StringGRid

Свойства

StringGRid1

StringGRid2

Описание свойства

Top

30

30

Расстояние от верхней границы таблицы до верхнего края формы

Left

15

240

Расстояние от левой границы таблицы до левого края формы

Height

130

130

Высота таблицы

Width

200

200

Ширина таблицы

ColCount

5

5

Количество столбцов

RowCount

5

5

Количество строк

DefaultColWidth

30

30

Ширина столбца

DefaultRowHeight

20

20

Высота строки

Options.goEditing

true

false

Возможность редактирования таблицы

Procedure Tform1. BitBtn1Click (Sender: TObject);

Const n=4; m=5; // Размерность таблицы.

Var i, j: byte; // Индыксы матрицы.

 // i - строки, j - столбцы.

A: array [1..n, 1..m] of integer; // целочисленная матрица.

Begin

 // Исходные данные считываются из ячеек таблицы на форме

 // и их значения записываются в двумерный массив А.

For i:=1 to n do // Цикл по номерам строк.

For j:=1 to m do // Цикл по номерам столбцов.

 // Обращение к элементам матрицы происходит по строкам.

A [i, j]:=StrToInt (StringGRid1. Cells [i, j]);

 // Элементы матрицы А выводятся в ячейки таблицы на форме.

For i:=1 to n do // Цикл по номерам строк.

For j:=1 to m do // Цикл по номерам столбцов.

 // Обращение к элементам матрицы происходит по столбцам.

StringGRid2. Cells [i, j]:= IntToStr (A[j, i]);

End;

Массив заполняется рандомно.

Разместим на форме компонент StringGRid, для ввода массива. Шесть компонентов Сheckbox для выбора операции и сортировки. 10 компонента Edit: один для ввода количества элементов массива, один для вывода отсортированного массива и восемь для вывода выполненных операций соответственно. Так же разместим 4 кнопки: Вычислить, Сортировать, Сброс и Выход.

procedure TForm1. Button1Click (Sender: TObject); // процедура для вычисления заданных значений.

var // вводим переменные.

max, min, sum, kol, t, s, proiz, k:integer;

begin

proiz:=1; max:=m[0]; min:=m[0]; sum:=0; kol:=0; t:=0; s:=0; k:=0; // присваиваем начальные значения переменным.

for i:=0 to n do

begin // считаем количество и сумму положительных элементов.

if m[i]>0 then begin // проверка условия, положительный ли элемент.

kol:=kol+1; // считаем количество положительных элементов.

sum:=sum+m[i]; // считаем сумму положительных элементов.

end;

if abs (m[i])>max then // ищем максимальный элемент.

begin

max:=m[i]; // запоминаем максимальный элемент.

t:=i; // находим номер максимального элемента.

end;

if m[i]<min then // ищем минимальный элемент.

begin

min:=m[i]; s:=i; // запоминаем минимальный элемент и его номер.

end;

if (m[i]>min) and (m[i]<max) then // ищем элементы находящиеся между максимальным и минимальным элементами.

begin

proiz:=proiz*m[i]; // считаем произведение элементов находящихся между максимальным и минимальным элементами.

k:=k+1; // считаем количество элементов находящихся между максимальным и минимальным элементами.

end;

end;

if checkbox1.checked then // если выбран первый пункт, то выводим:

begin

edit1.text:=inttostr(kol); // в edit1 преобразованное выражение целого типа в строку, где выражение - количество положительных элементов.

edit2. Text:=inttostr(sum); // в edit2 преобразованное выражение целого типа в строку, где выражение - сумма положительных элементов

end;

if checkbox2.checked then // если выбран второй пункт, то выводим:

begin

edit3.text:=inttostr(max); // в edit3 преобразованное выражение целого типа в строку, где выражение - максимальный элемент.

edit4. Text:=inttostr(t); // в edit4 преобразованное выражение целого типа в строку, где выражение - номер максимального элемента.

end;

if checkbox3.checked then begin // если выбран третий пункт, то выводим:

edit5.text:=inttostr(min); // в edit5 преобразованное выражение целого типа в строку, где выражение - минимальный элемент.

edit6. Text:=inttostr(s); // в edit6 преобразованное выражение целого типа в строку, где выражение - номер минимального элемента.

end;

if checkbox4.checked then begin // если выбран четвертый пункт, то выводим:

edit7.text:=inttostr(proiz); // в edit7 преобразованное выражение целого типа в строку, где выражение - произведение чисел, находящихся между максимальным и минимальным числами.

edit8. Text:=inttostr(k); // в edit8 преобразованное выражение целого типа в строку, где выражение - количество чисел, находящихся между максимальным и минимальным числами.

end;

end;

procedure TForm1. Button2Click (Sender: TObject); // процедура по кнопке сортировка.

var i, j, ind, tmp:integer;

begin

if form1. RadioButton5.checked then // если выбран четвертый пункт, то сортируем по возрастанию.

begin

for i:=n downto 1 do

for j:=0 to i-1 do begin

if m[j]>m [j+1] then begin

tmp:=m [j+1]; m [j+1]:=m[j]; m[j]:=tmp;

end; end; end;

for i:= 0 to n-1 do

ListBox1. Items[i]:=inttostr (m[i]);

if form1. RadioButton6.checked then // если выбран четвертый пункт, то сортируем по убыванию.

begin

for i:=n downto 1 do

for j:=0 to i-1 do begin

if m[j]<m [j+1] then begin

tmp:=m [j+1]; m [j+1]:=m[j]; m[j]:=tmp;

end; end; end;

for i:= 0 to n-1 do

ListBox1. Items[i]:=inttostr (m[i]);

end;

procedure TForm1. Button3Click (Sender: TObject); // процедура по кнопке очистка.

begin

for i:=1 to n do

stringgrid1.cells [i - 1,0]:='';

edit1. Text:=''; edit2.text:=''; edit3.text:=''; edit4.text:=''; edit5.text:='';

edit6. Text:=''; edit7. Text:=''; edit8. Text:=''; edit9. Text:='';

edit9.setfocus; listbox1. Items.clear;

end;

procedure TForm1. Button4Click (Sender: TObject); // процедура по кнопке заполнение массива.

begin

randomize; // заполнение производится рандомно.

n:=strtoint (edit9. Text); // перевод данных строкового типа в число.

setlength (m, n);

for i:= 1 to n do

begin

m[i]:=random(10) - 5;

stringgrid1.cells [i - 1,0]:=inttostr (m[i]); // перевод данных целого типа в строку.

end; end;

Массив заполняется с клавиатуры.

Разместим на форме компонент StringGRid, для ввода массива. Шесть компонентов Сheckbox для выбора операции и сортировки. 9 компонента Edit: один для вывода отсортированного массива и восемь для вывода выполненных операций соответственно. Так же разместим 4 кнопки: Вычислить, Сортировать, Сброс и Выход.

procedure TForm1. Button1Click (Sender: TObject); // процедура для вычисления заданных значений.

var // вводим переменные.

max, min, sum, kol, t, s, proiz, k:integer;

begin

proiz:=1; max:=m[0]; min:=m[0]; sum:=0; kol:=0; t:=0; s:=0; k:=0; // присваиваем начальные значения переменным.

for i:=0 to n do

begin // считаем количество и сумму положительных элементов.

if m[i]>0 then begin // проверка условия, положительный ли элемент.

kol:=kol+1; // считаем количество положительных элементов.

sum:=sum+m[i]; // считаем сумму положительных элементов.

end;

if abs (m[i])>max then // ищем максимальный элемент.

begin

max:=m[i]; // запоминаем максимальный элемент.

t:=i; // находим номер максимального элемента.

end;

if m[i]<min then // ищем минимальный элемент.

begin

min:=m[i]; s:=i; // запоминаем минимальный элемент и его номер.

end;

if (m[i]>min) and (m[i]<max) then // ищем элементы находящиеся между максимальным и минимальным элементами.

begin

proiz:=proiz*m[i]; // считаем произведение элементов находящихся между максимальным и минимальным элементами.

k:=k+1; // считаем количество элементов находящихся между максимальным и минимальным элементами.

end;

end;

if checkbox1.checked then // если выбран первый пункт, то выводим:

begin

edit1.text:=inttostr(kol); // в edit1 преобразованное выражение целого типа в строку, где выражение - количество положительных элементов.

edit2. Text:=inttostr(sum); // в edit2 преобразованное выражение целого типа в строку, где выражение - сумма положительных элементов

end;

if checkbox2.checked then // если выбран второй пункт, то выводим:

begin

edit3.text:=inttostr(max); // в edit3 преобразованное выражение целого типа в строку, где выражение - максимальный элемент.

edit4. Text:=inttostr(t); // в edit4 преобразованное выражение целого типа в строку, где выражение - номер максимального элемента.

end;

if checkbox3.checked then begin // если выбран третий пункт, то выводим:

edit5.text:=inttostr(min); // в edit5 преобразованное выражение целого типа в строку, где выражение - минимальный элемент.

edit6. Text:=inttostr(s); // в edit6 преобразованное выражение целого типа в строку, где выражение - номер минимального элемента.

end;

if checkbox4.checked then begin // если выбран четвертый пункт, то выводим:

edit7.text:=inttostr(proiz); // в edit7 преобразованное выражение целого типа в строку, где выражение - произведение чисел, находящихся между максимальным и минимальным числами.

edit8. Text:=inttostr(k); // в edit8 преобразованное выражение целого типа в строку, где выражение - количество чисел, находящихся между максимальным и минимальным числами.

end;

end;

procedure TForm1. Button2Click (Sender: TObject); // процедура по кнопке сортировка.

var i, j, ind, tmp:integer;

begin

if form1. RadioButton5.checked then // если выбран четвертый пункт, то сортируем по возрастанию.

begin

for i:=n downto 1 do

for j:=0 to i-1 do begin

if m[j]>m [j+1] then begin

tmp:=m [j+1]; m [j+1]:=m[j]; m[j]:=tmp;

end; end; end;

for i:= 0 to n-1 do

ListBox1. Items[i]:=inttostr (m[i]);

if form1. RadioButton6.checked then // если выбран четвертый пункт, то сортируем по убыванию.

begin

for i:=n downto 1 do

for j:=0 to i-1 do begin

if m[j]<m [j+1] then begin

tmp:=m [j+1]; m [j+1]:=m[j]; m[j]:=tmp;

end; end; end;

for i:= 0 to n-1 do

ListBox1. Items[i]:=inttostr (m[i]);

end;

procedure TForm1. Button3Click (Sender: TObject); // процедура по кнопке очистка.

begin

for i:=1 to n do

stringgrid1.cells [i - 1,0]:='';

edit1. Text:=''; edit2.text:=''; edit3.text:=''; edit4.text:=''; edit5.text:='';

edit6. Text:=''; edit7. Text:=''; edit8. Text:=''; edit9. Text:='';

edit9.setfocus; listbox1. Items.clear;

end;

procedure tform1.stringGrid1keypress (sender:tobject; var key:char); // процедура заполнения массива.

var s:string; // строка.

begin

case key of

'0'..'9',#8: // ввод цифр.

begin

s:=s+key; // заполнение.

stringgrid1. Cells [i, 0]:=s; end;

#13: begin i:=i+1; s:=''; // при нажатии Enter, происходит переход к следующей заполняемой ячейке массива.

if stringgrid1.col<stringgrid1.colcount-1 then // текущая ячейка меньше чем количество ячеек - 1. Не достигли конца ячеек.

stringgrid1.col:=stringgrid1.col+1; end;

'-':begin // знак минус можно вводить первым, если ячейка пустая.

if length (stringgrid1.cells [stringgrid1.col, 0])<>0 then

key:=chr(0);

end

else key:=chr(0); // запрет остальных символов.

end;

end;

Разместим на форме компонент Stringgrid, для ввода многомерного массива. Три компоненты Сheckbox, для выбора операции. Пять кнопок, для заполнения массива, для вычисления операций, для вывода нового массива, для сброса и выхода. Четыре компоненты Edit, для выводы результатов операций и нового массива.


Подобные документы

  • Разработка программы для ввода данных из актов о возврате бракованных ванн в БД учета брака. Проектирование информационных систем. Разработка модели БД с помощью ERWin, приложения ввода данных в Borland Delphi 7, системы создания отчётности в MS Excel.

    курсовая работа [2,6 M], добавлен 30.03.2011

  • Использование программой функции ввода-вывода данных для реализации дружественного интерфейса с пользователем. Функции консоли и особенности их применения для обеспечения аккуратного ввода информации и упорядоченного вывода. Обзор стандартных функций.

    лабораторная работа [40,4 K], добавлен 06.07.2009

  • Разработка программы обработки типизированных файлов с кодом на языке Object Pascal, с использованием компонентов Delphi для ввода и вывода данных. Разработка экранных форм и алгоритма программы. Описание программных модулей и инструкция оператору.

    курсовая работа [1,5 M], добавлен 08.02.2011

  • Анализ операторов ввода и вывода, а также характеристика форматов, используемых в этих операторах. Оформление законченной программы с применением этих операторов. Структура программы. Алфавит языка и типы данных. Ввод и вывод информации. Форматный вывод.

    лабораторная работа [62,0 K], добавлен 15.07.2010

  • Проектирование баз данных, реализация ее серверной части, методика создания таблиц, различных триггеров, хранимых процедур, клиентского приложения. Процедура поиска данных, фильтрации данных, вывода отчета, ввода SQL запросов и вывода хранимых процедур.

    контрольная работа [50,1 K], добавлен 30.10.2009

  • Программирование линейных алгоритмов. Процедуры ввода READ и READLN и вывода WRITE и WRITELN. Примеры решения задач на языке Паскаль. Оператор присваивания и выражения. Основные способы формирования структурных операторов. Операторы вызова процедур.

    курсовая работа [44,3 K], добавлен 18.03.2013

  • Создание программы средствами языка Delphi, реализующей системный каталог информации базы данных, его характеристики: отношения, атрибуты с типами, связи, индексы. Разработка подпрограмм для ввода таблиц, полей и ключей и приложения для вывода данных.

    курсовая работа [196,1 K], добавлен 12.08.2011

  • Организация и назначение консольного ввода-вывода, необходимые для этого функции и их применение. Библиотеки, организующие функционирование потокового ввода-вывода, выполняемые операции. Арифметические операции и математические функции в среде С++.

    лабораторная работа [33,8 K], добавлен 15.07.2009

  • Общая характеристика интерфейса языка программирования Delphi. Рассмотрение окна редактора кода, конструктора формы, инспектора объектов и расширения файлов. Ознакомление с основными этапами создания и сохранения простого приложения; проверка его работы.

    презентация [184,3 K], добавлен 18.03.2014

  • Приложение в среде Delphi, реализующее ввод двух целых чисел, по щелчку на кнопке с символом "=", вычисление результата операции вещественного деления с выводом значения на экран. Дополнение программы обработчика события: изменение цвета и ширины окна.

    лабораторная работа [13,3 K], добавлен 15.07.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.