2012-03-24 43 views
3

我TMemo後代具有構造TMemo後裔由空行

constructor TMyMemo.Create(AOwner: TComponent); 
begin 
    inherited Create(AOwner); 
    Lines.Clear; 
end; 

當我把TMyMemo我得到錯誤的形式「控制‘’沒有父窗口。」爲什麼?

+2

你爲什麼要發佈在首位行,如果你忽視它的設置。改爲從TCustomMemo派生。 – 2012-03-24 08:36:10

+2

@大衛 - 我希望在表單上放置「空白」備忘錄。通常/總是我把TMemo放在我清晰的線條上。我很懶惰:) – Branko 2012-03-24 08:50:18

+4

你現在已經有了很好的答案,但這個問題也是你解釋你的根本問題的一個很好的例子。 – 2012-03-24 09:25:55

回答

17

新創建的備忘錄中沒有任何內容。但是隻要組件獲得名稱,內容就會被添加,這個名稱由設計者自動完成。爲了防止這種情況,從ControlStyle刪除csSetCaption

constructor TMyMemo.Create(AOwner: TComponent); 
begin 
    inherited Create(AOwner); 
    ControlStyle := ControlStyle - [csSetCaption]; 
end; 
+0

一如既往 - 解決方案很好的解釋。謝謝! – Branko 2012-03-24 09:03:30

+2

很棒的回答。我想我也會創建一個MyPanel和MyEdit。 :)或者它是你可以在設計器中切換的選項嗎? – GolezTrol 2012-03-24 09:32:52

0

移動Lines.Clear到覆蓋方法CreateWnd方法。基礎窗口控制(多行編輯)不存在時創建執行

+4

無論何時調用「CreateWnd」,這都會清除內容,這比您想象的要多。 – NGLN 2012-03-24 08:58:53