![]() |
PageControl: Fehlerhafte Imagedarstellung (Transparenz)
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich habe auf meinem Form ein PageControl, wo ich in den Tabs Bilder anzeigen lassen. Die Bilder sind vom jeweiligen Dateityp des geöffneten Dokumentes. Ich habe dazu eine ImageList, wo alle System-Icons drin sind. Dazu verwende ich folgenden Code:
Delphi-Quellcode:
Den ImageIndex setze ich folgendermaßen:
var
SHFileInfo: TSHFileInfo; SysIcons : THandle; begin GlobalImageList := TImageList.Create(Self); // <-- die Variable ist nicht wirklich "global" ;) try SysIcons := SHGetFileInfo(PChar(copy(ParamStr(0), 1, 3)), 0, SHFileInfo, SizeOf(SHFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON or SHGFI_ICON); finally DestroyIcon(SHFileInfo.hIcon); end; GlobalImageList.Handle := SysIcons; GlobalImageList.ShareImages := True; // ... Documents.Images := GlobalImageList; // <-- Zuweisung an das PageControl end;
Delphi-Quellcode:
Nun, die Icons werden auch angezeigt (sie sind auch korrekt), aber die Hintergrundtransparenz bei diesen wird in "weiss" umgewandelt. Bei aktiviertem Xp-Style fällt dies zwar nicht auf, jedoch sieht ohne XP-Style nicht mehr schön aus. (s. Anhang).
// Die Funktion GetAssociatedIconIndex aus einer anderen Unit:
function GetAssociatedIconIndex(const AExtension: string; ASmall: Boolean): Integer; var Info: TSHFileInfo; Flags: Cardinal; begin if ASmall then Flags := SHGFI_ICON or SHGFI_SMALLICON or SHGFI_USEFILEATTRIBUTES else Flags := SHGFI_ICON or SHGFI_LARGEICON or SHGFI_USEFILEATTRIBUTES; SHGetFileInfo(PChar(AExtension), FILE_ATTRIBUTE_NORMAL, Info, SizeOf(TSHFileInfo), Flags); Result := Info.iIcon; end; // Die Funktion, die den ImageIndex setzt procedure TMainForm.UpdateFile(Index: Integer); begin if IsIndexValid(Index) and (vcTabIcon in Core.Settings.Views) then Documents.Pages[Index].ImageIndex := GetAssociatedIconIndex(ExtractFileExt(Core.Documents[Index].FileName), True) else Documents.Pages[Index].ImageIndex := -1; end; Ich habe die Vermutung, dass es an einer fehlerhaften ImageList Implementierung der VCL liegt (Habe ich in einem anderen Thread [glaube ich] gelesen). Wie kann ich dieses Problem am Besten lösen? mfG mirage228 |
Re: PageControl: Fehlerhafte Imagedarstellung (Transparenz)
Weiß niemand eine Lösung?
Ich würde zwar drüber hinwegkommen, dass da so ein weiß im Hintergrund ist, aber eine Lösung würde mich schon interessieren... mfG mirage228 |
Re: PageControl: Fehlerhafte Imagedarstellung (Transparenz)
Füge mal folgenden Code ein, befor du die Icons in die Liste lädst.
Delphi-Quellcode:
ciao
GlobalImageList.Masked := false;
|
Re: PageControl: Fehlerhafte Imagedarstellung (Transparenz)
Hi,
danke für Deine Antwort. Jedoch funktioniert es leider nicht. Ich habe immer noch diesen weißen Hintergrund bei den Icons :-( mfG mirage228 |
Re: PageControl: Fehlerhafte Imagedarstellung (Transparenz)
Hast du Servicepack2? Wenn ja dann wurde vor kurzem gepostet wie man das lösen kann.
|
Re: PageControl: Fehlerhafte Imagedarstellung (Transparenz)
Hi,
das Probleme hatte ich schon im Juli, wo das Sp2 nicht draußen war :-( Auch mit dem Code aus dem anderen Thread funktioniert es nicht... mfG mirage228 |
Re: PageControl: Fehlerhafte Imagedarstellung (Transparenz)
Hmm, ich hatte das Problem neulich mit den Icons eines MainMenus. Nachdem ich ein Icon zur ImageList hinzugefügt hatte, war der Hintergrund ALLER Icons plötzlich nicht mehr transparent sondern... Rosa. Irgendwann hab ichs aufgegeben an den ImageList-Einstellungen rumzufummeln und hab die Komponente gelöscht und eine neue mit gleichem Namen eingefügt. Dann ging's plötzlich wieder (ohne die Standardeinstellungen zu ändern).
Mit dynamisch geladenen Icons geht es leider nicht so einfach :( Nicht einmal 16-Farben Bitmaps will er jetzt richtig anzeigen... |
Re: PageControl: Fehlerhafte Imagedarstellung (Transparenz)
Naja,
die Transparenz wird bei mir aber nicht Rosa (wie in den anderen Threads), sondern in Weiss dargestellt. Auch weiss ich nicht, in weit das einen Unterschied macht, ob ich normale Icons oder Systemicons benutze. Ich nehme an, dass die VCL(-ImageList) nicht mit dem Alpha-Kanal der Icons aus XP zurecht kommt oder so... Leider kann ich die ImageList nicht vom Form entfernen und wiederhinzufügen, da die ImageList nur als Variable existiert. :( mfG mirgae228 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz