AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi PageControl: Fehlerhafte Imagedarstellung (Transparenz)
Thema durchsuchen
Ansicht
Themen-Optionen

PageControl: Fehlerhafte Imagedarstellung (Transparenz)

Ein Thema von mirage228 · begonnen am 31. Jul 2004 · letzter Beitrag vom 26. Sep 2004
Antwort Antwort
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#1

PageControl: Fehlerhafte Imagedarstellung (Transparenz)

  Alt 31. Jul 2004, 15:58
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:
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;
Den ImageIndex setze ich folgendermaßen:
Delphi-Quellcode:
// 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;
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).

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
Miniaturansicht angehängter Grafiken
icon_fehler.jpg  
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: PageControl: Fehlerhafte Imagedarstellung (Transparenz)

  Alt 5. Aug 2004, 17:46
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
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
vsandre

Registriert seit: 26. Sep 2004
7 Beiträge
 
#3

Re: PageControl: Fehlerhafte Imagedarstellung (Transparenz)

  Alt 26. Sep 2004, 16:55
Füge mal folgenden Code ein, befor du die Icons in die Liste lädst.
GlobalImageList.Masked := false; ciao
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#4

Re: PageControl: Fehlerhafte Imagedarstellung (Transparenz)

  Alt 26. Sep 2004, 19:24
Hi,

danke für Deine Antwort.

Jedoch funktioniert es leider nicht. Ich habe immer noch diesen weißen Hintergrund bei den Icons

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: PageControl: Fehlerhafte Imagedarstellung (Transparenz)

  Alt 26. Sep 2004, 19:26
Hast du Servicepack2? Wenn ja dann wurde vor kurzem gepostet wie man das lösen kann.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#6

Re: PageControl: Fehlerhafte Imagedarstellung (Transparenz)

  Alt 26. Sep 2004, 19:38
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
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: PageControl: Fehlerhafte Imagedarstellung (Transparenz)

  Alt 26. Sep 2004, 20:31
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...
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#8

Re: PageControl: Fehlerhafte Imagedarstellung (Transparenz)

  Alt 26. Sep 2004, 20:53
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
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz