Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы к экзамену.docx
Скачиваний:
6
Добавлен:
04.06.2015
Размер:
56.93 Кб
Скачать
  1. Организация динамической настройки меню средствами 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.

  1. Основные сведения о подпрограммах;

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

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

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

STR(Имя числовой переменно[:число символов, отводимых под число, число символов, отводимых под дробную часть]) – преобразование числа в строковую перемнную.

Random(N) – возвращает случайное число в диапазоне от 0 до N-1, где N величина целого типа.

  1. Подпрограмма-процедура;

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

-когда подпрограмма не возвращает в основную программу никаких данных (вычерчивает график в диалоговом окне;)

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

procedure Имя (var параметр1: тип1; ... var параметрК: типК);

var

// здесь объявление локальных переменных

Begin

// здесь инструкции процедуры

end;

procedure – зарезервированное слово языка Delphi, обозначающее, что далее следует объявление процедуры; имя – имя процедуры, которое используется для вызова процедуры; параметр K – формальный параметр, переменная.

  1. подпрограмма-функция;

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

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

function Имя (Список формальных параметров): Тип функции;

var

// здесь объявления локальных переменных

begin

// здесь инструкции функции

Имя := Выражение;

end;

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

- каждая функция возвращает значение определенного типа, поэтому тип переменной, которой присваивается значение функции, должен соответствовать типу функции;

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

  1. Организация записи данных в текстовый файл и чтение данных из текстового файла с помощью функций, основанных на языке 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').

  1. Применение методов 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').

  1. Организация работы со спискам;

Компонент ComboBox (страница Standard) объединяет поле редак-

тирования и список. Работа с таким списком практически не отличается от

работы с простым списком ListBox.

  1. Организация работы с таблицами;

Компоненты 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 позволяет выбирать значения, отображённые в ячейках, во время работы приложения.

*

  1. Построение диаграмм в Delphi;