月別アーカイブ: 2014年10月

XE7 Jetスタイルでメモリーリーク

解決

http://www.freeml.com/delphi-users/3949/latest

FMX.Styles.Objects内の
TSystemButtonObjectクラスで
FInactiveAnimationを解放してないのが原因みたいです。

上記ファイルを自分のプロジェクトフォルダにコピーして
destructor TSystemButtonObject.Destroy;
begin
FInactiveLink.Free;
//// 追加
FInactiveAnimation.Free;
//// 追加終わり
inherited;
end;

独自イベントの実装


type
  TMover = class
  private

    FOnChange: TNotifyEvent;

    procedure OnAnimationFinish(Sender: TObject);
    procedure OnAnimationProcess(Sender: TObject);

    property OnChange: TNotifyEvent read FOnChange write FOnChange;

end;


type
  TMyMessageBoard = class
  private
    procedure OnSingleAnimationFinish(Sender: TObject);

  public
    constructor Create();
    destructor Destroy; override;

    procedure OpenAndClose(aParent, aTargetA, aTargetB: TFmxObject);

end;



procedure TMover.OnAnimationFinish(Sender: TObject);
begin
  if Assigned( FOnChange) then FOnChange(Self);
  Self.Free;
end;


procedure TMyMessageBoard.OnSingleAnimationFinish(Sender: TObject);
begin
  Form5.Caption := 'zzz';
end;

procedure TMyMessageBoard.OpenAndClose(aParent: TFmxObject;
                                       aTargetA: TFmxObject;
                                       aTargetB: TFmxObject);
var
  tmpIn: TMover;
begin
  tmpIn := TMove_SwellClose.Create(aParent, aTargetA);
  tmpIn.AdjustSize;
  tmpIn.Animate(0.5, 2);
  tmpIn.OnChange := OnSingleAnimationFinish;
end;