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:听起来很有趣!