double arrow
Организация Меню

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

Построение графиков в компоненте Chart

Положите на форму компонент Chart изпалитры компонентов Additional. Подготовте его для вывода одного или нескольких графиков следующим образом. Дважды щелкните левой кнопкой мыши на компоненте. При этом появится окно редактирование графической формы (Editing Chart1). В меню активируйте Chart, Series, как показано на рис.6 а. Нажмите кнопку Add (добавить). В появившемся окне формы графика выберите тип графика Line и нажмите Ok. В окне редактирования появится новая строка с названием Series 1. Компонент Chart1 подготовлен к приёму в него одного графика. Если нужно построить одновременно несколько графиков, нажимая кнопку Add, можно добавить столько графиков, сколько требуется для решения задачи. Не выходя из режима редактирования формы графического изображения попробуйте сменить форму графика, и цвет линии, дважды щелкая на соответствующую пиктограмму. Убрать лишний график можно командой удаления Delete. Перейдите на закладку 3D – рисование объемных графиков и уберите галочку в поле, расположенном слева от надписи 3 Dimensions. Убрать сопровождение графика таблицей чисел («легенда» - Legend) можно перейдя на соответствующую закладку и убрав «птичку», расположенную слева от слова Visible. Закройте окно редактирования формы графика, нажав кнопку Close. Компонент Chart1 активирован и готов к приёму информации для построения графиков. Признак готовности – появления графика случайных чисел в поле компонента Chart1 в режиме разработки программы. Если такого графика нет - Chart1 не активирован.




Рис.6. Окно редактирования графической формы (Editing Chart1): а) компонент Chart1 не активирован; б) возможен вывод в Chart1 одного графика.



Перейдите в окно кода программы и допишите код вывода информации в виде графика. Пример построения графика функции. Пусть нужно вывести на график зависимость тока генератора импульсных токов (ГИТ). Эта зависимость описывается формулой для периодического процесса:

,

где g- показатель процесса - , а R, C L –активное сопротивление, ёмкость и индуктивность ГИТ; g может принимать значения от 0 до числа меньше чем 1; t¢ - приведенное время (одного периода) изменяется от 0 до 2p; I0 – максимальное амплитудное значение тока при R=0.

Код программы будет выглядеть следующим образом:

procedure TForm1.N2Click(Sender: TObject);

var gamma,I0,t,I, stepT,a,Imax,Imin:real;

n, Nstep:integer;

Begin

Nstep:=StrToInt(LabeledEdit1.Text); {Ввод числа шагов по времени}

Gamma:=StrToFloat(LabeledEdit2.Text);

I0:=StrToFloat(LabeledEdit3.Text);

StepT:=2*pi/Nstep; {Вычисление шага по времени}

Chart1.Series[0].Clear;{Очистка графика}

Imax:=0;Imin:=0;

Memo1.Clear; {Очистка поля вывода}

for n:=0 to Nstep do

begin

t:=n*StepT; {вычисление текущего времени}

a:=sqrt(1-sqr(gamma));

I:=I0/a*exp(-gamma*t)*sin(a*t);{вычисление тока}

Chart1.Series[0].AddXY(t,I,'',clteecolor); {Вывод графика}

Chart1.Series[1].AddXY(t,0,'',clteecolor); {Вывод нулевой линии}

if I>Imax then Imax:=I; {нахождение максимума тока}

if I<Imin then Imin:=I; {нахождение минимума тока}

end;

{Вывод в поле Memo1 данных в фиксированном формате}

Memo1.Lines.Add('Imax= '+FloatToStrF(Imax,ffFixed,3,2)+' кА');

Memo1.Lines.Add('Imin= '+FloatToStrF(Imin,ffFixed,3,2)+' кА');

Memo1.Lines.Add('Imax/I0= '+FloatToStrF(Imax/I0*100,ffFixed,3,1)+' %');

Memo1.Lines.Add('Imin/I0= '+FloatToStrF(-Imin/I0*100,ffFixed,3,1)+' %');

end;

При выводе отдельной точки графика с помощью процедуры Chart1.Series[0].AddXY(t,I,'',clteecolor); в определении номера серии графика стоит 0, а не 1, как при редактировании (рис.6б). Это связано с тем, что все номера в Дельфи начинаются с 0, а не с 1. В круглых скобках функции добавления на график точки с координатами Х и У (AddXY) ставиться сначала текущее значение абсциссы Х (данном случае это t), затем ордината У (I). Два следующих значения рекомендуется просто скопировать. Они означают соответственно, что дополнительных надписей под значениями ординат на графике делаться не будет, а цвет графика будет такой, каким он определен при редактировании формы графика рис.6б (clTeeColor- цвет дерева цветов).

При выводе в моле Memo чисел, для которых заранее известен порядок их величины, удобно пользоваться функцией преобразования FloatToStrF( ), вместо FloatToStr( ). В списке фактических переменных этой функции последовательно ставятся: 1)- само число, которое нужно преобразовать в строку; 2)- тип формата вывода (в данном случае это фиксированный формат ffFixed); 3)- число цифр до запятой; 4)- число цифр после запятой. Более подробно о работе этой функции, как и любой другой, можно прочитать в справке, которая вызывается нажатием клавиш Ctrl-F1, когда курсор установлен где-то на функции.

Обратите внимание на то, что в списке параметров функции Memo1.Lines.Add( ) может быть, по определению, только одна строковая переменная. Превращение нескольких разных строковых переменных в одну строку достигается применением операции сложения строк (конкатенация). Для обозначения операции сложения используется знак «+» (как при обычном арифметическом сложении).






Сейчас читают про: