⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 duiou.pas

📁 线性规划CAI应用程序及原代码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -