2011-09-29 59 views
0

在Delphi Prism中,我試圖設置Rectangle屬性,左上角或右下角,編譯器保留說它找不到一個setter爲Rectangle的這些屬性設置一個值。System.Drawing.Rectangle無法找到屬性設置爲「底部」或「左」或「右」或「頂」

我看過其他與此相關的計算器的問題,還沒有找到一個很好的答案。

我希望能夠設置矩形,它是頂部,底部,右側或左側的值,以便能夠執行下列操作。

dragRect.right := dragRect.left; 
dragRect.bottom := dragRect.top; 

很明顯,你不能這樣做。你如何在Delphi Prism中完成同樣的事情?

+0

瞭解在.NET編程值類型和引用類型之間的區別是非常重要的。找到一本關於使用Delphi的書是很困難的。學習一些C#,這樣你就可以在Jeffry Richter的書中找到一筆。 –

回答

0

正如Hans Passant所指出的那樣,理解值類型和參考類型之間的差異非常重要。由於System.Drawing.Rectangle沒有左,上,右或底部的setter,因此您無法爲它們設置任何值,只能讀取已存在的值。 他們得到更新的唯一時間是當您實際創建Rectangle對象時,通過高度,寬度和X-Y點或設置矩形屬性的X,Y,高度和/或寬度。

因爲在我的程序中,我只是試圖定義繪製矩形形狀的邊界或區域,我設置了X,Y,寬度或高度。它工作正常。至於找出一個矩形的寬度和高度,你不必一次設置它的寬度和高度。每當您重置矩形的X和/或Y值時,它都會保持其寬度和高度。因此,它知道它的權利和最低價值是什麼。

舉例來說,你可以這樣做:

dragRect.X := 100; 
dragRect.width := 10; 

,但你不能做到這一點:

dragRect.left := 100; 
dragRect.right :=110; 
+1

我認爲這是一種危險的做法。堅持原生平臺的做事方式,你會更容易搭車。不要創建兩個平行但不同的矩形類。不變性是一種有價值的商品。 –

+0

@DavidHeffernan,你是對的。正因爲如此,我已經遇到了其他問題。 – ThN

相關問題