95a2f54683
git-svn-id: https://svn.code.sf.net/p/apophysis7x/svn/trunk@1 a5d1c0f9-a0e9-45c6-87dd-9d276e40c949
117 lines
2.4 KiB
ObjectPascal
117 lines
2.4 KiB
ObjectPascal
unit dwOverlayIcon;
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, ImgList,
|
|
dwTaskbarComponents;
|
|
|
|
type
|
|
TdwOverlayIcon = class(TdwTaskbarComponent)
|
|
private
|
|
FImages: TCustomImageList;
|
|
FImageIndex: Integer;
|
|
FHint: WideString;
|
|
procedure SetImages(const Value: TCustomImageList);
|
|
procedure SetImageIndex(const Value: Integer);
|
|
function DoShowOverlay: Boolean;
|
|
procedure SetHint(const Value: WideString);
|
|
protected
|
|
function DoInitialize: Boolean; override;
|
|
procedure DoUpdate; override;
|
|
public
|
|
constructor Create(AOwner: TComponent); override;
|
|
destructor Destroy; override;
|
|
|
|
published
|
|
property Images: TCustomImageList read FImages write SetImages;
|
|
property ImageIndex: Integer read FImageIndex write SetImageIndex;
|
|
property Hint: WideString read FHint write SetHint;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
SysUtils, Graphics;
|
|
|
|
{ TdwOverlayIcon }
|
|
|
|
constructor TdwOverlayIcon.Create(AOwner: TComponent);
|
|
begin
|
|
inherited Create(AOwner);
|
|
|
|
FImages := nil;
|
|
FImageIndex := -1;
|
|
FHint := '';
|
|
end;
|
|
|
|
destructor TdwOverlayIcon.Destroy;
|
|
begin
|
|
inherited Destroy;
|
|
end;
|
|
|
|
function TdwOverlayIcon.DoInitialize: Boolean;
|
|
begin
|
|
Result := DoShowOverlay;
|
|
end;
|
|
|
|
function TdwOverlayIcon.DoShowOverlay: Boolean;
|
|
var
|
|
Icon: TIcon;
|
|
begin
|
|
if CheckWin32Version(6, 1) and (TaskbarList3 <> nil) then
|
|
begin
|
|
if (FImages = nil) or (FImageIndex < 0) or (FImageIndex >= FImages.Count) then
|
|
begin
|
|
TaskbarList3.SetOverlayIcon(TaskBarEntryHandle, 0, nil);
|
|
Result := True;
|
|
end
|
|
else
|
|
begin
|
|
Icon := TIcon.Create;
|
|
try
|
|
FImages.GetIcon(FImageIndex, Icon);
|
|
TaskbarList3.SetOverlayIcon(TaskBarEntryHandle, Icon.ReleaseHandle, PWideChar(FHint));
|
|
Result := True;
|
|
finally
|
|
Icon.Free;
|
|
end;
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
Result := False;
|
|
end;
|
|
end;
|
|
|
|
procedure TdwOverlayIcon.DoUpdate;
|
|
begin
|
|
DoShowOverlay;
|
|
end;
|
|
|
|
procedure TdwOverlayIcon.SetHint(const Value: WideString);
|
|
begin
|
|
if FHint <> Value then
|
|
begin
|
|
FHint := Value;
|
|
SendUpdateMessage;
|
|
end;
|
|
end;
|
|
|
|
procedure TdwOverlayIcon.SetImageIndex(const Value: Integer);
|
|
begin
|
|
if FImageIndex <> Value then
|
|
begin
|
|
FImageIndex := Value;
|
|
SendUpdateMessage;
|
|
end;
|
|
end;
|
|
|
|
procedure TdwOverlayIcon.SetImages(const Value: TCustomImageList);
|
|
begin
|
|
FImages := Value;
|
|
SendUpdateMessage;
|
|
end;
|
|
|
|
end.
|