如何重置PopupMenu項目列表的最大寬度?TPopupMenu保留最大寬度,即使在Items.clear後
說即在運行時添加一些TMenuItems的彈出菜單:
item1: [xxxxxxxxxxxxxxxxxxx]
item2: [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
菜單自動調整大小以適應大項目。 但你做Items.Clear並添加一個新項目:
item1: [xxxxxxxxxxxx ]
它結束了像,標題後大的空閒空間。
除了重新創建popupmenu之外,還有什麼解決方法嗎?
這裏重現這種異常的代碼:
procedure TForm1.Button1Click(Sender: TObject);
var
t: TMenuItem;
begin
t := TMenuItem.Create(PopupMenu1);
t.Caption := 'largelargelargelargelargelarge';
PopupMenu1.Items.Add(t);
PopupMenu1.Popup(200, 200);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
t: TMenuItem;
begin
PopupMenu1.Items.Clear;
t := TMenuItem.Create(PopupMenu1);
t.Caption := 'short';
PopupMenu1.Items.Add(t);
PopupMenu1.Popup(200, 200);
end;
我只能使用api調用,CreatePopupMenu,InsertMenu,TrackPopupMenu,DeleteMenu等等來複制它。只要句柄有效,就沒有'收縮'。因此,我認爲唯一的解決方案是釋放彈出菜單並在運行時重新創建它,這是調用'DestroyMenu'的唯一方法。 – 2014-10-18 03:36:19
@hikari:感謝您的編輯。這個問題對於可用的代碼更有用,特別是對於可能在搜索中找到它的未來讀者。 – 2014-10-18 15:21:30