2017-08-15 52 views
-5

我有一個表格類TfrmWelcome,我希望能夠在表單的主要部分(frmWelcome.MainPanelSourceEditor)中單擊按鈕時動態地爲其添加備忘錄 。如何在使用delphi的類中製作動態備忘錄

我在某些代碼的嘗試失敗如下。我收到錯誤 「未聲明的標識符WelcomeMemo」。我怎麼能得到這個編譯和工作?

type 
    WelcomeMemo : TMemo; 
    end; 

implementation 

procedure SetHelpWelcome; 
begin 
    WelcomeMemo : TMemo.Create(frmWelcome); 
    with TMemo(FindComponent('WelcomeMemo')) do 
    begin 
    Parent := frmWelcome.MainPanelSourceEditor; 
+3

_「我真的不知道這行代碼是幹什麼的,我只是把它放在那裏看它是否會起作用」,嗯,那可能是問題所在。 – Victoria

+5

這段代碼完全是廢話。任何事情都沒有任何意義。扔掉它並從一些教程開始。 –

+0

你的代碼*應該做什麼? FWIW,你向我們展示的代碼中很小的一點甚至都不是有效的語法。如果您編寫代碼,甚至不知道自己寫了什麼,那麼您需要停下腳步,在繼續之前學習如何使用Delphi編寫代碼。 –

回答

7

如果你正在嘗試做的是一個備忘錄在運行時添加到您的frmWelcome,一個更好的(但仍然不是很好)的方式來做到這一點會是這樣:

procedure SetHelpWelcome; 
var 
    WelcomeMemo : TMemo; 
begin 
    WelcomeMemo := TMemo.Create(frmWelcome); 
    WelcomeMemo.Parent := frmWelcome.MainPanelSourceEditor; 
    // set any other properties of WelcomeMemo here. 
end; 

這樣可以避免with(如果您是初學者,您絕對不應該使用它),並且完全可以避免的FindComponent可以通過指派WelcomeMemo局部變量捕獲它,從而找到您不需要首先查找的內容。

但是,這仍然是一個相當簡單的做你想做的事。將WelcomeMemo作爲表單的成員,並定義表單的一個方法來創建和初始化它,會更好。然後你可以調用你想用來創建它的按鈕的OnClick處理程序。喜歡的東西(未經測試)

TfrmWelcome = Class(TForm) 
private 
    fWelcomeMemo : TMemo; 
    procedure SetUpWelcomeMemo; 
[...] 
end; 

procedure TfrmWelcome.SetUpWelcomeMemo; 
begin 
    if fWelcomeMemo <> Nil then exit; // to avoid creating it more than once 
    fWelcomeMemo := TMemo.Create(Self); 
    fWelcomeMemo.Parent := Self.MainPanelSourceEditor; 
    // set any other properties of WelcomeMemo here. 
end; 

二話不說,這避免了備忘錄的老闆被設定爲特定TfrmWelcome實例frmWelcome,這是一個等待發生,因爲它可能不是你實際上是想實例事故與...合作。

但是就像@J ..說的,如果你用自己喜歡的方式使用試錯法,你真的需要看一下初學者的教程。

+0

非常感謝你們。 @JerryDodge我會感謝你 – MissMassey

+1

@MissMassey嗯,不客氣? –

+0

@MissMassey:順便說一句,如果這個答案對你有幫助,請點擊左上角的勾號來接受它。 – MartynA