我發現自己處於一個棘手的情況,我有一個應用程序具有嵌入表單中的表單,嵌入到表單中,嵌入到表單中...(你有這張照片)。查找表單中嵌入表單的屏幕位置,嵌入到表單中,
我試圖找到其中一種形式(很容易(Self.Width div 2
)和(Self.Height div 2
),右)的中間。然後,相對於屏幕的位置(這很簡單,以及(Self.Width div 2) + Self.Left
和(Self.Height div 2) + Self.Top)
。
的問題是,這種形式被嵌入另一種形式,所以我就 (Self.Width div 2) + Self.Left + Self.Parent.Left
和 (Self.Height div 2) + Self.Top + Self.Parent.Top
的問題是,我我有一個遞歸調用;問題是並非所有對象都是表單,它們是表單,選項卡,面板等的組合。
什麼是優雅如何解決它?
我不認爲我會說出你的問題。如果表格A嵌入表格B中,您爲什麼要將表格A相對於屏幕放置?當然,這隻會造成你將表格A放置在某個隱藏的位置上的風險? –
假設表格A在100,100,表格B在50,50(相對於表格A),因此表格B在150,150,那麼可以說表格C在0,100和200,600的大小。所以C格式的絕對位置是150,250,這個格式的中心位置是250,550。它更有意義嗎?對不起,我應該把之前的例子。 – Icaro
啊,現在我明白了。我錯過了想要找到**表格的位置。我冒昧地對標題進行了消歧(連同其他小修改)。當你在你自己的代碼中實現這個功能時,我強烈建議你在適當的動詞前面加上前綴,比如'Find'或'Get'。此外,由於任何控制都可以擁有一個位置,所以您可能想要概括HeartWave提供的解決方案。例如。 'FindCentreAsScreenCoords(AControl:TControl)' –