【问题标题】:Button glyphs not updated when action's image changes动作图像更改时按钮字形未更新
【发布时间】:2015-12-04 03:40:06
【问题描述】:

我正在使用操作管理器,并且我有一些按钮与其中一些操作相关联。这些按钮的字形会自动从操作管理器的图像列表中分配相应的图像。但是,如果我去更改其中一个此类操作的图像索引,或者以其他方式更改图像列表中的实际图像,则该按钮将保留最初分配给该操作时的原始字形,并且不会更新到新图像。

当我更改动作的图像时,如何确保这些按钮的字形得到更新?

【问题讨论】:

    标签: delphi tactionmanager


    【解决方案1】:

    这是使用 Delphi 动作的陷阱之一。当您将动作分配给按钮或任何基于字形的控件时,它会复制与该动作对应的图像。对该图像的任何更改都不会反映在按钮的字形中 - 或者其他任何基于字形的控件中。

    当您对动作的图像进行更改时,您可以运行以下代码,它会强制更新表单上的所有控件,以反映对动作(主要是图像)的任何和所有更改:

    procedure UpdateActions(AControl: TWinControl);
    var
      C: TControl;
      X: Integer;
    begin
      for X := 0 to AControl.ControlCount-1 do begin
        C:= AControl.Controls[X];
        C.Action:= C.Action; //Forces everything to update
        if C is TWinControl then
          UpdateActions(TWinControl(C));
      end;
    end;
    

    你这样称呼它:

    UpdateActions(MyForm);
    

    这将简单地递归遍历表单上的所有控件并将每个控件的操作分配回自身,从而触发它使用新图像更新任何基于字形的控件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-07
      • 2012-10-07
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 2019-09-25
      相关资源
      最近更新 更多