TTaskbarコンポーネントの主な機能

TTaskbarコンポーネントのアイコン

TTaskbarコンポーネントは、Windowsのタスクバーからアプリケーションを制御するためのコンポーネントです。

アプリケーションで選択可能な複数のウィンドウのプレビューを提示したり、アプリケーションの進行状況をタスクバーボタンに表示することができます。

アイコンオーバーレイ

ボタンの上に小さなオーバーレイを表示します。

アプリケーションの状態をユーザーに伝えることができます。

アイコンオーバーレイの表示

縮小表示(サムネイル)ツール バー

ウィンドウの縮小表示プレビューにツールバーを埋め込みます。

アプリケーションのウィンドウをアクティブにすることなく操作することができます。

縮小表示ツールバー

進行状況バーの表示

タスクバーボタンに進行状況バーを表示します。

ユーザーがウィンドウを切り替えなくても、進行状況を伝えることができます。

TTaskBarProgressState.Normal TTaskBarProgressState.Indeterminate TTaskBarProgressState.Error TTaskBarProgressState.Paused

プレビュー表示

アプリケーションのタスクバーボタンをポイントしたときに表示されるウィンドウの縮小表示に表示する対象を明示的に指定できます。

縮小表示を具体的に切り替えることによって、ユーザー エクスペリエンスが向上します。

プレビュー表示

アイコンオーバーレイを使う

アイコンオーバーレイの表示

アイコンオーバーレイを表示する

アイコンオーバーレイを表示するには、OverlayIconプロパティにアイコンを設定します。

デザイン画面で設定するときは、オブジェクトインスペクタのOverlayIconプロパティの[...]ボタンを押し、

OverlayIconプロパティの[...]ボタン

アイコンファイルを選択します。

アイコンファイルを選択

実行時に設定するときはOverlayIconプロパティに代入します。

Taskbar1.OverlayIcon := Image1.Picture.Icon;

システムアイコンを表示する

LoadIcon関数でアイコンを取得することで、システムアイコンを表示できます。

アイコンオーバーレイに情報アイコンを使用した例
var
  Icon: TIcon;
begin
  Icon := TIcon.Create;
  try
    // 情報アイコン(吹き出しの中に i の文字)
    Icon.Handle := LoadIcon(0, IDI_INFORMATION);
    // 疑問符のアイコン
    // Icon.Handle := LoadIcon(0, IDI_QUESTION);
    // 感嘆符のアイコン
    // Icon.Handle := LoadIcon(0, IDI_WARNING);
    Taskbar1.OverlayIcon := Icon;
  finally
    Icon.Free;
  end;
end;

オーバーレイアイコンを解除する

オーバーレイアイコンを解除するには、OverlayIconプロパティにnilを代入します。

Taskbar1.OverlayIcon := nil;

縮小表示ツールバー

縮小表示ツールバー

縮小表示ツールバーにボタンを登録する

TaskBarButtonsプロパティにボタンを設定します。

デザイン画面で設定するときは、オブジェクトインスペクタのTaskBarButtonsプロパティの[...]ボタンを押し、

TaskBarButtonsプロパティの[...]ボタン

編集画面で追加・削除します。

TaskBarButtons編集画面

ボタンの状態

TThumbBarButtonのButtonStateプロパティでボタンの状態を設定します。

TaskBarButtonsのオブジェクトインスペクタ
  • Enabled

    Trueのときはボタンを押すことができます。

    Falseのときはボタンは押すことができません。

  • DismissOnClick

    Trueにするとボタンをクリックしたときに縮小表示を閉じます。

  • NoBackground

    Trueのときはボタンの枠線を描画しません。

  • Hidden

    Trueのときはボタンを表示しません。

  • NonInteractive

    Trueのときはボタンは対話的ではありません。通知目的で使用します。

参考
THUMBBUTTONFLAGS enumeration

実行時にボタンの状態を変更する

実行時にボタンの状態を変更するには、プロパティの値を変更した後にApplyButtonsChangesメソッドを呼びます。

var
  Button: TThumbBarButton;
begin
  Button := Taskbar1.TaskBarButtons[0];
  Button.ButtonState := Button.ButtonState - [TThumbButtonStates.Enabled];
  Taskbar1.ApplyButtonsChanges; //ボタンの状態を変更する
end;

進行状況バーを表示する

進行状況バーの状態を設定する

ProgressStateプロパティで状態を設定します。

ProgressStateプロパティのオブジェクトインスペクタ
  • TTaskBarProgressState.None

    進行状況バーを表示しない

    TTaskBarProgressState.None

  • TTaskBarProgressState.Normal

    通常の進行状況バー

    TTaskBarProgressState.Normal

  • TTaskBarProgressState.Indeterminate

    周期的に動くプログレスバー

    TTaskBarProgressState.Indeterminate

  • TTaskBarProgressState.Error

    エラー状態

    TTaskBarProgressState.Error

  • TTaskBarProgressState.Paused

    一時停止状態

    TTaskBarProgressState.Paused

進行状況を設定する

ProgressMaxValueプロパティで進行状況バーが取り得る位置の範囲の上限を設定します。

Taskbar1.ProgressMaxValue := 10;

ProgressValueプロパティで現在位置を指定します。

Taskbar1.ProgressValue := 5;

プレビュー表示

アプリケーションのタスクバーボタンをポイントするとウィンドウの縮小表示が表示されます。

縮小表示

ウィンドウの縮小表示をポイントするとウィンドウのプレビューが表示されます。

プレビュー表示

縮小表示の表示範囲を設定する

フォームの一部分を縮小表示に表示することができます。

縮小表示の設定例

表示領域はPreviewClipRegionプロパティで設定します。

PreviewClipRegionプロパティのオブジェクトインスペクタ

実行時に表示領域を設定するには、PreviewClipRegionプロパティに表示領域を設定して、ApplyClipAreaChangesメソッドで更新します。

Taskbar1.PreviewClipRegion.Left := Image1.Left;
Taskbar1.PreviewClipRegion.Top := Image1.Top;
Taskbar1.PreviewClipRegion.Height := Image1.Height;
Taskbar1.PreviewClipRegion.Width := Image1.Width;
Taskbar1.ApplyClipAreaChanges;

TabPropertiesプロパティで複数のウィンドウを開いたときの動作を設定します。

  • AppThumbAlways
  • AppThumbWhenActive
  • AppPeekAlways
  • AppPeekWhenActive
  • CustomizedPreview プレビュー表示をカスタマイズします。

プレビュー表示のカスタマイズ

TabPropertiesプロパティをCustomizedPreviewにすると、縮小表示やプレビュー表示をカスタマイズできます。

システムがプレビュー表示を要求すると、OnThumbPreviewRequestイベントやOnWindowPreviewItemRequestイベントが呼び出されます。

  • OnThumbPreviewRequestイベント

    タスクバーに表示される縮小表示を描画するときに呼ばれます。

  • OnWindowPreviewItemRequestイベント

    タスクバーに表示される縮小表示をポインタしたときにウィンドウのプレビュー表示を描画するときに呼ばれます。

引数のPreviewBitmapに表示するプレビュー画像を設定します。 PreviewBitmapのPixelFormatがpf32bitでない、またはサイズが適切でないときはエラーになります。

次のコードは縮小表示をカスタマイズします。

procedure TForm1.Taskbar1ThumbPreviewRequest(Sender: TObject;
  APreviewHeight, APreviewWidth: Integer; PreviewBitmap: TBitmap);
begin
  PreviewBitmap.PixelFormat := pf32bit;
  PreviewBitmap.Width := APreviewWidth;
  PreviewBitmap.Height := APreviewHeight;

  PreviewBitmap.Canvas.Brush.Color := clLime;
  PreviewBitmap.Canvas.FillRect(TRect.Create(0, 0, APreviewWidth,
    APreviewHeight));

  PreviewBitmap.Canvas.Font.Size := 20;
  PreviewBitmap.Canvas.Font.Color := clRed;
  PreviewBitmap.Canvas.TextOut(8, 8, 'ThumbPreview');
end;
縮小表示のカスタマイズ

次のコードはプレビュー表示をカスタマイズします。

procedure TForm1.Taskbar1WindowPreviewItemRequest(Sender: TObject;
  var Position: TPoint; PreviewBitmap: TBitmap);
var
  R: TRect;
begin
  Position.X := 0;
  Position.Y := 0;

  PreviewBitmap.PixelFormat := pf32bit;
  PreviewBitmap.WIDTH := Self.ClientWidth;
  PreviewBitmap.HEIGHT := Self.ClientHeight;

  R := TRect.Create(0, 0, PreviewBitmap.WIDTH, PreviewBitmap.HEIGHT);
  PreviewBitmap.Canvas.Brush.Color := clSkyBlue;
  PreviewBitmap.Canvas.FillRect(R);

  PreviewBitmap.Canvas.Font.Size := 20;
  PreviewBitmap.Canvas.Font.Color := clGreen;
  PreviewBitmap.Canvas.TextOut(0, 0, 'WindowPreviewItem');
end;
プレビュー表示のカスタマイズ

Windows XP/Windows Vistaで実行したとき

Windows XPやWindows Vistaで実行するとエラーになります。

Windows Vistaで実行したとき

Windows Vistaのエラーメッセージ「ITaskbarList3インターフェースはこのOSバージョンではサポートされていません.」

Windows XPで実行したとき

Windows XPのエラーメッセージ「ITaskbarList3インターフェースはこのOSバージョンではサポートされていません.」