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

📄 unit3.~pas

📁 用 Delphi 做的操作系统试验
💻 ~PAS
字号:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, Menus, Mask;

type
  TForm3 = class(TForm)
    Button1: TButton;
    ProgressBar1: TProgressBar;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Label1: TLabel;
    GroupBox1: TGroupBox;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Button2: TButton;
    Button3: TButton;
    Label4: TLabel;
    Label5: TLabel;
    Memo1: TMemo;
    Memo2: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure N2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

uses Unit2;
VAR i,m:integer;
B,D:Array[0..20]     of   string;

{$R *.dfm}

//交换函数
procedure Swap1(var a:string;var b: string);
var c:string;
begin
      c:=a;
      a:=b;
      b:=c;
end;


procedure TForm3.Button2Click(Sender: TObject);
var j,a,k,s,y:integer;

begin
  if  form3.RadioButton1.Checked then
  begin
        i:=i+1;
        if i>20 then
           begin
                showmessage('进程已满,请执行');
           end;

        if i<=20 then
           begin
              for j:=0 to m do
                 begin
                      if memo1.Lines.Strings[j]=edit1.Text +'  *********** '   +edit2.Text then
                         begin
                         a:=1;
                         break;
                         end;
                  end;
             if a=1 then begin
                    showmessage('进程已经存在');
                    edit1.SetFocus;
                         end
             else
                    begin
                            m:=m+1;
                            memo1.Lines.Add(edit1.Text +'  *********** '   +edit2.Text);

                            edit1.SetFocus;

                    end;


           end;

  end;



  if  form3.RadioButton2.Checked then
  begin
        i:=i+1;
        if i>20 then
           begin
                showmessage('进程已满,请执行');
           end;

        if i<=20 then
           begin
              for j:=0 to m do
                 begin
                      if memo1.Lines.Strings[j]=edit1.Text +'  *********** '   +edit2.Text   then
                         begin
                         a:=1;
                         break;
                         end;
                  end;

             if a=1 then
                 begin
                    showmessage('进程已经存在');
                    edit1.SetFocus;
                 end
             else
             begin
                   //给memo1赋值
                   memo1.Lines.Add(edit1.Text +'  *********** '   +edit2.Text);
                   m:=m+1;
                   edit2.Tag:=1;
                   edit1.SetFocus;
                   //把memo1的值赋给数组
                   for k:=0 to form3.ComponentCount-1  do
                   begin

                         if   form3.Components[k]   is   TEdit   then
                         begin

                              if   Tedit(form3.Components[k]).Tag   =1   then
                              begin
                                    B[j]:=Tedit(form3.Components[k]).Text;
                                    D[j]:=memo1.Lines[m];
                                    //inc(j);
                              end;
                         end;
                   end;

                   //给数组排序
                   for s := High(B) downto Low(B) do
                   for y := Low(B) to High(B) - 1 do
                   begin

                        if  B[y]<B[y+1] then
                        begin
                            Swap1(B[y],B[y+1]);
                            Swap1(D[y],D[y+1]);

                        end;

                   end;

                   j:=j+1;
             end;
    end;

  end;

end;
procedure TForm3.Button1Click(Sender: TObject);
 var   n:integer;
  begin
    if  form3.RadioButton1.Checked
    then begin
         for n:=1 to m do
           begin
             ProgressBar1.Min:=0;     ProgressBar1.Max:=200;
             for   m:=1   to   200   do
              begin
              ProgressBar1.Position:=m;
              Application.ProcessMessages;
              sleep(10);
              end;
              memo2.Lines.Add(memo1.Lines[n]);
            end;

         end;
    if  form3.RadioButton2.Checked
    then begin
         for n:=1 to m do
           begin
             ProgressBar1.Min:=0;     ProgressBar1.Max:=200;
             for   m:=1   to   200   do
              begin
              ProgressBar1.Position:=m;
              Application.ProcessMessages;
              sleep(10);
              end;
              memo2.Lines.Add(D[n-1]);
            end;

         end;
  end;


procedure TForm3.N1Click(Sender: TObject);
begin
close;
end;



procedure TForm3.RadioButton1Click(Sender: TObject);
begin

edit2.Text:='1';
edit2.Enabled:=false;
//edit1.SetFocus;
end;

procedure TForm3.Button3Click(Sender: TObject);
begin
edit1.Clear;
memo1.Clear;
memo2.Clear;
form3.memo1.Lines.Strings[0]:='进程名'+'******'+'优先级';//+'******'+'执行时间';
form3.memo2.Lines.Strings[0]:='进程名'+'******'+'优先级';//+'******'+'执行时间';
m:=0;
if form3.RadioButton2.Checked then
    edit2.Clear;
end;

procedure TForm3.RadioButton2Click(Sender: TObject);
begin
 edit2.Clear;
  edit2.Enabled:=true;
end;

procedure TForm3.Edit2Change(Sender: TObject);
begin
SetWindowLong(Edit2.Handle,   GWL_STYLE, GetWindowLong(Edit2.Handle,     GWL_STYLE)   or   ES_NUMBER);
 //只能输入数字
end;

procedure TForm3.N2Click(Sender: TObject);
begin
 showmessage('选择高优先权时,优先级只能输入数字');
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -