TTaskbarコンポーネントの主な機能¶
TTaskbarコンポーネントは、Windowsのタスクバーからアプリケーションを制御するためのコンポーネントです。
アプリケーションで選択可能な複数のウィンドウのプレビューを提示したり、アプリケーションの進行状況をタスクバーボタンに表示することができます。
プレビュー表示¶
アプリケーションのタスクバーボタンをポイントしたときに表示されるウィンドウの縮小表示に表示する対象を明示的に指定できます。
縮小表示を具体的に切り替えることによって、ユーザー エクスペリエンスが向上します。
アイコンオーバーレイを使う¶
アイコンオーバーレイを表示する¶
アイコンオーバーレイを表示するには、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プロパティの[...]ボタンを押し、
編集画面で追加・削除します。
ボタンの状態¶
TThumbBarButtonのButtonStateプロパティでボタンの状態を設定します。
Enabled
Trueのときはボタンを押すことができます。
Falseのときはボタンは押すことができません。
DismissOnClick
Trueにするとボタンをクリックしたときに縮小表示を閉じます。
NoBackground
Trueのときはボタンの枠線を描画しません。
Hidden
Trueのときはボタンを表示しません。
NonInteractive
Trueのときはボタンは対話的ではありません。通知目的で使用します。
実行時にボタンの状態を変更する¶
実行時にボタンの状態を変更するには、プロパティの値を変更した後にApplyButtonsChangesメソッドを呼びます。
var
Button: TThumbBarButton;
begin
Button := Taskbar1.TaskBarButtons[0];
Button.ButtonState := Button.ButtonState - [TThumbButtonStates.Enabled];
Taskbar1.ApplyButtonsChanges; //ボタンの状態を変更する
end;
進行状況バーを表示する¶
進行状況バーの状態を設定する¶
ProgressStateプロパティで状態を設定します。
TTaskBarProgressState.None
進行状況バーを表示しない
TTaskBarProgressState.Normal
通常の進行状況バー
TTaskBarProgressState.Indeterminate
周期的に動くプログレスバー
TTaskBarProgressState.Error
エラー状態
TTaskBarProgressState.Paused
一時停止状態
進行状況を設定する¶
ProgressMaxValueプロパティで進行状況バーが取り得る位置の範囲の上限を設定します。
Taskbar1.ProgressMaxValue := 10;
ProgressValueプロパティで現在位置を指定します。
Taskbar1.ProgressValue := 5;
縮小表示の表示範囲を設定する¶
フォームの一部分を縮小表示に表示することができます。
表示領域は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 XPで実行したとき