Quantcast
Channel: Tutorial - Embarcadero Community
Viewing all articles
Browse latest Browse all 503

FireMonkey グラデーションボタンの作り方コード編[JAPAN]

$
0
0

FireMonkeyのスタイルについては

http://edn.embarcadero.com/article/44759

もしくは、細川さんのスライド(下記URL)で詳しく説明があります。

https://www.slideshare.net/pik256/vcl-firemonkey-59356366

上記の方法を使ってコード実装する方法を試してみました。

新規プロジェクトで[マルチデバイス アプリジェーション C++Builder]を選択し

メインフォームにはTButtonを1つ配置します。

FormCreateでTRectangleとTGradientAnimationを作成し

Button1->FindStyleResource("background")->AddObject()に作成したTRectangleを設定します。

//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
	f_recta_ 		= new TRectangle(this);
	f_recta_->Name 	= "Rectangle1";
	f_graani_ 		= new TGradientAnimation(this);
	f_graani_->Duration = 0.2;
	f_graani_->StartValue->Color 	= TAlphaColorRec::Yellow;
	f_graani_->StartValue->Color1 	= TAlphaColorRec::Red;
	f_graani_->StopValue->Color 	= TAlphaColorRec::White;
	f_graani_->StopValue->Color1 	= TAlphaColorRec::Blue;
	f_recta_->AddObject(f_graani_);
	f_graani_->Inverse      	= false;
	f_graani_->PropertyName 	= "Fill.Gradient";
	f_graani_->Trigger 			= "IsMouseOver=true";
	f_graani_->TriggerInverse 	= "IsMouseOver=false";
	f_recta_->OnClick = Button1Click;
	f_recta_->Fill->Kind	= TBrushKind::Gradient;
	f_recta_->Align  		= TAlignLayout::Client;
	f_recta_->HitTest		= true;
	f_recta_->Fill->Gradient->Color = TAlphaColorRec::Yellow;
	f_recta_->Fill->Gradient->Color1 = TAlphaColorRec::Red;
	TThread::CreateAnonymousThread([this](){
		TThread::Synchronize(TThread::CurrentThread, [this]()
		{
			Button1->FindStyleResource("background")->AddObject(f_recta_);
		});
	})->Start();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
	ShowMessage("Press the Gradation button");
}
//---------------------------------------------------------------------------

 

TGradientAnimationのTriggerをIsMouseOver指定していますので

ボタンの上をマウスオーバーした時に TGradientAnimationTriggerが動き出します。


Viewing all articles
Browse latest Browse all 503

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>