2

フォームにコンポーネントがあり、TMachineタイプのコンポーネントを探しています。コンポーネントを見つけたら、コンポーネントから情報を取得したいと思います。私の質問は次のとおりです。私は次のように宣言m します。TMachine 次に割り当てを試みますが、TMachineタイプであり、ComponentsがComponentタイプであるm := Components[i] ため、許可されません。m見つかったコンポーネントを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;
4

1 に答える 1

4

型キャストを使用して、型の不一致を解決する必要があります。

if(Components[I] is TMachine) then
  begin
    M := TMachine(Components[I]);
于 2013-03-04T07:12:47.400 に答える