16220
Создание Help-файла
Лабораторная работа
Информатика, кибернетика и программирование
Лабораторная работа №8 Создание Helpфайла Цель работы: Изучить способы создания Helpов Постановка задачи: Разработать Helpфайл поддерживающий контекстнозависимую помощь для задачи вычисления определенного интеграла. Создать содержание и текст составленный не мене
Русский
2013-06-20
132 KB
8 чел.
Лабораторная работа №8
Создание Help-файла
Цель работы: Изучить способы создания Help-ов
Постановка задачи: Разработать Help-файл, поддерживающий контекстно-зависимую помощь для задачи вычисления определенного интеграла. Создать содержание и текст, составленный не менее чем из 3-х разделов. Обеспечить связь между разделами с помощью гипертекстовых ссылок.
Краткие теоретические сведения:
Для создания файла справки минимальными средствами необходим текстовый редактор поддерживающий формат rtf и программа Microsoft Help Workshop (она находится в каталоге Delphi\help\tools\hcrtf.exe).
Для создания текстового файла справки используется любой текстовый редактор, например редактор Microsoft Word XP. Файл может включать в себя, помимо текста, графические изображения.
Разделы файла справки связаны между собой ссылками.
Каждый раздел может содержать следующие атрибуты:
Из всех атрибутов обязателен только контекст представляющий собой идентификатор раздела. Атрибуты задаются сносками.
Ссылки обозначаются специальными шрифтовыми выделениями. Ссылка состоит из двух частей:
1) название, которое отобразится на экране
2) ссылка на раздел
Первая часть ссылки выделяется :подчёркиванием одной или двумя линиями, или зачёркиванием. Если текст подчёркнут одной линией то текст раздела будет отображён в виде всплывающей подсказки, два других выделения откроют текст раздела в этом же окне. Вместо текста в первой части может находится изображение с такими же выделениями как у текста.
Вторая часть ссылки выделяется скрытым текстом и пользователю не видна. Она содержит идентификатор раздела.
Обе части ссылки записываются подряд бес пробелов.
Текст программы:
<Project>
program Integral;
uses
Forms,
UDisplayForm in 'UDisplayForm.pas' {Form1},
UCalc in 'UCalc.pas';
{$R *.res}
begin
Application.Initialize;
Application.HelpFile := 'D:\UniverCity\semester 4\ÊÏèßÏ\Lab08\Lab08.hlp';
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
<UDisplayForm>
unit UDisplayForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Series, ExtCtrls, StdCtrls, TeEngine, TeeProcs, Chart, Buttons, UCalc;
type
TForm1 = class(TForm)
Edit2: TEdit;
Edit1: TEdit;
MethodSelector: TRadioGroup;
DisplayChart: TChart;
SeriesFunction: TLineSeries;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
SeriesPatterned: TAreaSeries;
FunctionFormula: TImage;
Label3: TLabel;
Edit3: TEdit;
SpeedButton1: TSpeedButton;
Edit4: TEdit;
Panel1: TPanel;
Label5: TLabel;
Panel2: TPanel;
CheckBox1: TCheckBox;
SpeedButton2: TSpeedButton;
procedure FormCreate(Sender: TObject);
procedure SomeEditKeyPress(Sender: TObject; var Key: Char);
procedure SpeedButton1Click(Sender: TObject);
procedure SomeEditChange(Sender: TObject);
procedure MethodSelectorClick(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormClick(Sender: TObject);
function f2(x: Extended): Extended;
procedure SpeedButton2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
e1, e2, e3: string;
p1, p2, p3: integer;
integ: TIntegral;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var b: TBitmap;
begin
b:=TBitmap.Create;
b.LoadFromResourceName(hInstance, 'INTEGRAL');
b.Transparent:=true;
b.TransparentColor:=clWhite;
FunctionFormula.Width:=b.Width;
FunctionFormula.Height:=b.Height;
FunctionFormula.Canvas.Brush.Color:=$00BAEDEF;
FunctionFormula.Canvas.FillRect(Rect(0, 0, b.Width, b.Height));
FunctionFormula.Canvas.StretchDraw(Rect(0, 0, b.Width-1, b.Height-1), b);
b.Free;
Panel1.Left:=FunctionFormula.Left+FunctionFormula.Width;
Panel1.Height:=FunctionFormula.Height;
Panel1.Top:=FunctionFormula.Top;
integ:=TIntegral.Create;
integ.Chart:=DisplayChart;
end;
//Edited
procedure TForm1.SomeEditKeyPress(Sender: TObject; var Key: Char);
begin
if Sender=Edit3 then
begin
p3:=Edit3.SelStart;
exit;
end;
if (Sender=Edit2) then
p2:=Edit2.SelStart;
if (Sender=Edit1) then
p1:=Edit1.SelStart;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TForm1.SomeEditChange(Sender: TObject);
var r: real;
s: string;
begin
if Sender=Edit3 then
begin
try
integ.N:=StrToInt((Sender as TEdit).Text);
e3:=Edit3.Text;
except
on EConvertError do begin
Edit3.Text:=e3;
Edit3.SelStart:=p3;
end;
end;
end
else if ((Sender=Edit1) or (Sender=Edit2)) then
begin
if true then
begin
try
r:=StrToFloat((Sender as TEdit).Text);
e1:=Edit1.Text;
e2:=Edit2.Text;
except
on EConvertError do begin
if Sender=Edit1 then
begin
(Sender as TEdit).Text:=e1;
(Sender as TEdit).SelStart:=p1;
end
else if Sender=Edit2 then
begin
(Sender as TEdit).Text:=e2;
(Sender as TEdit).SelStart:=p2;
end;
exit;
end;
end;
if Sender=Edit2 then
begin
integ.B:=r;
//Application.MessageBox(PChar(floattostr(integ.Res)),'');
s:=FloatToStr(integ.B);
FunctionFormula.Canvas.TextRect(Rect(0, 0, 155, 18), 87-FunctionFormula.Canvas.TextWidth(s) div 2, 2, s)
end
else
begin
integ.A:=r;
s:=FloatToStr(integ.A);
FunctionFormula.Canvas.TextRect(Rect(0, 58, 155, 74), 87-FunctionFormula.Canvas.TextWidth(s) div 2, 60, s);
end;
end
else
begin
FunctionFormula.Canvas.Font.Size:=10;
if Sender=Edit2 then
FunctionFormula.Canvas.TextRect(Rect(0, 0, 155, 18), 87-FunctionFormula.Canvas.TextWidth('') div 2, 2, '')
else
FunctionFormula.Canvas.TextRect(Rect(0, 58, 155, 74), 87-FunctionFormula.Canvas.TextWidth('') div 2, 60, '');
end;
end;
if integ.Res=0 then
Edit4.Text:='Неверные данные!'
else
Edit4.Text:=FloatToStr(integ.Res);
end;
procedure TForm1.MethodSelectorClick(Sender: TObject);
begin
integ.CalcMethod:=MethodSelector.ItemIndex;
if integ.Res=0 then
Edit4.Text:='Неверные данные!'
else
Edit4.Text:=FloatToStr(integ.Res);
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
SeriesPatterned.AreaLinesPen.Visible:=(Sender as TCheckBox).Checked;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
SomeEditChange(Edit1);
SomeEditChange(Edit2);
end;
procedure TForm1.FormClick(Sender: TObject);
begin
integ.f:=f2;
end;
function TForm1.f2(x: Extended): Extended;
begin
Result:=x*x*3;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
Application.HelpCommand(HELP_FINDER, 10);
end;
end.
<UCalc>
unit UCalc;
interface
uses Chart;
const funcCount=4;
type
TValueChangedFunc=procedure (newValue: Extended);
TF=function (x: Extended): Extended of object;
TIntegral=class
private
FValueMin: Extended;//Нижняя граница
FValueMax: Extended;//Верхняя граница
FValueH: Extended; //Ширина шага
FRes: Extended; //Результат
FValueN: Integer; //Количество шагов
FCalcMethod: Byte; //Номер выбранного способа подсчёта (0-трап.; 1-лев.прямоуг.; 2-прав.прямоуг.; 3-средн.прямоуг)
FAutoRedraw: Boolean; //Перерисовывать при изменении хотя бы одного параметра
FChart: TChart;
FOnMinChanged: TValueChangedFunc;
FOnMaxChanged: TValueChangedFunc;
FOnNChanged: TValueChangedFunc;
FOnHChanged: TValueChangedFunc;
FF: TF; //Функция подынтегральная
protected
procedure SetN(newN: integer); virtual;
procedure SetH(newH: Extended); virtual;
procedure SetMin(newMin: Extended); virtual;
procedure SetMax(newMax: Extended); virtual;
procedure SetCalcMethod(newMethod: byte); virtual;
procedure SetChart(newChart: TChart); virtual;
procedure SetF(newF: TF);
public
constructor Create();
destructor Destroy; override;
property A: Extended read FValueMin write SetMin;//Нижняя граница
property B: Extended read FValueMax write SetMax;//Верхняя граница
property N: integer read FValueN write SetN default 10;//Количество шагов
property H: Extended read FValueH write SetH;//Ширина одного шага
property CalcMethod: byte read FCalcMethod write SetCalcMethod default 0; //Номер выбранного способа подсчёта (0-трап.; 1-лев.прямоуг.; 2-прав.прямоуг.; 3-средн.прямоуг)
property Chart: TChart read FChart write SetChart;
property AutoRedraw: boolean read FAutoRedraw write FAutoRedraw default true;//Перерисовывать при изменении хотя бы одного параметра
property Res: Extended read FRes;
//События (на изменение каждого из параметров)
property OnMinChanged: TValueChangedFunc read FOnMinChanged write FOnMinChanged default nil;
property OnMaxChanged: TValueChangedFunc read FOnMaxChanged write FOnMaxChanged default nil;
property OnNChanged: TValueChangedFunc read FOnNChanged write FOnNChanged default nil;
property OnHChanged: TValueChangedFunc read FOnHChanged write FOnHChanged default nil;
//Подынтегральная функция
function fDefault(x: Extended): Extended; virtual;
//
property f: TF read FF write SetF;
//Функции подсчёта результата
procedure ReCalc(); virtual;
function calc_trapezium: Extended; virtual;
function calc_rectangle_left: Extended; virtual;
function calc_rectangle_right: Extended; virtual;
function calc_rectangle_media: Extended; virtual;
//Функции вывода информации в компонент TChart
procedure Redraw(); virtual;
procedure draw_f; virtual;
procedure draw_trapezium; virtual;
procedure draw_rectangle_left; virtual;
procedure draw_rectangle_right; virtual;
procedure draw_rectangle_media; virtual;
end;
implementation
constructor TIntegral.Create();
begin
inherited Create();
FValueMax:=1;
FValueMin:=0;
FValueH:=0.1;
FAutoRedraw:=true;
FF:=fDefault;
N:=10;
end;
destructor TIntegral.Destroy;
begin
inherited Destroy;
end;
procedure TIntegral.SetN(newN: integer);
begin
FValueN:=newN;
if FValueN<1 then
FValueN:=1;
FValueH:=(FValueMax-FValueMin)/FValueN;
if Assigned(FOnNChanged) then
FOnNChanged(FValueN);
if Assigned(FOnHChanged) then
FOnHChanged(FValueH);
if (AutoRedraw) then
Redraw();
ReCalc();
end;
procedure TIntegral.SetH(newH: Extended);
begin
FValueN:=round((FValueMax-FValueMin)/newH)+1;
FValueH:=(FValueMax-FValueMin)/FValueN;
if Assigned(FOnNChanged) then
FOnNChanged(FValueN);
if Assigned(FOnHChanged) then
FOnHChanged(FValueH);
if (AutoRedraw) then
Redraw();
ReCalc();
end;
procedure TIntegral.SetMin(newMin: Extended);
begin
FValueMin:=newMin;
FValueH:=(FValueMax-FValueMin)/FValueN;
if Assigned(FOnMinChanged) then
FOnMinChanged(newMin);
if (AutoRedraw) then
Redraw();
ReCalc();
end;
procedure TIntegral.SetMax(newMax: Extended);
begin
FValueMax:=newMax;
FValueH:=(FValueMax-FValueMin)/FValueN;
if Assigned(FOnMaxChanged) then
FOnMaxChanged(newMax);
if (AutoRedraw) then
Redraw();
ReCalc();
end;
procedure TIntegral.SetChart(newChart: TChart);
begin
FChart:=newChart;
if (AutoRedraw) then
Redraw();
end;
procedure TIntegral.SetCalcMethod(newMethod: byte);
begin
if (newMethod in [0..3]) then
begin
FCalcMethod:=newMethod;
if (AutoRedraw) then
Redraw();
ReCalc();
end;
end;
procedure TIntegral.SetF(newF: TF);
begin
if (@newF<>nil) then
begin
FF:=newF;
ReCalc;
Redraw;
end;
end;
procedure TIntegral.ReCalc;
begin
FRes:=0;
if FValueMin<FValueMax then
begin
case FCalcMethod of
0: FRes:=calc_trapezium();
1: FRes:=calc_rectangle_left();
2: FRes:=calc_rectangle_right();
3: FRes:=calc_rectangle_media();
end;
end;
end;
function TIntegral.calc_trapezium: Extended;
var x: extended;
i: integer;
begin
Result:=0;
x:=FValueMin;
for i:=1 to FValueN do
begin
Result:=Result+(f(x)+f(x+FValueH))/2*FValueH;
x:=x+FValueH;
end;
end;
function TIntegral.calc_rectangle_left:Extended;
var i:integer;
x:extended;
begin
Result:=0;
x:=FValueMin;
for i:=1 to n do
begin
Result:=Result+FValueH*f(x);
x:=x+FValueH;
end;
end;
function TIntegral.calc_rectangle_right:Extended;
var i:integer;
x:extended;
begin
Result:=0;
x:=FValueMin;
for i:=1 to n do
begin
Result:=Result+FValueH*f(x+FValueH);
x:=x+FValueH;
end;
end;
function TIntegral.calc_rectangle_media:Extended;
var i:integer;
x:extended;
begin
Result:=0;
x:=FValueMin;
for i:=1 to n do
begin
Result:=Result+FValueH*f(x+FValueH/2);
x:=x+FValueH;
end;
end;
procedure TIntegral.Redraw;
begin
if (Assigned(FChart) and (FValueMin<FValueMax)) then
begin
draw_f;
case FCalcMethod of
0: draw_trapezium();
1: draw_rectangle_left();
2: draw_rectangle_right();
3: draw_rectangle_media();
end;
end
else if Assigned(FChart) then
begin
Chart.Series[0].Clear;
Chart.Series[1].Clear;
Chart.LeftAxis.Maximum:=0;
end;
end;
procedure TIntegral.draw_f;
var rightRange, x, h1: extended;
begin
if Assigned(FChart) then
begin
FChart.Series[1].Clear;
rightRange:=FValueMax+(FValueMax-FValueMin)*0.1;
x:=FValueMin-(FValueMax-FValueMin)*0.1;
h1:=(rightRange-x)/50;
rightRange:=rightRange+h1;
while x<=rightRange do
begin
FChart.Series[1].AddXY(x, f(x));
x:=x+h1;
end;
Chart.LeftAxis.Maximum:=f(x)*1.05;
end;
end;
procedure TIntegral.draw_trapezium;
var x: extended;
i: integer;
begin
if Assigned(FChart) then
begin
draw_f;
FChart.Series[0].Clear;
x:=FValueMin;
for i:=0 to FValueN do
begin
FChart.Series[0].AddXY(x, f(x));
x:=x+FValueH;
end;
end;
end;
procedure TIntegral.draw_rectangle_left;
var x: extended;
i: integer;
begin
if Assigned(FChart) then
begin
draw_f;
FChart.Series[0].Clear;
x:=FValueMin;
for i:=1 to FValueN do
begin
FChart.Series[0].AddXY(x, f(x));
FChart.Series[0].AddXY(x+FValueH, f(x));
x:=x+FValueH;
end;
end;
end;
procedure TIntegral.draw_rectangle_right;
var x: extended;
i: integer;
begin
if Assigned(FChart) then
begin
draw_f;
FChart.Series[0].Clear;
x:=FValueMin;
for i:=1 to FValueN do
begin
FChart.Series[0].AddXY(x, f(x+FValueH));
FChart.Series[0].AddXY(x+FValueH, f(x+FValueH));
x:=x+FValueH;
end;
end;
end;
procedure TIntegral.draw_rectangle_media;
var x: extended;
i: integer;
begin
if Assigned(Chart) then
begin
draw_f;
FChart.Series[0].Clear;
x:=FValueMin;
for i:=1 to FValueN do
begin
Chart.Series[0].AddXY(x, f(x+FValueH/2));
Chart.Series[0].AddXY(x+FValueH, f(x+FValueH/2));
x:=x+FValueH;
end;
end;
end;
function TIntegral.fDefault(x: extended): extended;
begin
Result:=Exp(sqr(x));
end;
end.
Результаты работы программы:
Выводы: таким образом, мы изучили способы создания справочной системы к программе с помощью WinHelp. Мы познакомились с правилами написания файла заготовки справочной системы (*.rtf) , с правилами подготовки файлов проекта.
Итак, мы написали программу, которая предоставляет пользователю справку по своим функциям, а также контекстно-зависимую помощь.
А также другие работы, которые могут Вас заинтересовать | |||
71383. | Вивчення брендів на основі узагальнення | 3.27 MB | |
Мною були поставлені завдання: вивчити основи формування бренду дослідити особливості спортивного брендингу. Докладно описуються такі питання як створення і позиціонування бренду. В останньому розділі курсової роботи розглядається специфіка бренду в спорті на прикладі ФЦ Барса. | |||
71384. | Проектирование контактной сети постоянного тока | 314.22 KB | |
Для подачи электроэнергии на подвижной состав применяются устройства контактной сети. Контактная сеть может быть выполнена с контактным рельсом или контактной подвеской. Основным элементами контактной сети с контактной подвеской являются провода контактной сети контактный провод... | |||
71386. | Анализ финансового состояния предприятия на примере ОАО «ВК и ЭХ» | 191.12 KB | |
Финансовое состояние – важнейшая характеристика экономической деятельности предприятия Она определяет конкурентоспособность, потенциал в деловом сотрудничестве, оценивает, в какой степени гарантированы экономические интересы самого предприятия и его партнёров в финансовом и производственном отношении. | |||
71387. | Разработка поточной линии по ремонту тележек грузовых вагонов модели 18-100 | 465.5 KB | |
Вагонное хозяйство является ключевым и играет важную роль в совершенствовании и обеспечении бесперебойной работы железнодорожного транспорта: оно объединяет вагоны и материально-техническую базу их ремонта. Задачами вагонного хозяйства являются поддержание грузовых вагонов в работоспособном... | |||
71388. | Криминологическая характеристика организованной преступности | 137.23 KB | |
Организованную преступность сегодня называют одной из глобальных проблем современности, решение которой требует усилий всего человечества, слаженных действий в рамках отдельных государств, координируемых мировым сообществом. | |||
71389. | Equivalence within the framework of Dynamic translation model | 57.35 KB | |
The actual work of translation brings together everything the translator has learned about the target audience. Having faced many difficulties in preparing for me translation, the translator is will face still more obstacles before the work is done. | |||
71390. | Процесс развития воображения у детей дошкольного возраста | 123.42 KB | |
Проблема развития воображения детей дошкольного возраста привлекает к себе пристальное внимание психологов и педагогов. Одним из них является вопрос об индивидуальных особенностях развития воображения проявлений индивидуальности ребенка в его творческой деятельности. | |||