Delphi 声明组件[x]类型

Delphi 声明组件[x]类型,delphi,delphi-xe2,Delphi,Delphi Xe2,我在表单上有组件,正在查找TMachine类型的任何组件 然后,一旦我找到一个,我想从组件中获取一些信息。我的问题是:我将m声明为TMachine,然后尝试分配m:=Components[I],但由于m是TMachine类型,而Components是Component类型,所以我不会这样做。有没有关于如何修复此问题的帮助,以便我可以将找到的组件用作TMachine procedure TfDeptLayout.bSaveClick(Sender: TObject); var i: Integ

我在表单上有组件,正在查找
TMachine
类型的任何组件 然后,一旦我找到一个,我想从组件中获取一些信息。我的问题是:我将
m
声明为
TMachine
,然后尝试分配
m:=Components[I]
,但由于
m
是TMachine类型,而Components是Component类型,所以我不会这样做。有没有关于如何修复此问题的帮助,以便我可以将找到的组件用作TMachine

procedure TfDeptLayout.bSaveClick(Sender: TObject);
var
  i: Integer;
  m : TMachine;
  Number,Zone,Dept,Name,Asset,IsPanel,BasicName,FinalLocation,Left,Top : String;
begin
bSave.Visible := false;
for i := ComponentCount -1 downto 0 do
  begin
    if(Components[I] is TMachine) then
      begin
        M := Components[I];
        Number := m.mnNumber;
        Name := m.mnName;
        Asset := m.mnAsset;
        IsPanel := m.mnIsPanel;
        BasicName := m.mnBasicName;
        if checkbox1.Checked then
          FinalLocation := 'shop'
        else
          FinalLocation := 'w';
        Left := inttostr(m.Left);
        top := inttostr(m.Top);
        Zone := myZone;
        Dept := myDept;
        Showmessage('Zone: '+Zone+' Dept: '+Dept
            +'Name : '+Name+' Number: '+Number+' Asset: '+Asset
            +'IsPanel: '+Ispanel+' BasicName: '+BasicName+
            ' FinalLocation : '+FinalLocation+' Left: '+Left+
            +' Top: '+Top);
      end;
  end;

您需要使用类型转换来解决类型不匹配问题:

if(Components[I] is TMachine) then
  begin
    M := TMachine(Components[I]);

您需要使用类型转换来解决类型不匹配问题:

if(Components[I] is TMachine) then
  begin
    M := TMachine(Components[I]);

在表单方法中,我不会使用局部变量名,如
Name
Left
Top
@Wouter:这不是问题:在需要访问表单属性的地方,可以将
与Self do
一起使用@UliGerhardt:您可以将表单本身命名为“self”,添加一个名为“self”的按钮,创建一个名为self的单元,其中包含一些全局变量,如
name
left
,并将其添加到uses子句中。俄式轮盘赌和编译器:)@Wouter:听起来很有趣!在表单方法中,我不会使用局部变量名,如
Name
Left
Top
@Wouter:这不是问题:在需要访问表单属性的地方,可以将
与Self do
一起使用@UliGerhardt:您可以将表单本身命名为“self”,添加一个名为“self”的按钮,创建一个名为self的单元,其中包含一些全局变量,如
name
left
,并将其添加到uses子句中。俄式轮盘赌和编译器:)@Wouter:听起来很有趣!