Размещение объектов в Delphi связано с более тесными отношениями между объектами и реальным программным кодом. Объекты помещаются в вашу проектируемую форму, при этом код, отвечающий объектам, автоматически записывается в исходный файл. Этот код компилируется, обеспечивая существенно более высокую производительность, чем визуальная среда, которая интерпретирует информацию лишь в ходе исполнения программы.
В первую очередь Delphi предназначен для профессионалов-разработчиков корпоративных информационных систем. Может быть, здесь следует пояснить, что конкретно имеется в виду. Не секрет, что некоторые удачные продукты, предназначенные для скоростной разработки приложений (RAD – rapid application development) прекрасно работают при изготовлении достаточно простых приложений, однако, разработчик сталкивается с непредвиденными сложностями, когда пытается сделать что-то действительно сложное. Бывает, что в продукте вскрываются присущие ему ограничения только по прошествии некоторого времени. Delphi такие ограничения не присущи. Хорошее доказательство тому – это тот факт, что сам Delphi разработан на Delphi. Однако Delphi предназначен не только для программистов-профессионалов. Студенты, преподаватели ВУЗов, военнослужащие, все те, кто используют компьютер с прикладной целью, способны быстро решить какие-то свои задачи, не привлекая для этого программистов со стороны.
Delphi в настоящее время считается господствующим языком, используемым для разработки программных продуктов. Естественная для него область применения – системное и прикладное программирование. Множество инструментов и компонентов применяемых в Delphi позволяют упростить выполнение поставленной задачи.
Наиболее удобным и приемлемым языком для программирования АРМ оператора автотранспортного предприятия является язык Delphi. Он позволяет легко работать с программами содержащими большое количество строк, имеет простой и в тоже время богатый пользовательский интерфейс, реализовывает различные стили программирования.
Таким образом, как уже говорилось, прежде чем начинать программирование приложения, вам надо составить для себя список действий, которые должны быть доступны будущему пользователю через разделы меню, инструментальные панели, кнопки и другие элементы управления. При программировании этот список реализуется специальными компонентами, обеспечивающими диспетчеризацию действий. В Delphi 7, это компонент ActionManager.
В разработанной программе такими действиями являются создание и просмотр путевых листов, данные о клиентах, а также, выдача справочной информации.
После того как список действий создан, надо сформировать полосыдействий. Это компоненты, на которых располагаются интерфейсные компоненты действий. Такими полосами действий являются полоса главного меню и инструментальные панели. В ActionManager полосы создаются и формируются непосредственно из редактора ActionManager простым перетаскиванием мышью.
Интерфейсные компоненты действий обычно должны содержать поясняющие их изображения. Эти изображения собираются в списке изображений – компоненте ImageList. Для нестандартных действий эти изображения вы должны загрузить в ImageList сами. А изображения для стандартных действий загружаются в него автоматически по мере формирования списка в диспетчере действий.
Таким образом, последовательность формирования списка действий и проектирования меню и инструментальных панелей сводится к следующим шагам:
1. Продумывается и составляется список действий, которые должны быть доступны будущему пользователю через разделы меню, инструментальные панели, кнопки и другие элементы управления.
2. Для тех нестандартных действий, которые должны быть доступны из кнопок инструментальной панели, готовится список пиктограмм на кнопке в компоненте ImageList.
3. На главную форму приложения переносится компонент диспетчеризации действий ActionManager. Компонент связывается с ImageList. Формируется список стандартных и нестандартных действий.
4. Каждому действию задается набор характеристик: Name (имя) Caption (в которой выделяется символ быстрого доступа), Shortcut (горячие клавивиши), Imagelndex (номер изображения в ImageList), Hint (тексты подсказок), HelpContext или HelpKeyword (ссылка на тему справки) и др.
5. Записываются обработчики событий выполнения для всех нестандартных действий. Стандартные действия обрабатываются автоматически и для многих у них достаточно задать некоторые свойства обработки.
6. На форму переносится компонент ActionMainMenuBar– полоса главного меню. Она связывается с диспетчером ActionManager. Затем из редактора ActionManager перетаскиваются мышью на полосу меню категории разделов, которые должны входить в меню как головные разделы, или отдельные действия.
7. В редакторе ActionManager создается новая инструментальная панель, или несколько панелей. На них перетаскиваются мышью необходимые действия.
Вся программа состоит из модулей:
ARM.dpr;
Disp.pas;
Disp.dcu;
Disp.dfm;
ARM.res.
Модуль, посредством которого осуществляется запуск программы, создание главной формы и её инициализация – является ARM.dpr.
Все основные функции по выводу информации и обработке нажатия кнопок сосредоточены в модуле Disp.pas
Для этого на форме расположен компонент ActionManager.
Для ввода и отображения табличной информации использован компонент StringGrid.Компонент StringGrid представляет собой таблицу, ячейки которой содержат строки символов.
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
StringGrid4: TStringGrid;
Добавляется компонент StrinGgrid в форму точно так же, как и другие компоненты. После добавления компонента к форме нужно выполнить его настройку.
При инициализации программы в первую строку таблицы заносятся заголовки колонок:
StringGrid1. Cells [0,0]:='№ записи';
StringGrid1. Cells [1,0]:=' дата';
StringGrid1. Cells [2,0]:=' наименование';
StringGrid1. Cells [3,0]:='ед.измерения';
StringGrid1. Cells [4,0]:='текущийобъем';
StringGrid1. Cells [5,0]:='цена';
StringGrid1. Cells [6,0]:='приход';
StringGrid1. Cells [7,0]:='расход';
StringGrid1. Cells [8,0]:='остаток';
Вся информация сохраняется в файлах. Файл – это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности практически не ограничено.
Файл объявлен в разделе описания переменных. При объявлении файла указывается тип элементов файла.
var FG, FZ, FP, FK: TextFile.
Объявление файловой переменной задает только тип компонентов файла. Для того чтобы программа могла выводить данные в файл или считывать данные из файла, необходимо указать конкретный файл, т.е. связать файловую переменную с конкретным файлом (задать имя файла).
Имя файла задается вызовом процедуры AssignFiie, связывающей файловую переменную с конкретным файлом:
AssignFile (FG, 'BD\gur.txt'); AssignFile (FZ, 'BD\zak.txt');
AssignFile (FP, 'BD\pok.txt'); AssignFile (FK, 'BD\kon.txt');
Перед использованием файла его необходимо открыть.
Возможны следующие режимы открытия файла:
для записи в него данных необходимо вызвать процедуру
Rewrite(f),
где f – файловая переменная типа TextFile;
для чтения необходимо вызвать процедуру
Reset(f),
где f – файловая переменная типа TextFile;
Непосредственно вывод в текстовый файл осуществляется при помощи инструкции writeln. В общем виде эта инструкция записываются следующим образом:
writeln (ФайловаяПеременная, СписокВывода);
где:
ФайловаяПеременная – переменная, идентифицирующая файл, в который выполняется вывод;
СписокВывода – разделенные запятыми имена переменных, значения которых надо вывести в файл. Помимо имен переменных в список вывода можно включать строковые константы. В программе АРМ вывод в файл осуществляется при помощи операторов:
Rewrite(FG);
Sfp:= StringGrid1. Cells [0, r]+ ' '+ StringGrid1. Cells [1, r] +' '+ StringGrid1. Cells [2, r] + ' '+ StringGrid1. Cells [3, r]+ ' '+ StringGrid1. Cells [4, r]+ ' '+ StringGrid1. Cells [5, r] + ' '+ StringGrid1. Cells [6, r]+ ' '+ StringGrid1. Cells [7, r]+ ' '+ StringGrid1. Cells [8, r];
writeln (FG, Sfp);
CloseFile (FG);
Отображение справочной информации осуществляется при помощи компонента WebBrowser1.
Нажатие кнопки мыши на соответствующий документ вызывает в окно WEB браузера информации об интересующем элементе. Вся необходимая информация хранится в папке '\Документы\'. Для ее вызова используется стандартная процедура языка Delphi 7.0:
GetDir (0, s); // Определение текущего каталога программы
adr:=s + '\Документы\' + 'tr_zak.rtf';
WebBrowser1. Navigate(adr);
Здесь в первой строке переменной adr присваивается значение соответствующее адресу файла в котором хранится необходимая информация. Вторая строка обеспечивает вызов и отображение этой информации в окне WEB браузера.
Процедура BitBtn1Click (Sender: TObject) служит для обеспечения корректного выхода из программы путем выполнения метода:
Form1. Close.
Кроме того, в программе используется справочный материал, который поможет обучаемым освоить работу с данной программой.
Полный листинг программы модулей программы приведен в приложении.
Для запуска работы программы необходимо запустить на выполнение файл ARM.exe при этом на экране отобразится следующая картинка (рисунок 3.1).
После этого можно переходить непосредственно к использованию программы по назначению. Это выполняется путем нажатия левой кнопки мыши на соответствующем элементе меню (рисунки 3.2, 3.3).