Клиентская часть технологической среды для разработки больших экономических моделей: компоненты поддержки работы эксперта-экономиста при формировании и отладке (в расчетном режиме) структурного текста модели
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
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средств делались попытки облегчить труд программиста, сделать этот труд более продуктивным, повысив этим быстродействие и удобство создания приложений. Перво