5
5291
Unregistered / Unconfirmed
GUEST, unregistred user!
为了维护程序的结构,我在程序中大量使用Action。其优点大家都知道,我可以让
MenuItem对应某个Action,同时让工具栏上的Toolbutton也对于相同的Action。
这样我只需要对Action进行编程,而MenuItem和ToolButton都可以相关到这个事件。
不过我发现了一个非常奇怪的问题。当我在程序中创建了4个工具栏。然后初始化程
序时动态创建ToolButton(大约40个),同时把他们都关联到不同的Action。(整个程
序还只是一个空壳子,所有的Action里面还没有放入代码)我在主窗体上面的空白处
(非工具栏区域)移动鼠标,用任务管理器监视。CPU占用率达30%左右(其他程序都关
闭了)。如果我动态创建ToolButton的时候先关联Action,然后再取消管理Action,
CPU占有率就下降到10%左右。
请问各位高手。这个Action的BUG吗?难道我一定要放弃使用Action了?
动态创建TToolButton的代码如下:
function NewButtonWithAction(vAction: TAction; vPopup: TPopupMenu; vStyle: TToolButtonStyle): TToolButton;
begin
Result := TToolButton.Create(Self);
with Result do
begin
Parent := Self;
Action := vAction;
Style := vStyle;
DropdownMenu := vPopup;
ShowHint := True;
{ !!! performance bug }
Action := nil; // If i add this line, CPU usage will be lower.
end;
end;
MenuItem对应某个Action,同时让工具栏上的Toolbutton也对于相同的Action。
这样我只需要对Action进行编程,而MenuItem和ToolButton都可以相关到这个事件。
不过我发现了一个非常奇怪的问题。当我在程序中创建了4个工具栏。然后初始化程
序时动态创建ToolButton(大约40个),同时把他们都关联到不同的Action。(整个程
序还只是一个空壳子,所有的Action里面还没有放入代码)我在主窗体上面的空白处
(非工具栏区域)移动鼠标,用任务管理器监视。CPU占用率达30%左右(其他程序都关
闭了)。如果我动态创建ToolButton的时候先关联Action,然后再取消管理Action,
CPU占有率就下降到10%左右。
请问各位高手。这个Action的BUG吗?难道我一定要放弃使用Action了?
动态创建TToolButton的代码如下:
function NewButtonWithAction(vAction: TAction; vPopup: TPopupMenu; vStyle: TToolButtonStyle): TToolButton;
begin
Result := TToolButton.Create(Self);
with Result do
begin
Parent := Self;
Action := vAction;
Style := vStyle;
DropdownMenu := vPopup;
ShowHint := True;
{ !!! performance bug }
Action := nil; // If i add this line, CPU usage will be lower.
end;
end;