Delphi 7继承

1 delphi inheritance delphi-7

有6个表单,1个Base和5个继承.Base有以下片段:

procedure TMechan.Open1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
    Form1.Memo1.Lines.LoadFromFile(OpenDialog1.FileName );
  CopyCylMemoToRecord;
  ShowMechanicalValues;
end;
Run Code Online (Sandbox Code Playgroud)

由于此片段位于Base中,因此其他5个片段也继承了它.问题是:执行OpenDialog时会覆盖Base而不是继承的表单.救命

Lie*_*ers 10

我不完全确定您对Base的意思是否被覆盖,但您Form1在代码中的使用可能应该更改为Self.

Form1是(可能)您的Base表单的一个实例全局引用.您可以创建一个数量众多的TMechan表单实例,其中每个实例都Open1Click将更改该One Form的属性.

我假设表格是自动处理的.虽然这很容易实现,但我强烈建议您不要自动创建每个表单并尽可能删除表单的所有全局引用(如此form1).

应该自动处理的唯一形式是您的主要形式.应该在需要时创建所有其他表单,例如myform := TMechan.Create(AOwner);

procedure TMechan.Open1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
    Self.Memo1.Lines.LoadFromFile(OpenDialog1.FileName );
  CopyCylMemoToRecord;
  ShowMechanicalValues;
end;
Run Code Online (Sandbox Code Playgroud)