Клиентская часть технологической среды для разработки больших экономических моделей: компоненты поддержки работы эксперта-экономиста при формировании и отладке (в расчетном режиме) структурного текста модели

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

True, когда переменная зависит от 2-х индексов

begin

if (eVar.Text=) or (lbVar.Items.Count=0) then exit;

2thenbegin"> if lbVar.Items.Count>2 then begin

MessageDlg(В переменной должно быть не больше двух индексов,mtError,[mbOk],0);

exit;

end;

IndexChance:=not IndexChance;

lbAll.Enabled:=not lbAll.Enabled;

lbVar.Enabled:=not lbVar.Enabled;

sgVar.Enabled:=not sgVar.Enabled;

eVar.Enabled:=not eVar.Enabled;

eRem.Enabled:=not eRem.Enabled;

sgVar.ShowHint:=not sgVar.ShowHint;

if lbVar.Items.Count=2 then Two:=True

else Two:=False;

Кнопка Ok нажата один раз

if not IndexChance then begin

fmMain.qMain.SQL.Clear;

Выборка параметров индексов

fmMain.qMain.SQL.Add(SELECT * from Indexes where ID=+#39+lbVar.Items.Strings[0]+#39+;);

fmMain.qMain.Open;

Количество столбцов таблицы sgVar

sgVar.ColCount:=round((fmMain.qMain.FieldByName(Mx).AsInteger-fmMain.qMain.FieldByName(Mn).AsInteger) div fmMain.qMain.FieldByName(Step).AsInteger+1)+1;

Если переменная зависит от 2-х индексов

if Two then begin

fmMain.qSec.SQL.Clear;

fmMain.qSec.SQL.Add(SELECT * from Indexes where ID=+#39+lbVar.Items.Strings[1]+#39+;);

fmMain.qSec.Open;

Количество строк таблицы sgVar для второго индекса

sgVar.RowCount:=round((fmMain.qSec.FieldByName(Mx).AsInteger-fmMain.qSec.FieldByName(Mn).AsInteger) div fmMain.qSec.FieldByName(Step).AsInteger+1)+1;

end;

Заполнение верхней строки таблицы sgVar значениями индекса

sgVar.FixedRows:=1;

sgVar.FixedCols:=1;

for i:=1 to sgVar.ColCount-1 do

sgVar.Cells[i,0]:=IntToStr(fmMain.qMain.FieldByName(Mn).AsInteger+(i-1)*fmMain.qMain.FieldByName(Step).AsInteger);

Если переменная зависит от 2-х индексов

if Two then begin

Заполнение первого столбца таблицы sgVar значениями второго индекса

for i:=1 to sgVar.RowCount-1 do

sgVar.Cells[0,i]:=IntToStr(fmMain.qSec.FieldByName(Mn).AsInteger+(i-1)*fmMain.qSec.FieldByName(Step).AsInteger); sgVar.Cells[0,0]:=fmMain.qSec.FieldByName(Id).AsString+\+fmMain.qMain.FieldByName(Id).AsString;

end

else sgVar.Cells[0,0]:=fmMain.qMain.FieldByName(Id).AsString;

fmMain.qMain.Close;

fmMain.qSec.Close;

end

 

Кнопка Ok нажата второй раз

else begin

for i:=0 to lbVar.Items.Count-1 do begin

fmMain.qMain.SQL.Clear;

Заносим имя переменной и ее индекс в таблицу Inter

fmMain.qMain.SQL.Add(INSERT INTO Inter VALUES(+#39+eVar.Text+#39+,+#39+lbVar.Items.Strings[i]+#39+,1,+#39+v+#39+););

fmMain.qMain.ExecSQL;

end;

num:=0;

Заносим в базу данных значения переменных иэ табл. sgVar

for i:=1 to sgVar.ColCount-1 do

for j:=1 to sgVar.RowCount-1 do begin

fmMain.qMain.SQL.Clear;

inc(num);

fmMain.qMain.SQL.Add(INSERT INTO Param VALUES(+#39+eVar.Text+#39+,+#39+lbVar.Items.Strings[0]+#39+,+#39+sgVar.Cells[i,0]+#39+,+IntToStr(num)+););

fmMain.qMain.ExecSQL;

Заносим в табл. Param имена переменных и их комментарии

if Two then begin

fmMain.qMain.SQL.Clear;

fmMain.qMain.SQL.Add(INSERT INTO Param VALUES(+#39+eVar.Text+#39+,+#39+lbVar.Items.Strings[1]+#39+,+#39+sgVar.Cells[0,j]+#39+,+IntToStr(num)+););

fmMain.qMain.ExecSQL;

end;

fmMain.qMain.SQL.Clear;

fmMain.qMain.SQL.Add(INSERT INTO Var_value VALUES(+#39+eVar.Text+#39+,+IntToStr(num)+,+#39+sgVar.Cells[i,j]+#39+,+0););

fmMain.qMain.ExecSQL;

fmMain.qMain.SQL.Clear;

fmMain.qMain.SQL.Add(INSERT INTO Var_value VALUES(+#39+eVar.Text+#39+,+IntToStr(num)+," ",+-1););

fmMain.qMain.ExecSQL;

end;

fmMain.qMain.SQL.Clear;

fmMain.qMain.SQL.Add(INSERT INTO Params (id,remark) VALUES(+#39+eVar.Text+#39+,+#39+eRem.Text+#39+));// changed for MDI

fmMain.qMain.ExecSQL;

Добавляем переменную в дерево переменных

nil))thenTfmForm1(fmMain.ActiveMDIChild).tv.Items.AddChild(TfmForm1(fmMain.ActiveMDIChild).tv.Selected.Parent,eVar.Text)"> if not(TfmForm1(fmMain.ActiveMDIChild).tv.Selected.HasChildren or not(TfmForm1(fmMain.ActiveMDIChild).tv.Selected.Parent<>nil )) then TfmForm1(fmMain.ActiveMDIChild).tv.Items.AddChild(TfmForm1(fmMain.ActiveMDIChild).tv.Selected.Parent,eVar.Text)

else TfmForm1(fmMain.ActiveMDIChild).tv.Items.AddChild(TfmForm1(fmMain.ActiveMDIChild).tv.Selected,eVar.Text);

 

Close;

end;

end;

Модуль формы fmSetInter.

 

Рис.12. форма fmSetInter.

 

Рис.13. алгоритм работы процедуры TfmSetInter.cb1Change формы fmSetInter.

Процедура TfmSetInter.cb1Change.

var

i:integer;

begin

Если минимальное значение изменено

if TComboBox(sender).name=cb1 then begin

Списку максимальных значений присвоить список минимальных

cb2.items:=cb1.items;

Если выбрано мин. значение удаляем из макс. списка лишнее

-1thenfori:=0tocb1.itemindex-1docb2.Items.Delete(0);"> if cb1.itemindex<>-1 then for i:=0 to cb1.itemindex-1 do cb2.Items.Delete(0);

end;

Если выбраны все значения кнопка Ok доступна

-1)and(cb2.itemindex-1) then OKBtn.enabled:=true

else okBtn.enabled:=False;

Сохраняем значения

min:=cb1.items[cb1.itemindex];

max:=cb2.items[cb2.itemindex];

 

Модуль формы fmIndex.

Рис.14. форма fmIndex.

Рис.15. алгоритм работы процедуры TfmIndex.FormClose.

var

i : longint;

begin

Курсор в начало таблицы

tIndex.First;

цикл по всем строкам таблицы

for i:=1 to tIndex.RecordCount do begin

условия корректности

tIndex.FieldByName(Mx).AsInteger)"> if (tIndex.FieldByName(Mn).AsInteger>tIndex.FieldByName(Mx).AsInteger)

tIndex.FieldByName(Mx).AsInteger)"> or (tIndex.FieldByName(Mn).AsInteger+tIndex.FieldByName(Step).AsInteger>tIndex.FieldByName(Mx).AsInteger)

then begin

сообщение об ошибке

MessageDlg(Введите привильное значение индекса, mtError, [mbOk], 0);

Action:=caNone;

exit;

end;

переход на следущую строку

tIndex.Next;

end;

закрытие таблицы tIndex

tIndex.Active:=False;

end;

Глава 2

ТЕХНОЛОГИЧЕСКАЯ ЧАСТЬ

 

Технология программирования с использованием средств быстрой разработки приложений”

 

2. Технология программирования с использованием средств быстрой разработки приложений

 

2.1 Введение

 

Тема данной главы - технология быстрой разработки приложений - RAD (Rapid Application Development). Данная технология сравнительно нова, но она быстро становится популярной, многие производители средств разработки приложений взяли эту технологию на вооружение.

Хотя это и новый подход в программировании, но и до появления RADсредств делались попытки облегчить труд программиста, сделать этот труд более продуктивным, повысив этим быстродействие и удобство создания приложений. Перво