<div dir="ltr"><div>Retrieving the bitmap from an image list in the way that you are should preserve transparency, if the transparency is correctly set in the image list itself.<br></div><div><br></div><div>However, assigning a bitmap to the Glyph property in this way invokes a behaviour in the Speedbutton class which may be interfering with things.</div><div><br></div><div>If your bitmap is a simple, single image (rather than one of the composite images that a speedbutton glyph can support) then you could try simply getting the bitmap directly into the glyph:<br><br><div>   ImageList.GetBitmap( N, SpeedButton.Glyph) );<br></div></div><div><br></div><div>This causes the ImageList to draw the requested image directly onto the canvas of the specified bitmap, bypassing the setter behaviour in the speedbutton.  if this is what is mangling the transparency then this may solve your problem.<br><br><br>hth<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 30 October 2015 at 15:51, Ross Levis <span dir="ltr">&lt;<a href="mailto:ross@stationplaylist.com" target="_blank">ross@stationplaylist.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-NZ" link="blue" vlink="purple"><div><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d">Using D7/themes, I have a TSpeedButton which is a toggle and I need to display 2 different glyphs in a TSpeedButton based on whether the button was clicked or right-clicked, as they do 2 slightly different things.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d">So I need to assign a glyph to the button at run time, which works, but nothing I do makes the image transparent. There is always a white square with the icon in the middle. It only looks correct if I assign one of the images to the Glyph property at design time.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d">I use a TImageList to store the 2 images, and assign them like this as required.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d">BitMap := TBitMap.Create;<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d">ImageList.GetBitmap(n,BitMap);<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d">SpeedButton.Glyph := BitMap;<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d">BitMap.Free;<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d">where n is 0 or 1.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d">I&#39;ve tried setting Bitmap.Transparent to true and other combinations like TransparentMode and TransparentColor but nothing makes any difference.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d">There is some sort of transparency happening since the images have quite a colorful background but this appears as white on the button.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d">As a test I assigned the image from a filename Button.Glyph.LoadFromFile() and this works correctly and looks good, but I don&#39;t want to distribute BMP files separately.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d">A possible alternative I haven’t tried is embedding the 2 images as a resource in the EXE file and using Button.Glyph.LoadFromResourceName (or ResourceID), but that seems a lot of work.  I thought I would try here to see if anyone knows how to resolve the current method.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d">Cheers,<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:12.0pt;color:#1f497d">Ross.<u></u><u></u></span></p></div></div><br>_______________________________________________<br>
NZ Borland Developers Group - Delphi mailing list<br>
Post: <a href="mailto:delphi@listserver.123.net.nz">delphi@listserver.123.net.nz</a><br>
Admin: <a href="http://delphi.org.nz/mailman/listinfo/delphi" rel="noreferrer" target="_blank">http://delphi.org.nz/mailman/listinfo/delphi</a><br>
Unsubscribe: send an email to <a href="mailto:delphi-request@listserver.123.net.nz">delphi-request@listserver.123.net.nz</a> with Subject: unsubscribe<br></blockquote></div><br></div>