在delphi中,有什么方法可以在一行中执行以前编写的代码?

时间:2018-09-23 13:25:18

标签: delphi

我是一名高中生,将编程作为我的主题之一,所以我对Delphi还是很陌生。

我正在编写一个游戏,当发生多个不同的事件时,需要运行相同(很长)的代码块。我想知道是否有一种方法可以在开始时编写它,并在程序的这些不同部分中调用它,还是让多个发件人运行同一事件?该代码将42种不同对象的画笔颜色设置为不同的颜色,具体取决于用户选择的内容(游戏是“风险”),当我尝试使用某个过程时,每个对象都会出错,并告诉我未声明。

type
  TForm1 = class(TForm)
    shpTerr1: TShape;

  private
{ Private declarations }
  public
    procedure CheckOwner;

  end;

var
  Form1: TForm1;
  iArmies, iTemp, i : integer;
  iSelected, iSelectedOld : integer;
  arrTerrArmies, arrTerrOwners : array[0..41] of integer;
  arrPlayerColour : array[0..3] of string;
  arrPlayers : array of string;
  AttackMode : boolean;

implementation

{$R *.dfm}

procedure CheckOwner;
begin
  shpTerr1.Brush.Color := StringToColor('cl' + arrPlayerColour[arrTerrOwners[0]]);
end;

该错误与TShape有关。 有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

快速解答:

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    shpTerr1: TShape;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure CheckOwner;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CheckOwner;
begin
  shpTerr1.Brush.Color:= Color; // I don't know what is arrPlayerColour[arrTerrOwners[0]]
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  CheckOwner;
end;

end.