- •Организация главного меню;
- •Организация контекстного (вспомогательного ) меню;
- •Работа с компонентами-диалогами;
- •Организация динамической настройки меню средствами Delphi;
- •Компоненты для построения диаграмм Используются компоненты Chart и dbСhart.
- •Ползунок – компонент TrackBar
- •Полоса прокрутки – компонент ScrollBar
- •Организация работы с таблицами;
-
Организация динамической настройки меню средствами Delphi;
Для динамического включения в меню нового пункта следует при разработке проекта составить процедуру, которая в дальнейшем будет запускаться при выборе нового пункта меню. Следует отметить, что заготовка процедуры осуществляется вручную. Также необходимо имя процедуры указать в интерфейсной части модуля. Для обозначения номера пункта меню используется свойство Items. В квадратных скобках указывается номер пункта меню, с которым мы работаем. Нумерация начинается с нуля.
-
добавить, вставить или удалить пункт меню (методы Add, Insert, Delete);
-
сделать пункт меню видимым или невидимым (свойство Visible);
-
заблокировать или разблокировать отдельные пункты меню (свойство Enabled);
• изменить название пункта меню (свойство Caption). Команды динамической настройки меню следует записывать в соответствующих процедурах модуля.
Пример 1 Добавление нового раздела в конец меню
Для события, когда компонент Memo1станет активным для ввода, добавить в конец главного меню новый раздел. Добавим в форму меню, однострочный и многострочный редакторы. Для события OnEnter многострочного редактора через двойной щелчок создадим заготовку процедуры. В ней будем динамически добавлять новый раздел в главное меню.
Пример 2 Удаление пункта меню
Для события, когда компонент перестанет быть активным для ввода (OnExit), удалить раздел меню. Следует применить метод Delete(номер удаляемого раздела меню).
Пример 3 Добавление пункта в указанную позицию меню.
Используется метод Insert(номер пункта меню, имя пункта меню)
Пример 4 Организация доступности и видимости пункта меню
Для организации доступности применяется свойство Enabled. Для организации видимости пункта используется свойство Visible. Оба свойства имеют логический тип.
Программный код модуля, организующего динамическую настройку меню
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus;
type
TForm1 = class(TForm)
Memo1: TMemo;
MainMenu1: TMainMenu;
N11: TMenuItem;
N21: TMenuItem;
Edit1: TEdit;
N1: TMenuItem;
procedure Memo1Enter(Sender: TObject);
procedure Memo1Exit(Sender: TObject);
//Заголовки следующих двух процедур создаются вручную
procedure N1CLICK(Sender: TObject);
procedure N2CLICK(Sender: TObject);
procedure Edit1Enter(Sender: TObject);
procedure Edit1Exit(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{Процедура запускается, когда Memo1 станет активным для ввода }
procedure TForm1.Memo1Enter(Sender: TObject);
Var
NR:TmenuItem;//NR- переменная для нового раздела меню
begin
NR:=TmenuItem.Create(Self);//Self- Переменная для нового раздела меню
NR.Caption:='Очистка многострочного редактора';
Mainmenu1.Items[1].Enabled:=True;
// Добавление нового раздела в конец меню
MainMenu1.Items.Add(NR);
{Задание имени процедуры N1CLICK для созданного раздела.
Процедуру следует создать вручную заранее}
MainMenu1.Items[2].OnClick:=N1CLICK;//2 - Номер раздела меню
end;
//Эта процедура будет запускаться при выборе созданного раздела меню
procedure TForm1.N1CLICK(Sender: TObject);
Begin
Memo1.Lines.clear;
Memo1.Lines.Add('Приглашение к вводу');
End;
{Эта процедура запускается, когда Memo1 перестанет быть активным для ввода}
procedure TForm1.Memo1Exit(Sender: TObject);
begin
Memo1.Clear;
Mainmenu1.Items.Delete(2); //Удаление пункта меню
end;
procedure TForm1.Edit1Enter(Sender: TObject);
Var
NR:TmenuItem;//NR- переменная для нового раздела меню
begin
NR:=TmenuItem.Create(Self);//Self- Переменная для нового раздела меню
NR.Caption:='Очистка Однострочного редактора';
// Добавление нового раздела в конец меню
MainMenu1.Items.Insert(1,NR);//Вставка нового пункта в меню
{Задание имени процедуры N2CLICK для созданного раздела.
Процедуру следует создать вручную заранее}
MainMenu1.Items[1].OnClick:=N2CLICK;//2 - Номер раздела меню
end;
procedure TForm1.N2CLICK(Sender: TObject);//Запускается при выборе созданного раздела
Begin
Edit1.Text:='*';
Edit1.Color:=Clred;
MainMenu1.Items[0].Enabled:=false;
End;
procedure TForm1.Edit1Exit(Sender: TObject);
begin
MainMenu1.Items.Delete(1);
Edit1.Color:=ClWindow;
MainMenu1.Items[0].Enabled:=True;
end;
end.
-
Основные сведения о подпрограммах;
Подпрограмма - набор операторов, команд, оформленных специальным образом. Подпрограмму можно вызывать из основной программы.
Вынося какой-то код в подпрограмму, исключается дублирование этого кода в различных местах программы и, естественно, уменьшается общий объём кода программы. использование подпрограмм позволяет организовать разделение труда: при работе над большим проектом каждый работает над своей задачей, а все результаты быстро и просто подключаются к основной программе. В общем случае работа с подпрограммой делится на два этапа. Во-первых, описать подпрограмму. затем прописать вызов подпрограммы во всех нужных местах, протестировать работоспособность программы, и затем продолжить написание подпрограммы. В стандартных модулях Delphi описано великое множество подпрограмм.
Например, модуль Math для доступа к математическим функциями или модуль StrUtils с функциями обработки строк. Если модуль не подключен, Delphi не узнает, где находится подпрограмма и какие функции она выполняет.
STR(Имя числовой переменно[:число символов, отводимых под число, число символов, отводимых под дробную часть]) – преобразование числа в строковую перемнную.
Random(N) – возвращает случайное число в диапазоне от 0 до N-1, где N величина целого типа.
-
Подпрограмма-процедура;
Процедура – это разновидность подпрограммы. Обычно подпрограмма реализуется как процедура в двух случаях:
-когда подпрограмма не возвращает в основную программу никаких данных (вычерчивает график в диалоговом окне;)
- когда подпрограмма возвращает в вызвавшую ее программу больше чем одно значение (подпрограмма, которая решает квадратное уравнение, должна вернуть в вызвавшую ее программу корни уравнения.)
procedure Имя (var параметр1: тип1; ... var параметрК: типК);
var
// здесь объявление локальных переменных
Begin
// здесь инструкции процедуры
end;
procedure – зарезервированное слово языка Delphi, обозначающее, что далее следует объявление процедуры; имя – имя процедуры, которое используется для вызова процедуры; параметр K – формальный параметр, переменная.
-
подпрограмма-функция;
Подпрограмма-функция — это подпрограмма, т. е. последовательность инструкций, имеющая имя.
Процесс перехода к инструкциям функции называется вызовом функции или обращением к функции. Процесс перехода от инструкций функции к инструкциям программы, вызвавшей функцию, называется возвратом из функции.
function Имя (Список формальных параметров): Тип функции;
var
// здесь объявления локальных переменных
begin
// здесь инструкции функции
Имя := Выражение;
end;
function – зарезервированное слово языка Delphi, обозначающее, что далее следуют инструкции, реализующие функцию программиста; имя – имя функции; параметр – это переменная, значение которой используется для вычисления значения функции.
- каждая функция возвращает значение определенного типа, поэтому тип переменной, которой присваивается значение функции, должен соответствовать типу функции;
- тип и количество параметров для каждой конкретной функции строго определены.
-
Организация записи данных в текстовый файл и чтение данных из текстового файла с помощью функций, основанных на языке Object Pascal;
Файл – это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности практически не ограничено.
Имя:file of ТипЭлементов;
Примеры:
res: file of char; // файл символов
koef: file of real; // файл вещественных чисел
f: file of integer; // файл целых чисел
Файл, компонентами которого являются данные символьного типа, называется символьным, или текстовым. Описание:
Имя:TextFile;
где имя – имя файловой переменной;
TextFile – обозначение типа, показывающее, что имя – это файловая переменная, представляющая текстовый файл.
Метода работы с текстовыми файлами: способ, основанный на Pascal; через файловые потоки.
У всех потомков класса TStrings (TStringList, Memo.Lines и т. п.) есть методы записи в файл и чтения из него - SaveToFile, LoadFromFile.
Примеры:
1. Загрузка текста из файла в Memo:
Memo1.lines.loadfromfile('c:\MyFile.txt');
2. Сохранение в файл:
Memo1.lines.savetoFile('c:\MyFile.txt');
записать в файл данные строки или столбца таблицы Stringgrid.
Stringgrid1.Rows[k].Savetofile('1.txt');
Можно загрузить из файла данные в строку или столбец таблицы
Например: Stringgrid1.Cols[1].LoadFromFile('1.txt').
-
Применение методов savetoFile и loadfromfile для работы с файлами на примерах компонентов Memo и Stringgrid;
Метода работы с текстовыми файлами: способ, основанный на Pascal; через файловые потоки.
У всех потомков класса TStrings (TStringList, Memo.Lines и т. п.) есть методы записи в файл и чтения из него - SaveToFile, LoadFromFile.
Примеры:
1. Загрузка текста из файла в Memo:
Memo1.lines.loadfromfile('c:\MyFile.txt');
2. Сохранение в файл:
Memo1.lines.savetoFile('c:\MyFile.txt');
записать в файл данные строки или столбца таблицы Stringgrid.
Stringgrid1.Rows[k].Savetofile('1.txt');
Можно загрузить из файла данные в строку или столбец таблицы
Например: Stringgrid1.Cols[1].LoadFromFile('1.txt').
-
Организация работы со спискам;
Компонент ComboBox (страница Standard) объединяет поле редак-
тирования и список. Работа с таким списком практически не отличается от
работы с простым списком ListBox.
-
Организация работы с таблицами;
Компоненты DrawGrid и StringGrid имеют форму таблиц. Они предоставляют программисту мощные возможности создания и обслуживания табличных структур данных, позволяют отображать и редактировать данные в каждой ячейке по отдельности. Чтобы таблица была работоспособной, в ней как минимум следует определить обработчик события OnDrawCell, которое возникает при необходимости прорисовать ту или иную ячейку. Для прорисовки используется свойство Canvas. При формировании процедур прорисовки используются методы CellRect и MouseToSell. Компонент DrawGrid только отображает информацию, но не хранит её.
Более простой и удобной в использовании является таблица StringGrid. StringGrid тоже позволяет отображать графические образы, но их прорисовка и хранение выполняются программно.
Таблица делится на фиксированную и рабочую. Фиксированная часть служит для отображения заголовков столбцов/рядов и для ручного управления их размерами, занимает крайний левый столбец и самый верхний ряд таблицы. Остальная часть таблицы – рабочая, она содержит произвольное число столбцов и рядов.
Размеры таблицы определяют св-ва ColCount и RowCount.
Если рабочая часть не умещается в пределах окна компонента, то используются полосы прокрутки. Свойства Options определяет внешний вид и функциональные свойства таблицы. Чтобы вводить в таблицу данные и редактировать содержимое, параметр goEditing устанавливают в true. Cells[ACol,ARow:integer]:String обеспечивает доступ к отдельным ячейкам и представляет собой двумерный массив, содержащий строки текста ячеек. Параметр ACol указывает колонку ячейки, а параметр ARow – её строку.
Пример:
StringGrid1.RowCount:=10;
StringGrid1.Cells[0,0]:='Аргумент';
StringGrid1.Cells[1,0]:='Функция';
Свойство Objects[ACol,ARow:integer]:TObject обеспечивает доступ к объекту. Cols[index:integer]:TString – представляет собой список строк, содержащий значения всех ячеек колонки с номером index.
Rows[index:integer]:TString обеспечивает доступ к ряду с номером, заданным параметром index.
Компонент StringGrid позволяет выбирать значения, отображённые в ячейках, во время работы приложения.
*
-
Построение диаграмм в Delphi;