Einzelnen Beitrag anzeigen

CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#1

TJumpList Icon-Index oder: Wie verändere ich eine Komponente am besten?

  Alt 15. Apr 2019, 11:42
Ich würde bei der TJumpList Komponente gerne ein Icon für einen Eintrag angeben. Das geht von Haus aus nur über einen Pfad zu einer Datei, die das Icon enthält. Leider kann man jedoch kein Icon-Index angeben. Es wird automatisch der erste Icon der Datei verwendet.

Diese Einschränkung ist völlig unnötig, da das Icon intern per SetIconLocation festgelegt wird und Embarcadero sich unsinnigerweise dazu entschlossen hat, den Index fix auf 0 zu setzen statt einen variablen Parameter zu verwenden:
Delphi-Quellcode:
//Vcl.Jumplist
function TJumpListItem.GetAsIShellLink: IShellLink;
begin
  [...]
    if FIcon <> 'then
      CheckError(Result.SetIconLocation(PWideChar(FIcon), 0), SJumplistsItemErrorSettingicon)
    else // use the current executable Icon
      CheckError(Result.SetIconLocation(PWideChar(Paramstr(0)), 0), SJumplistsItemErrorSettingicon);
end;
Ich will natürlich nicht den Original-Code verändern, weiß leider aber auch nicht, wie ich in so einem Fall eine eigene Komponente korrekt ableiten muss. Eine TMyJumpList ableiten und Änderungen daran vornehmen, ist kein Problem. Aber hier betrifft es ja TJumpListItem bzw. übergeordnet dann TCustomJumpList, TJumpCategories, TJumpCategoryItem und TJumpListCollection (wo GetAsIShellLink aufgerufen wird).

Muss ich all diese Klassen ebenfalls ableiten und alle Funktionen überschreiben, wo GetAsIShellLink irgendwie involviert ist? Oder wie kann man in so einem verschachtelten Fall möglichst geschickt Änderungen vornehmen?
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.

Geändert von CodeX (15. Apr 2019 um 11:57 Uhr)
  Mit Zitat antworten Zitat