windows 7 taskbar overlay icons
В продолжении предыдущей истории об отображении состояния и прогресса выполнения задачи на панели задачи в windows 7 средствами delphi реализуем отображение иконок (т.н. overlay icons). для этого добавим на нашу форму предыдущего примера компонент TImageList, для которго установим размеры изображений 24х24 и глубину цвета 32bit. Добавим 4 иконки соответственно для состояний, в том же порядке как они были определены в TTaskState, за исключением состояния NOPROGRESS, его мы пропустим. Таким образом, индексы иконок соответствуют индексам состояний в массиве TaskStates со смещением в 1. расширим описание класса формы TMainForm:
private procedure setOverlayIcon(newIndex : integer); public property overlayIndex : integer write setOverlayIcon;
естественно, обработчик события смены состояния в RadioGroupe изменим, добавив нехитрую строку
self.overlayIndex := stateSelect.ItemIndex;
Теперь осталось реализовать непосредственно процедуру установки или смены иконки. метод SetOverlayIcon интерфейса ITaskBar3 имеет три параметра, собственно handle приложения, hande иконки (HICON), и указатель на строку описания. Иконку получим из ImageList с помощью метода getIcon.
procedure TMainForm.setOverlayIcon(newIndex: Integer); var ico : TIcon; begin if not assigned(taskBarList) then exit; ico := TIcon.Create; imageList.GetIcon(newIndex-1,ico); taskBarList.SetOverlayIcon(handle, ico.Handle, pChar(taskStates[newIndex].name)); ico.Free; end;