2012-01-27 15 views
3

DelphiのHUD機能をfiremonkeyでhttps://github.com/jdg/MBProgressHUDに複製したいと考えています。firemonkeyのHUDウィンドウの作成方法

これがiPhoneでどのように見えるかです:

HUD

主な問題は、半透明の&フォームが完全に境界線を削除します方法です。

+2

質問を編集して、外部リンクを使用するのではなく、ここで何をしようとしているのか、画面キャプチャまたは画像を投稿してください。何らかの理由で外部リンクが消えたり利用できなくなったりすると、将来あなたの質問が他の人に無意味になります。ありがとう。 :) –

+1

フォームを半透明にすることはできませんが、完全に透明にして半透明(不透明度<1)の形を使用することができます。 –

答えて

4

Firemonkey HDフォームを作成し、Fill.KindbkNoneに設定し、Fill.ColorNullに設定します。さらに、TransparencyプロパティをTrueに設定すると、BorderStylebsNoneになります。

TRectangle(または任意の図形)を作成し、Stroke.KindプロパティをbkNoneに設定します。 Fill.ColorGrayに設定すると、Opacity〜0.5となります。

両親の親をフォームとして持つTAniIndicatorTLabelを作成します。 Opacityは1.0のままです。オプションで、TImageも作成し、TAniIndicatorとまったく同じサイズと位置にします。

TAniIndicatorでTFloatAnimationを使用してイメージを(ティックなどに)変更し、ラベルテキストを表示したいメッセージに変更するだけの場合です。理想的には、文字列または整数を変数として受け入れ、それに合わせてテキストとインジケータ/イメージを変更するプロシージャを作成するだけです。例えば;

Procedure TForm1.Process(Mode : Integer); 
Begin 
if Mode = 1 then 
begin 
    AniIndicator1.Enabled := True; 
    AniIndicator1.Visible := True; 
    Image1.Visible := False; 
    Label1.TextAlign := TTextAlign.taCenter; // Must be called to reset alignment 
    Label1.Text := 'Loading'; 
End 
else if Mode = 2 then 
Begin 
    AniIndicator1.Enabled := False; 
    AniIndicator1.Visible := False; 
    Label1.TextAlign := TTextAlign.taCenter; // Must be called to reset alignment 
    Image1.Bitmap.LoadFromFile('Tick.png'); 
    Image1.Visible := True; 
    Label1.Text := 'Complete!'; 
end; 
end; 

次に、あなたのメインフォームでtpanelを作成し、子コンポーネントとして、上記のフォーム(つまりTAniIndicator, label, and rectangleが含まれている)を追加することができます。次に、有効なモード変数を使用して作成したプロシージャを呼び出します。コードに示されているとおりに実行されます。さらに多くのモードを追加するのは簡単ですし、自分で作成したアプリケーションと似たようなことをしました(ただし、インジケータを作成するのではなくTRectangleに関連していました)。

関連する問題