声明Component [x]类型

时间:2013-03-04 07:07:27

标签: delphi delphi-xe2

我在表单上有组件并查找TMachine类型的任何组件 一旦我找到一个,我想从组件中获取一些信息。我的问题是:我将m声明为TMachine然后尝试分配m := Components[i]但是由于m是TMachine类型而组件是组件类型,因此不会让我。有关如何解决此问题的任何帮助,以便我可以将找到的组件用作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;

1 个答案:

答案 0 :(得分:4)

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

if(Components[I] is TMachine) then
  begin
    M := TMachine(Components[I]);
相关问题