如何在Delphi中刷新TImage对象?

时间:2015-10-06 20:13:58

标签: delphi refresh timage

我创建了一个简单的项目来向您展示 TImage 组件的问题。例如,我添加了 TCategoryPanelGroup,TCategoryPanel,TImage 和两个标准按钮,用于隐藏和显示 TImage copomonent中的Picture。您可以在下面看到这些按钮的代码:

unit Unit3;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons,
  Vcl.Imaging.jpeg, Vcl.ExtCtrls;

type
  TForm3 = class(TForm)
    CategoryPanelGroup1: TCategoryPanelGroup;
    CategoryPanel1: TCategoryPanel;
    imgTest: TImage;
    btnShow: TBitBtn;
    btnHide: TBitBtn;
    procedure btnHideClick(Sender: TObject);
    procedure btnShowClick(Sender: TObject);
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.btnHideClick(Sender: TObject);
begin
   imgTest.Visible := False;
   imgTest.Refresh;
   CategoryPanel1.Refresh;
   CategoryPanelGroup1.Refresh; // Refreshing TCategoryPanel Parent
   CategoryPanelGroup1.Invalidate;
   CategoryPanelGroup1.Repaint;

   { Just one way which I found to 'refresh'- hide image dynamically
   CategoryPanel1.Visible := False;
   CategoryPanel1.Visible := True;
   }
end;

procedure TForm3.btnShowClick(Sender: TObject);
begin
   imgTest.Visible := True;
   imgTest.Refresh;
   CategoryPanel1.Refresh;
   CategoryPanelGroup1.Refresh;
end;

end.

如果我们点击隐藏按钮图片卡在同一个地方,那将是不幸的。如果我们想要刷新它,我们必须折叠并展开 CategoryPanel1 (或取消注释代码行)。你知道我们如何在点击按钮后动态地做到这一点吗?

0 个答案:

没有答案