我正在創建一個用戶組件,在按鈕上添加一些額外的標籤(使用代碼),但當點擊標籤時,按鈕的onClick事件不會觸發。如何僅使TWinControl顯示並讓其父級處理所有鼠標事件?
爲這些標籤創建所有與鼠標相關的事件並將它們指向按鈕的事件是很麻煩和無效的。
是否有更簡單的方法讓按鈕處理所有那些鼠標事件,就像那些標籤不存在一樣?
實際情況要複雜得多,標籤是TJvLinkLabel用於簡單的標記呈現,所以只需在按鈕上繪製文本對我來說不是一個好選擇。
感謝您的善意幫助。
編輯: 更具體一點。有一個按鈕陣列,每個表格信息的表格記錄。它們每個都有2個TJvLinkLabel作爲頁眉和頁腳,它具有簡單標記的標題以顯示各個領域的信息和1個TJvLabel(alClient,shadow,wordwrap)來顯示主要描述。每個按鈕可以是不同的顏色,甚至有背景圖片,這就是爲什麼需要陰影才能將文本帶出。按鈕自己的標題始終設置爲空。
我其實只需要視覺效果(標記渲染,陰影),並且不需要這些標籤的任何交互。我只是想讓按鈕像沒有其他組件一樣託管。
當我搜索到stackoverflow時,我看到C#似乎將hittest設置爲false或類似,但我無法在Delphi中找到類似的設置。
編輯2: 更簡單地說,有沒有辦法讓父母(在這種情況下,按鈕)處理所有的鼠標消息,並不傳遞給它的孩子(在這種情況下標籤)。謝謝。
編輯3: 我已經遠遠地繼承了標籤類,並將Click,DblClick,MouseDown,MouseUp過程傳遞到按鈕並跳過其他事件。我想知道是否有更好的解決方案。謝謝。
您是否在這些標籤上使用超鏈接?你想要處理那些人,按鈕或標籤。任何屏幕截圖的幫助我們可視化的機會? – 2012-03-01 17:14:32
如果你不能分配OnClick的標籤..可能你可以創建TJvLinkLabel後代類,重寫'Click'到'parent.click',並使用它? – teran 2012-03-01 20:15:38
@DavidHeffernan他們沒有使用超鏈接,我只希望標籤的視覺效果能夠替換原始單個素描標題。 – Justmade 2012-03-01 23:49:18