![]() |
Windows SystemMessage Icons in 16x16 laden?
Hallo zusammen!
Ich möchte gern die Windows SystemMessage Icons (also Error, Warnung, Information und Frage) mit den Abmessungen 16x16 in ein TImage laden. Kann mir jemand sagen wie ich das anstelle? Ich habe es mit LoadIcon versucht, aber das TImage bleibt immer leer. :( mfG newbe |
Re: Windows SystemMessage Icons in 16x16 laden?
Wie hast du es denn gemacht ?
|
Re: Windows SystemMessage Icons in 16x16 laden?
so..
Delphi-Quellcode:
mfG newbe
Image4.Picture.Graphic := TIcon.Create;
TIcon(Image4.Picture.Graphic).Handle := LoadImage(0, IDI_ERROR, Image_Icon, 16, 16, 0); |
Re: Windows SystemMessage Icons in 16x16 laden?
Versuch es mal bitte so:
Delphi-Quellcode:
Ich glaube aber unter XP / Vista gibt es keine Grössen von 16*16 bei IDI_ERROR & Co.
procedure ...
var Icon: TIcon; begin Icon := TIcon.Create; try Icon.Handle := LoadImage(0, IDI_ERROR, Image_Icon, 16, 16, LR_SHARED); Image4.Picture.Assign(Icon); finally Icon.Freee; end; end; Die beginnen wohl erst bei 32x32. |
Re: Windows SystemMessage Icons in 16x16 laden?
Solche Sachen legt man am besten selbst zur Exe. MS ändert/löscht solche Ressourcen gerne mal bei neueren Windows-Versionen. Siehe auch die System-Animationen die ab Vista nicht mehr vorhanden sind un damit ab D2007 (D2006) selbst als AVI-Ressourcen mitgeliefert werden.
|
Re: Windows SystemMessage Icons in 16x16 laden?
Aber ich glaube, bei diesen Standardicons ist man ziemlich sicher. Die gibt es ja schon sein Windows 3.11. Und so lange man die Konstanten verwendet und nichts hardcodet, sollte da nichts passieren, da sich hin und wieder schon mal die Ressourcen IDs ändern. Würden sie da was ändern, würden das ja auch die ganzen Messageboxen betreffen.
|
Re: Windows SystemMessage Icons in 16x16 laden?
Zitat:
|
Re: Windows SystemMessage Icons in 16x16 laden?
Zitat:
Nur können sich halt, wie es MS beliebt, die Grösse und das Aussehen der Symbole ändern oder auch nicht. ;) Vorhanden sind sie schon. |
Re: Windows SystemMessage Icons in 16x16 laden?
@TurboPascal
Also der Code funktioniert erstmal, jedoch ist das Icon 32x32 und nicht 16x16 groß, so wie ich es gerne hätte. mfG newbe |
Re: Windows SystemMessage Icons in 16x16 laden?
Dann lad sie doch in 32x32 und stell das TImage auf 16x16, Stretch und Proportional auf true.
|
Re: Windows SystemMessage Icons in 16x16 laden?
@DeddyH
hab ich grad getestet, dann sehe ich nur ein viertel von dem Icon. mfG newbe |
Re: Windows SystemMessage Icons in 16x16 laden?
Ist das Icon 32*32 groß oder die verwendete Fläche? Teilweise werden 32*32 Icons geliefert auf denen das Icon eigentlich nur in 16*16 vorliegt.
|
Re: Windows SystemMessage Icons in 16x16 laden?
@Bernhard Geyer
Sehr gute Frage, ich kann sie leider nicht beantworten, da ich nicht weis, wo Windows das Icon herzaubert. Meine Intenet-Recherchen dazu haben nicht ergeben. In der Shell32.dll sind sie jedenfalls nicht. mfG newbe |
Re: Windows SystemMessage Icons in 16x16 laden?
Und mit einem kleinen Umweg über eine Bitmap?
Delphi-Quellcode:
Man könnte natürlich auch gleich die Bitmap in 16x16 deklarieren und per StretchBlt auf deren Canvas zeichnen, aber so wie oben ging das bei mir.
var Icon: TIcon;
Bmp: TBitmap; begin Icon := TIcon.Create; try Icon.Handle := LoadImage(0, IDI_ERROR, Image_Icon, 16, 16, LR_SHARED); Bmp := TBitmap.Create; try Bmp.Width := Icon.Width; Bmp.Height := Icon.Height; Bmp.Canvas.Draw(0,0,Icon); Image1.Picture.Assign(Bmp); finally Bmp.Free; end; finally Icon.Free; end; end; |
Re: Windows SystemMessage Icons in 16x16 laden?
@DeddyH, das wird wohl nur so funktionieren. Leider nur mit einem weissem Rand / Hintergrund vom Bitmap.
Auch ein Transparent stellen wir da nur ein schlechtes Ergebnis liefern. Ich habe selber feststellen müssen, dass das TIcon insbesondere bei Delphi6 so seine Eigenheiten hat. Wenn der TE nun aber 16x16 Icons will:
Delphi-Quellcode:
Ich sag es gleich, schick schaut es nicht aus. ;)
procedure TForm1.FormCreate(Sender: TObject);
const IcS = 16; var Icon: HICON; Bmp: TBitmap; begin Icon:= LoadImage(0, IDI_ERROR, Image_Icon, IcS, IcS, LR_SHARED); Bmp := TBitmap.Create; try Bmp.Width := IcS; Bmp.Height := IcS; Bmp.PixelFormat := pf24Bit; Bmp.Canvas.Brush.Color := Self.Color; Bmp.Canvas.FillRect(Bmp.Canvas.ClipRect); DrawIconEx(Bmp.Canvas.Handle,0,0,Icon,IcS,IcS,0,0,DI_NORMAL); Image1.Picture.Assign(Bmp); finally Bmp.Free; end; end; |
Re: Windows SystemMessage Icons in 16x16 laden?
@Turbo Pascal
Ich benötige die Icons für eine Baumansicht und ich arbeite mit Delphi6 mfG newbe |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:41 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