是否有方法可以在TJvDockVSPopupPanel已設置後更改其選項卡圖標?德爾福:更改TJvDockTabHostForm的選項卡圖標
的問題是,我想通過我的程序發生改變後的選項卡圖標更改爲驗證圖像...
ImageList1: TImageList;
procedure TValidationWindow.UpdateIcon;
var
i, topValidationError : integer;
begin
topValidationError := 3;
{
SECTION
//Set topValidationError value to the specific error that has occurred
SECTION END
}
// Set the Icon to the specific image.
ImageList1.GetIcon(topValidationError, Self.Icon);
end;
以上將只在第一時間!有任何想法嗎?
編輯:
在進一步的檢查,我發現有一個FImages:TCustomImageList在TJvDockCustomTabControl,但是我還沒有找到一種方法來訪問FImages然而,我假設必須有某種方式來增加我的圖標到這個列表,然後使用imageindex更改選項卡圖標圖像。
解決:
因此,最大的問題是訪問圖像列表,這可以通過允許TJVDockTabControl訪問TJvDockVIDTabPageControl來完成。
改變標籤圖標的代碼是...
if (GetAncestors(Self, 3) is TJvDockTabHostForm) then
if ((GetAncestors(Self, 3) as TjvDockTabHostForm).PageControl is TJvDockVIDTabPageControl) then
begin
if FTabSheetIndex = - 1 then
FTabSheetIndex := ((GetAncestors(Self, 3) as TjvDockTabHostForm).PageControl as TJvDockVIDTabPageControl).PageSheets.IndexOf(TJvDockTabSheet(Self.Parent));
((GetAncestors(Self, 3) as TjvDockTabHostForm).PageControl as TJvDockVIDTabPageControl).Pages[FTabSheetIndex].ImageIndex := x// The icon you want to use
((GetAncestors(Self, 3) as TjvDockTabHostForm).PageControl as TJvDockVIDTabPageControl).Panel.Refresh;
end;
我已經包括FTabSheetIndex因爲更改DockHostWindow會導致選項卡例如,改變在更改之前刪除選項卡會導致選項卡索引順序發生更改,因此可以輕鬆將其設置爲-1並再次找到。
信息上GetAncestors()可以在這裏找到How can you tell if a TJvDockServer Form is unpinned or pinned?
您也將有你的圖標添加到TJvDockTabPageControl,在FormShow事件做最好...
if (GetAncestors(Self, 3) is TJvDockTabHostForm) then
if ((GetAncestors(Self, 3) as TjvDockTabHostForm).PageControl is TJvDockVIDTabPageControl) then
begin
FTabImageListCount := ((GetAncestors(Self, 3) as TjvDockTabHostForm).PageControl as TJvDockVIDTabPageControl).Images.Count;
for i := 0 to ImageList1.Count - 1 do
begin
ImageList1.GetIcon(i,Icon);
((GetAncestors(Self, 3) as TjvDockTabHostForm).PageControl as TJvDockVIDTabPageControl).Images.AddIcon(icon);
end;
end;
但是,如果表單沒有顯示在你的應用程序的開始,圖標更改功能可能無法正常工作,直到你特意點擊標籤來顯示它。因此,只要您的表單添加到TJvDockHostForm中,最好添加圖標......這仍然是我正在研究的內容,但是關鍵問題已得到解決。
'FImages:TCustomImageList'聽起來像是通過'Images'屬性暴露的東西。控件是否有一對'Images'和'ImageIndex'屬性?這將是標準的,如果是的話,使用這些。 –
不幸的是,在那個班上,我已經找到了一個解決方案,今天上午,我會張貼一次,我已經把比特:) –