📄 duiou.pas
字号:
unit duiou;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids;
type
Tduiouform = class(TForm)
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
StringGrid4: TStringGrid;
StaticText1: TStaticText;
StaticText2: TStaticText;
StringGrid5: TStringGrid;
StringGrid6: TStringGrid;
StringGrid7: TStringGrid;
StringGrid8: TStringGrid;
Label1: TLabel;
Button1: TButton;
Label2: TLabel;
Button2: TButton;
procedure duiouchange;
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormHide(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure StringGrid6SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
private
{ Private declarations }
public
save_array_grid5:array[1..100,1..50]of string;
save_array_grid6,save_array_grid7:array[1..50]of string;
save_array_grid8:array[1..100]of string;
{ Public declarations }
end;
var
duiouform: Tduiouform;
implementation
uses lpmain, ftiaojian;
{$R *.DFM}
procedure Tduiouform.FormShow(Sender: TObject);
var i,j,ij:integer;
enter_num,top_num:integer;
l1,l2,l3:Tlabel;
begin
label1.Caption :=main.label1.Caption ;
label1.Left :=statictext1.Left;
label1.top:=statictext1.Top +statictext1.Height +40;
stringgrid1.RowCount :=main.stringgrid1.RowCount ;
stringgrid2.RowCount :=main.stringgrid2.RowCount ;
stringgrid3.RowCount :=main.stringgrid3.RowCount ;
stringgrid4.RowCount :=main.stringgrid4.RowCount ;
stringgrid5.RowCount :=stringgrid4.colCount ;
stringgrid6.RowCount :=stringgrid4.colCount ;
stringgrid7.RowCount :=stringgrid4.colCount ;
stringgrid8.RowCount :=stringgrid4.rowCount ;
stringgrid1.colCount :=main.stringgrid1.colCount ;
stringgrid2.colCount :=main.stringgrid2.colCount ;
stringgrid3.colCount :=main.stringgrid3.colCount ;
stringgrid4.colCount :=main.stringgrid4.colCount ;
stringgrid5.colCount :=stringgrid1.rowCount ;
stringgrid6.colCount :=stringgrid2.colCount ;
stringgrid7.colCount :=stringgrid3.colCount ;
stringgrid8.colCount :=stringgrid1.rowCount-1 ;
stringgrid5.RowCount :=stringgrid4.colCount+1 ;
stringgrid6.RowCount :=stringgrid4.colCount+1 ;
stringgrid7.RowCount :=stringgrid4.colCount+1 ;
stringgrid8.RowCount :=stringgrid4.rowCount ;
stringgrid5.FixedCols :=1;
stringgrid5.FixedRows :=1;
stringgrid6.FixedRows :=1;
stringgrid7.FixedRows :=1;
stringgrid4.Left:=label1.Left +label1.Width+2;
stringgrid4.Top:=label1.top-25;
{确定stringgrid的大小}
stringgrid1.Width :=main.stringgrid1.width;//(stringgrid1.ColWidths[0]+1)*stringgrid1.ColCount ;
stringgrid1.Height :=main.stringgrid1.height;//(stringgrid1.RowHeights [0]+1)*stringgrid1.RowCount ;
stringgrid2.Width :=main.stringgrid2.width;//(stringgrid2.ColWidths[0]+1)*stringgrid2.ColCount ;
stringgrid2.Height :=main.stringgrid2.height;//(stringgrid2.rowHeights[0]+1)*stringgrid2.RowCount ;
stringgrid3.Width :=main.stringgrid3.width;//(stringgrid3.ColWidths[0]+1)*stringgrid3.ColCount ;;
stringgrid3.Height :=main.stringgrid3.height;//(stringgrid3.rowHeights[0]+1)*stringgrid3.RowCount ;
stringgrid4.Width :=main.stringgrid4.width;//(stringgrid4.ColWidths[0]+1)*stringgrid4.ColCount ;
stringgrid4.Height :=main.stringgrid4.height;//(stringgrid4.rowHeights[0]+1)*stringgrid4.RowCount ;
stringgrid1.ScrollBars :=main.StringGrid1.ScrollBars ;
stringgrid2.ScrollBars :=main.StringGrid2.ScrollBars ;
stringgrid3.ScrollBars :=main.StringGrid3.ScrollBars ;
stringgrid4.ScrollBars :=main.StringGrid4.ScrollBars ;
stringgrid1.left:=stringgrid4.Left;
stringgrid2.left:=stringgrid1.Left+stringgrid1.width;
stringgrid3.left:=stringgrid2.Left+stringgrid2.width;
stringgrid1.top:=stringgrid4.Top+stringgrid4.Height ;
stringgrid2.top:=stringgrid4.Top+stringgrid4.Height ;
stringgrid3.top:=stringgrid4.Top+stringgrid4.height ;
{ if (stringgrid4.left+stringgrid4.Width >800)or (stringgrid3.left+stringgrid3.Width >800)or(stringgrid7.left+stringgrid7.Width >800)or (stringgrid8.left+stringgrid8.Width >800)
then
begin
duiouform.AutoSize :=false;
duiouform.AutoScroll :=true;
end;
} for j:=0 to stringgrid1.rowcount do
for i:=0 to stringgrid1.ColCount do
begin
stringgrid1.Cells[i,j]:=main.stringgrid1.Cells [i,j];
end;
for i:=0 to stringgrid2.rowcount do
begin
stringgrid2.Cells[0,i]:=main.stringgrid2.Cells [0,i];
end;
for i:=0 to stringgrid3.rowcount do
begin
stringgrid3.Cells[0,i]:=main.stringgrid3.Cells [0,i];
end;
for j:=0 to stringgrid4.rowcount do
for i:=0 to stringgrid4.ColCount do
begin
stringgrid4.Cells[i,j]:=main.stringgrid4.Cells [i,j];
end;
{********************************生成label标识***************************}
tiaojian1free:=false;
tiaojian1pos:=50;
enter_num:=0;
top_num:=stringgrid1.top+stringgrid1.Height+20;
for ij:=1 to varnum do{根据变量数的情况,动态生成条件标签}
begin
tiaojian1x[ij]:=TLabel.create(duiouform);
with tiaojian1x[ij] do
begin
left:=tiaojian1pos;
parent:=duiouform;caption:='X';
if tiaojian1x[ij].left>stringgrid2.Left then
begin
enter_num:=enter_num+1;
top_num:=stringgrid1.Top+stringgrid1.height+20+enter_num*40;
tiaojian1pos:=50;
end;
left:=tiaojian1pos;font.size:=12;font.Style:=[fsbold];
top:=top_num;
end;
tiaojian1var[ij]:=TLabel.create(duiouform);
with tiaojian1var[ij] do
begin
parent:=duiouform;top:=tiaojian1x[ij].top+15;left:=tiaojian1x[ij].left+tiaojian1x[ij].width;
caption:=inttostr(ij);font.size:=8; font.Style :=[fsbold];
end;
tiaojian1equal[ij]:=TLabel.create(duiouform);
with tiaojian1equal[ij] do
begin
parent:=duiouform;caption:='>=0';top:=tiaojian1x[ij].top;left:=tiaojian1var[ij].left+tiaojian1var[ij].width;
font.size:=12;font.Style :=[fsbold];
if left>750 then
begin
duiouform.AutoSize :=false;
duiouform.AutoScroll :=true;
end;
end;
tiaojian1pos:=tiaojian1pos+110 ;
case bptiaojianarr[ij] of
1:tiaojian1equal[ij].caption:='>=0';
2:tiaojian1equal[ij].caption:='<=0';
3:tiaojian1equal[ij].caption:='正负不限';
end;{of case}
statictext2.top:=tiaojian1x[ij].top +40;
end;
{确定第二张表}
statictext2.left:=statictext1.Left ;
button1.Top :=statictext2.top;
button2.top:=statictext2.top;
button1.Left :=stringgrid4.left+200;
button2.left:=button1.left-button2.Width ;
if label1.Caption ='Max(f(x))=' then
label2.caption :='Min(f(x))=';
if label1.Caption ='Min(f(x))=' then
label2.caption :='Max(f(x))=';
statictext2.Left:=statictext1.Left;
label2.Left :=statictext2.Left+20;
label2.top:=statictext2.Top +statictext2.Height +40;
stringgrid8.Left:=label2.Left +label2.Width +2;
stringgrid8.Top:=label2.top-25;
{确定stringgrid的大小}
stringgrid5.Height :=(stringgrid5.RowHeights [0]+1)*stringgrid5.rowCount+3 ;
if stringgrid5.ColCount >9 then
if stringgrid5.RowCount >9 then
begin
stringgrid5.Width :=(stringgrid5.ColWidths[0]+1)*9+20;
stringgrid5.Height :=(stringgrid5.rowheights[0]+1)*9 +20;
stringgrid5.ScrollBars :=ssboth;
end
else
begin
stringgrid5.Width :=(stringgrid5.ColWidths[0]+1)*9+3;
stringgrid5.Height :=stringgrid5.Height +17;
stringgrid5.ScrollBars :=sshorizontal;
end
else
begin
stringgrid5.Width :=(stringgrid5.ColWidths[0]+1)*stringgrid5.colCount+3 ;
stringgrid5.ScrollBars :=ssnone;
end;
stringgrid6.Width :=(stringgrid6.ColWidths[0]+1)*stringgrid6.colCount+3 ;
if stringgrid6.RowCount >9 then
begin
stringgrid6.width:=stringgrid6.Width +17;
stringgrid6.Height :=(stringgrid6.Rowheights[0]+1)*9;
stringgrid6.ScrollBars :=ssvertical;
end
else
begin
stringgrid6.Height :=(stringgrid6.rowHeights[0]+1)*stringgrid6.rowCount+3 ;
stringgrid6.ScrollBars :=ssnone;
end;
stringgrid7.Width :=stringgrid6.width;//(stringgrid7.ColWidths[0]+1)*stringgrid7.ColCount+3 ;
stringgrid7.Height :=stringgrid6.Height;// (stringgrid7.rowHeights[0]+1)*stringgrid7.RowCount+3 ;
stringgrid7.ScrollBars :=stringgrid6.ScrollBars ;
stringgrid8.Height :=(stringgrid8.rowHeights[0]+1)*stringgrid8.RowCount+3 ;
if stringgrid8.ColCount >8 then
begin
stringgrid8.Width :=(stringgrid8.ColWidths [0]+1)*8;
stringgrid8.Height :=stringgrid8.height+17;
stringgrid8.ScrollBars :=sshorizontal;
end
else
begin
stringgrid8.Width :=(stringgrid8.ColWidths[0]+1)*stringgrid8.ColCount+3 ;
stringgrid8.ScrollBars :=ssnone;
end;
stringgrid5.left:=stringgrid8.Left;
stringgrid6.left:=stringgrid5.Left+stringgrid5.width;
stringgrid7.left:=stringgrid6.Left+stringgrid6.width;
stringgrid5.top:=stringgrid8.Top+stringgrid8.Height ;
stringgrid6.top:=stringgrid5.top;
stringgrid7.top:=stringgrid5.top;
{第二张表生成标签}
tiaojian2free:=false;
tiaojian2pos:=50;
enter_num:=0;
top_num:=stringgrid5.Top+stringgrid5.height+20;
stringgrid6.Cells[0,0]:='等式类型';
stringgrid7.Cells[0,0]:='右端项';
for i:=1 to stringgrid1.ColCount do
stringgrid5.Cells[0,i]:='约束条件'+inttostr(i);
for i:=1 to stringgrid1.RowCount do
begin
stringgrid5.Cells[i,0]:='X'+inttostr(i);
stringgrid8.Cells[i-1,0]:='X'+inttostr(i);
end;
for ij:=1 to leashnum do{根据变量数的情况,动态生成条件标签}
begin
tiaojian2x[ij]:=TLabel.create(duiouform);
with tiaojian2x[ij] do
begin
parent:=duiouform;caption:='X';
left:=tiaojian2pos;
if left>stringgrid6.left then
begin
enter_num:=enter_num+1;
top_num:=stringgrid5.Top+stringgrid5.height+20+40*enter_num;
tiaojian2pos:=50;
end;
top:=top_num;
left:=tiaojian2pos;font.size:=12;font.Style :=[fsbold];
end;
tiaojian2var[ij]:=TLabel.create(duiouform);
with tiaojian2var[ij] do
begin
parent:=duiouform;top:=tiaojian2x[ij].top+10;left:=tiaojian2x[ij].left+tiaojian2x[ij].width;
caption:=inttostr(ij);font.size:=8;font.Style :=[fsbold];
end;
tiaojian2equal[ij]:=TLabel.create(duiouform);
with tiaojian2equal[ij] do
begin
parent:=duiouform;caption:='>=0';top:=tiaojian2x[ij].top;left:=tiaojian2var[ij].left+tiaojian2var[ij].width;
font.size:=12;font.Style :=[fsbold];
tiaojian2equalarr[ij]:=1; onclick:=main.label2click;
if left>750 then
begin
duiouform.AutoSize :=false;
duiouform.AutoScroll :=true;
end;
end;
tiaojian2pos:=tiaojian2pos+110;
end;
if studymode=true then
begin
stringgrid5.Enabled :=true;
stringgrid6.Enabled :=true;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -