Falconの思うままに

PASCAL好きが、気ままにマニアックなネタを

TMS WebCore [TTMSFNCStatusBar]のOwnerDrawの使い方

さて TMSWebCoreの超マイナーネタです。

TTMSFNCStatusBarというFNCコンポでWebcoreでも使える

ステータスバーがあります。

貼っただけで即使えますが、既存のItem内がテキストか時間、時刻

などあまり私が欲しいタイプが選べません。

 

何か欲しいかというと四角のエリアで文字と背景の四角領域の色が変えられるものが

欲しいです。FA用途で通信ステータスを表示するのに長年この方法を

使っています。

頭を切り替えて別の方法でもいいですが、やっぱりこれがUIとしては

しっくりきます。

A系の人はわかってくれるかと。

そうなると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流行ってくれ~~~

ではでは。