さて TMSWebCoreの超マイナーネタです。
TTMSFNCStatusBarというFNCコンポでWebcoreでも使える
ステータスバーがあります。
貼っただけで即使えますが、既存のItem内がテキストか時間、時刻
などあまり私が欲しいタイプが選べません。
何か欲しいかというと四角のエリアで文字と背景の四角領域の色が変えられるものが
欲しいです。FA用途で通信ステータスを表示するのに長年この方法を
使っています。
頭を切り替えて別の方法でもいいですが、やっぱりこれがUIとしては
しっくりきます。
FA系の人はわかってくれるかと。
そうなるとOwnerDrawで自分でやれというオプションがありますが、
マニュアルを見てもなんの情報も得られません。
そう、「Delphiユーザーならできるよね?」と暗黙で言われていると
理解します。(笑)
とはいえ、これでは初見殺しなので、うまくいったコードを書いておきます。
どなたかの役にたてば幸いとはずかしいですがコードを載せます。
コンポのソースを見ながらこんな感じじゃないという感じでやったら
うまくいきました。
別にWebだからと考慮することはないです、内部で吸収してくれています。
確かにコンポーネントを作りまくっていた初期ユーザーじゃないと厳しいかと。
下記のコードはFlg変数で色を切替えます。
変数変更で反応しないので、
Statusbar.Paint;
でリドローしますが、時刻Itemを入れておくと自然に全ドローするので
何もしなくてもいいです。が時刻のフォントがゆうこと聞かない(涙)
procedure TForm1.StatusbarDrawCustomPanel(Sender: TObject; AGraphics: TTMSFNCGraphics; ARect: TRectF; APanel: TTMSFNCStatusBarPanel); var FILL:TTMSFNCGraphicsFill; begin if APanel.Index=0 then begin FILL:=TTMSFNCGraphicsFill.Create; try if Flg then FILL.Color:=clRed else FILL.Color:=clLime; AGraphics.Fill.Assign(FILL); AGraphics.Font.AssignSource(Statusbar.Font); AGraphics.Stroke.Color:=gcNull; AGraphics.DrawRectangle(ARect); AGraphics.DrawText(Arect,StatusBar.Panels.Items[APanel.Index].Text,false,gtaCenter,gtaCenter); finally FILL.Free; end; end; end;
もっといい方法あれば連絡ください。
TMSWebcore流行ってくれ~~~
ではでは。