私はデルファイの学習者です。「MainForm」、「MinimizeTimer」、「RestoreTimer」を備えたDelphiプロジェクトが1つあります。次のコードを定義しました。
タイマーを最小化する:
if MainForm.AlphaBlendValue >= 225 then
begin
MinimizeTimer.Enabled := true;
MainForm.AlphaBlendValue := MainForm.AlphaBlendValue - 5;
end;
タイマーの復元:
if MainForm.AlphaBlendValue >= 0 then
begin
RestoreTimer.Enabled := true;
MainForm.AlphaBlendValue := MainForm.AlphaBlendValue + 5;
end;
私の要件は、メインフォームが最初に「MinimizeTimer」を使用してフェードアウトし、次にキャプションバーの「_」ボタンが押されたときに最小化されることです。また、「RestoreTimer」を使用してフェードインし、タスクバーをクリックすると復元されます。そこで、次のコードを再度定義しました。
private
{ Private declarations }
procedure WMSysCommand(var Msg: TWMSysCommand) ; message WM_SYSCOMMAND;
..
..
..
..
..
procedure TMainForm.WMSysCommand(var Msg: TWMSysCommand) ;
begin
if Msg.CmdType = SC_MINIMIZE then MinimizeTimer.Enabled := true;
DefaultHandler(Msg);
if Msg.CmdType = SC_RESTORE then RestoreTimer.Enabled := true;
DefaultHandler(Msg);
end;
しかし、期待した結果が得られていません。MainFormは最小化され、通常の方法で復元されます。私のプロジェクトでは、「FormCloseQuery」イベントも1つあることを覚えておいてください。
私を助けてください。