2011-12-07 84 views
0

我有這個程序,它是一個TMenuItem事件(Miscellanous - OnMeasureItem)。它正常工作。調用MeasureItem程序(TMenuItem,Delphi)

MeasureItem(Sender: TObject; ACanvas: TCanvas; var Width, Height: Integer); 

我想叫它在FormResize事件,但我收到「沒有足夠的實際參數」消息。

你能幫我一下,我該如何正確調用它?

+1

你不需要調用它。當菜單需要獲取菜單項目的大小時,它會自動調用,因爲它正在構建以顯示。請問爲什麼你認爲你需要手動調用它? –

+1

你不應該打電話給這個事件。系統在想要顯示菜單時會調用它。在顯示菜單之前,系統必須計算出所有菜單項需要多少空間。它通過調用這個事件來實現。你的錯誤是因爲你沒有傳遞足夠的參數,就像編譯器說的那樣。解決這個問題的方法是傳遞正確的參數。但我相信你根本不想打電話。 –

+0

在FormResize事件中,我這樣做: 如果Form1.Label55.Font.Color = clNavy然後 Form1.Width:= 1000別的 如果Form1.Label55.Font.Color = clBlack然後 Form1.Width:= 700; 我想在改變字體顏色後菜單的寬度也變得更大。 但它仍然是一樣的,我不知道我該如何解決這個問題。 –

回答

1

「沒有足夠的實際參數」表示您沒有提供它所期望的所有參數。該方法需要四個參數。第一個應該是對正在測量的菜單項的引用,第二個應該是包含用於繪製菜單的屬性的畫布,如果該菜單真的被繪製,並且其餘參數應該是將接收請求的菜單項大小。

這就是如何調用該方法。無論你調用應該是是另一回事。如果您需要,我邀請您發佈有關該主題的另一個問題。

相關問題