2010-03-18 175 views
1

共有6個表格,1基地和5 inherited.The基地擁有下面的代碼片段:德爾福7繼承

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

因爲這個片段是它也由5人繼承的基礎。問題是:在執行OpenDialog時,Base被覆蓋而不是繼承的形式。 HELP

回答

10

我不太確定你的意思什麼基地覆蓋但你在你的代碼Form1使用也許應該改爲Self

Form1全局引用一個實例(可能)是您的基本形式。您可以創建一個zillion TMechan表單實例,其中每個Open1Click將更改該一個表單的屬性。

我假設表單是自動創建的。雖然這很容易實現,但我強烈建議您不要自動創建每個表單並儘可能刪除所有對錶單的全局引用(如此表單1)。

應該得到自動處理的唯一形式是您的主要形式。必要時應該創建的所有其他形式,像myform := TMechan.Create(AOwner);

procedure TMechan.Open1Click(Sender: TObject); 
begin 
    if OpenDialog1.Execute then 
    Self.Memo1.Lines.LoadFromFile(OpenDialog1.FileName); 
    CopyCylMemoToRecord; 
    ShowMechanicalValues; 
end; 
+0

JFTR:在點前的時間「自我」 99.999%是多餘的,即'Self.Something(SomeParameters);'是一樣的'東西(SomeParameters);'。 – 2010-03-18 15:03:04

+0

@Ulrich Gerhardt - 不錯,但是花了一些時間編程c#並使用像FxCop這樣的工具鼓勵使用'this'後,我發現自己更多地寫'Self'來提高可讀性。這種偏離*非常*主觀。 – 2010-03-18 15:26:44