0

OnFormShowイベントでは、(特定の条件のセットに対して)フォームを表示しないようにする必要があります。

「カウンタ>15の場合、フォームが表示されない」など。

もちろん、フォーム作成で多くのものをリファクタリングして移動することもできますが、これは一般的なフォームであり、変更が多すぎるため、これは多くの作業です。

OnFormShowの最後でフォームを閉じますが、とにかくフォームが数ミリ秒表示されます。

残念ながら、フォームを表示しないように指示する条件は、OnFormShow内で決定されます。フォームを表示しないようにするためのトリックはありますか?

4

3 に答える 3

9

準備ができるまでコードがまったく表示されないように、コードをリファクタリングします。Showの呼び出しを控えるか、まだ呼び出していない場合はVisibleをFalseに設定します。

OnShowに到達するまでには手遅れだと思いますが、そうしてもデザインが悪いことを示しています。OnShowから別のメソッドにコードを移動することは、実際にはそれほど問題にはならないはずです。

于 2011-08-22T12:48:12.887 に答える
6

リファクタリングで+1しますが、それまでの間、次のことを試してください。

AlphaBlend:= true;

AlphaBlendValue:= 0;

これでフォームが見えなくなり、OnShowテストアプリ(D2010 / XP)で機能するように見えました。フォームを閉じるためのコード、おそらくタイマーを追加する必要があると思いますか?

于 2011-08-22T13:25:36.930 に答える
4

非常に悪い解決策は

procedure TForm1.FormShow(Sender: TObject);
begin
  inc(n);
  if n > 15 then
  begin
    Left := Screen.DesktopWidth + 32;
    Top := Screen.DesktopHeight + 32;
    PostMessage(Handle, WM_CLOSE, 0, 0);
  end;
end;
于 2011-08-22T14:02:11.147 に答える