📄 lpmain.pas
字号:
enter_num:integer;
begin
if (varnum=0) or (leashnum=0) then
begin
showmessage('文件格式不对,请使用标准的格式');
end
else
begin
sele:=true;
docalculate:=true;
stringgrid1.ColCount :=varnum+1;
stringgrid1.rowcount:=leashnum+1;
if (not tiaojianfree) then
begin
for i:=1 to originvarnum do
begin
tiaojianx[i].visible:=false;
tiaojianvar[i].visible:=false;
tiaojianequal[i].visible:=false;
tiaojianx[i].free;
tiaojianvar[i].free;
tiaojianequal[i].free;
end;
end;
tiaojianfree:=true;
label1.visible:=true;
label1.left:=5;
label1.top:=label4.top+45;
if (objtype='max') or (objtype='Max') then
label1.caption:='Max(f(x))='
else
label1.caption:='Min(f(x))=';
stringgrid4.visible:=true;
stringgrid4.width:=varnum*(colw+1)+1;
stringgrid4.height:=2*(roww+1)+adjust;
stringgrid4.colcount:=varnum;
stringgrid4.left:=label1.left+label1.width+2;
stringgrid4.top:=label1.top-(roww+1);
for i:=1 to varnum do
begin
stringgrid4.cells[i-1,0]:='X'+inttostr(i);
end;
stringgrid1.visible:=true;
stringgrid2.visible:=true;
stringgrid3.visible:=true;
stringgrid1.left:=stringgrid4.left;
stringgrid1.top:=stringgrid4.top+stringgrid4.height+30;
stringgrid2.cells[0,0]:='等式类型';
stringgrid3.cells[0,0]:='右端项';
stringgrid2.rowcount:=leashnum+1;
stringgrid3.rowcount:=leashnum+1;
if bigques then
begin
if varnum>8 then
begin
stringgrid1.width:=(colw+1)*9+10;
stringgrid1.Height :=(roww+1)*(leashnum+1)+20;
stringgrid1.ScrollBars :=sshorizontal;
end
else
stringgrid1.width:=(colw+1)*(varnum+1)+adjust;
if leashnum>8 then
if varnum>8 then
begin
stringgrid1.Height :=(roww+1)*9+20;
stringgrid1.ScrollBars :=ssboth;
end
else
begin
stringgrid1.Height :=(roww+1)*9+adjust;
stringgrid1.ScrollBars :=ssvertical;
end
else
if varnum>8 then
begin
stringgrid1.Height :=(roww+1)*(leashnum+1)+20;
stringgrid1.ScrollBars :=sshorizontal;
end
else
stringgrid1.Height :=(roww+1)*(leashnum+1)+adjust;
end
else
begin
stringgrid1.width:=(colw+1)*(varnum+1)+adjust;
stringgrid1.Height :=(roww+1)*(leashnum+1)+adjust;
end;
stringgrid1.fixedcols:=1;
stringgrid1.FixedRows :=1;
if varnum>8 then
begin
stringgrid4.width:=stringgrid1.Width-colw+1;
stringgrid4.height:=2*(roww+1)+20;
stringgrid4.ScrollBars :=sshorizontal;
end
else
begin
stringgrid4.height:=2*(roww+1)+adjust;
stringgrid4.width:=stringgrid1.Width-colw+1;
stringgrid4.ScrollBars :=ssnone;
end;
stringgrid1.left:=stringgrid4.left;
stringgrid1.top:=stringgrid4.top+stringgrid4.height+30;
stringgrid2.top:=stringgrid1.top;
stringgrid2.left:=stringgrid1.left+stringgrid1.width;
if leashnum<9 then
begin
if varnum>8 then
begin
stringgrid2.height:=stringgrid1.height-14;
end
else
stringgrid2.height:=stringgrid1.height;
stringgrid2.Width :=(colw+1)+adjust;
end
else
if varnum >8 then
begin
stringgrid2.Width :=(colw+1)+20;
stringgrid2.ScrollBars :=ssvertical;
stringgrid2.height:=stringgrid1.height-14;
end
else
begin
stringgrid2.Width :=(colw+1)+20;
stringgrid2.ScrollBars :=ssvertical;
stringgrid2.height:=stringgrid1.height;
end;
stringgrid3.width:=stringgrid2.Width-8;
stringgrid3.ScrollBars :=stringgrid2.ScrollBars ;
stringgrid3.height:=stringgrid2.height;
stringgrid3.top:=stringgrid1.top;
stringgrid3.left:=stringgrid2.left+stringgrid2.width;
for i:=1 to varnum do
stringgrid1.cells[i,0]:='X'+inttostr(i);
for i:=1 to leashnum do
stringgrid1.cells[0,i]:='约束条件'+inttostr(i);
tiaojianpos:=100;
originvarnum:=varnum;
originleashnum:=leashnum;
stringgrid1.ColCount :=varnum+1;
stringgrid1.rowcount:=leashnum+1;
enter_num:=0;
top_num:=stringgrid1.Top+stringgrid1.height+30;
tiaojianfree:=false;
for ij:=1 to varnum do
begin
tiaojianx[ij]:=TLabel.create(main);
with tiaojianx[ij] do
begin
left:=tiaojianpos;
parent:=main;caption:='X';
if left>(stringgrid3.left) then
begin
enter_num:=enter_num+1;
top_num:=stringgrid1.top+stringgrid1.height+30+40*enter_num;
tiaojianpos:=100;
end;
top:=top_num;
left:=tiaojianpos;font.size:=14;
end;
tiaojianvar[ij]:=TLabel.create(main);
with tiaojianvar[ij] do
begin
parent:=main;top:=tiaojianx[ij].top+10;left:=tiaojianx[ij].left+tiaojianx[ij].width;
caption:=inttostr(ij);font.size:=10;font.Style :=[fsbold];
end;
tiaojianequal[ij]:=TLabel.create(main);
with tiaojianequal[ij] do
begin parent:=main;caption:='>=0';top:=tiaojianx[ij].top;left:=tiaojianvar[ij].left+tiaojianvar[ij].width;
font.size:=14;tiaojianequalarr[ij]:=1;onclick:=label2click;
end;
tiaojianpos:=tiaojianpos+110;
end;
for i:=1 to varnum do
stringgrid4.cells[i-1,1]:=floattostr(c^[i].num);
for i:=1 to varnum do
if c^[i].att=' >=' then
begin
tiaojianequal[i].caption:='>=0';
tiaojianequalarr[i]:=1;
end
else if (c^[i].att=' <=') or (c^[i].att='<= ') then
begin
tiaojianequal[i].caption:='<=0';
tiaojianequalarr[i]:=2;
end
else if c^[i].att='<=>' then
begin
tiaojianequal[i].caption:='正负不限';
tiaojianequalarr[i]:=3;
end;
for i:=1 to varnum do
begin
bptiaojianarr[i]:=tiaojianequalarr[i];
end;
for i:=1 to varnum do
for j:=1 to leashnum do {这儿要注意I,J的顺序}
begin
stringgrid1.Cells[i,j]:=floattostr(a^[j,i]);
bp_old_a[i,j]:=a^[j,i];
end;
for i:=1 to leashnum do
begin
stringgrid3.cells[0,i]:=floattostr(b^[i]);
bp_old_b[i]:=b^[i];
end;
for i:=1 to leashnum do
stringgrid2.cells[0,i]:=tiaojian^[i];
end;{varnum and leashnum have no problem}
speedbutton4.enabled:=true;
speedbutton5.enabled:=true;
speedbutton6.enabled:=true;
speedbutton10.enabled:=true;
speedbutton11.enabled:=true;
speedbutton12.enabled:=true;
end;
procedure Tmain.N3Click(Sender: TObject);{读取文件}
begin
havedata:=true;
if readfromfiledlg.execute then
begin
datafromfile:=true;
datachange:=false;
nameoffile:=readfromfiledlg.filename;
readfromfile;
showfiledata;
// image1.visible:=false;
label3.visible:=true;
label4.visible:=true;
label4.caption:=nameoffile;
filedata:=true;
end
else
begin
havedata:=false;
end;
end;
procedure Tmain.StringGrid2SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
begin
whichcellx:=acol;
whichcelly:=arow;
tiaojianform.top:=stringgrid2.top+starty+50;
tiaojianform.left:=stringgrid2.left+startx+6;
datachange1:=true;
datachange:=datachange1 or datachange2;
if datachange then
n20.enabled:=true
else
n20.enabled:=false;
n21.enabled:=n20.enabled;
speedbutton3.enabled:=n20.enabled;
{calculate.hide;}
tiaojianform.showmodal;
end;
procedure Tmain.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
datachange2:=true;
datachange:=datachange1 or datachange2;
if datachange then
n20.enabled:=true
else
n20.enabled:=false;
n21.enabled:=n20.enabled;
speedbutton3.enabled:=n20.enabled;
end;
procedure Tmain.N18Click(Sender: TObject); {输入框宽度菜单}
begin
changescreenform.showmodal
end;
procedure Tmain.StringGrid4MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
startx:=x;
starty:=y;
end;
procedure Tmain.StringGrid3MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
startx:=x;
starty:=y;
end;
procedure Tmain.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
startx:=x;
starty:=y;
end;
procedure Tmain.StringGrid2MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
startx:=x;
starty:=y;
end;
procedure Tmain.N19Click(Sender: TObject);{关闭文件菜单}
begin
if not (nameoffile='') then
begin
havedata:=false;
//image1.visible:=true;
label4.visible:=false;
label1.visible:=false;
label3.visible:=false;
stringgrid1.visible:=false;
stringgrid2.visible:=false;
stringgrid3.visible:=false;
stringgrid4.visible:=false;
if tiaojianfree=false then
begin
for i:=1 to varnum do
begin
tiaojianx[i].visible:=false;
tiaojianvar[i].visible:=false;
tiaojianequal[i].visible:=false;
tiaojianx[i].free;
tiaojianvar[i].free;
tiaojianequal[i].free;
end;
end;
nameoffile:='';
tiaojianfree:=true;
end
else
n19.enabled:=false;
end;
procedure Tmain.L1Click(Sender: TObject);
begin
{if not havedata then{表示如果当前没有数据则将相应的菜单不可用
begin
o1.enabled:=false;
t1.enabled:=false;
n7.enabled:=false;
c1.enabled:=false;
end
else}
datachange:=datachange1 or datachange2;
if not filedata then
datachange:=true;
if datachange then
n20.enabled:=true
else
n20.enabled:=false;
n21.enabled:=n20.enabled;
speedbutton3.enabled:=n20.enabled;
if datachange then
begin
{ showmessage('ddd');
datachange1:=false;
datachange2:=false;
}
notsave:=true;
end;
readfromframe;
end;
procedure Tmain.FormClick(Sender: TObject);
begin
calculate.hide;
tiaojianform.hide;
end;
procedure Tmain.N20Click(Sender: TObject); {保存文件菜单}
begin
if (nameoffile='') then
button1.click
else
begin
readfromframe;
writeorigin;
end;
datachange1:=false;
datachange2:=false;
end;
procedure Tmain.N21Click(Sender: TObject); {另存文件菜单}
begin
button1.click;
end;
procedure Tmain.FormShow(Sender: TObject);
begin
which_in_form:=0;
main.Refresh;
end;
procedure Tmain.N12Click(Sender: TObject);
begin
showmessage('该功能正在建设中');
end;
procedure Tmain.N13Click(Sender: TObject);
begin
showmessage('该功能正在建设中');
end;
procedure Tmain.N15Click(Sender: TObject);
begin
studymode:=false;
duiouform.show;
end;
procedure Tmain.N24Click(Sender: TObject);
begin
studymode:=true;
duiouform.show;
end;
procedure Tmain.SpeedButton1Click(Sender: TObject);
begin
N2Click(Sender);
end;
procedure Tmain.SpeedButton2Click(Sender: TObject);
begin
N3Click(Sender);
end;
procedure Tmain.SpeedButton3Click(Sender: TObject);
begin
N20Click(Sender);
speedbutton3.enabled:=false;
end;
procedure Tmain.SpeedButton7Click(Sender: TObject);
begin
speedbutton4.enabled:=false;
speedbutton5.enabled:=false;
speedbutton6.enabled:=false;
speedbutton10.enabled:=false;
speedbutton11.enabled:=false;
speedbutton12.enabled:=false;
N19Click(Sender);
end;
procedure Tmain.SpeedButton4Click(Sender: TObject);
begin
N8Click(Sender);
end;
procedure Tmain.SpeedButton5Click(Sender: TObject);
begin
N10Click(Sender);
end;
procedure Tmain.SpeedButton6Click(Sender: TObject);
begin
N15Click(Sender);
end;
procedure Tmain.SpeedButton10Click(Sender: TObject);
begin
N9Click(Sender);
end;
procedure Tmain.SpeedButton11Click(Sender: TObject);
begin
N11Click(Sender);
end;
procedure Tmain.SpeedButton12Click(Sender: TObject);
begin
N24Click(Sender);
end;
procedure Tmain.SpeedButton9Click(Sender: TObject);
begin
N17Click(Sender);
end;
procedure Tmain.SpeedButton8Click(Sender: TObject);
begin
close;
end;
procedure Tmain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
speedbutton4.enabled:=false;
speedbutton5.enabled:=false;
speedbutton6.enabled:=false;
speedbutton10.enabled:=false;
speedbutton11.enabled:=false;
speedbutton12.enabled:=false;
end;
procedure Tmain.N1Click(Sender: TObject);
begin
datachange:=datachange1 or datachange2;
if datachange then
n20.enabled:=true
else
n20.enabled:=false;
n21.enabled:=n20.enabled;
speedbutton3.enabled:=n20.enabled;
if nameoffile<>'' then
n19.enabled:=true
else
n19.enabled:=false;
end;
procedure Tmain.N14Click(Sender: TObject);
begin
xinxiform.show;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -