Forum Replies Created
-
AuthorPosts
-
searcherParticipantМожно использовать событие OnPaint, которое есть у кнопки. Демка.
большое спасибо! как всегда на высоте <img src="style_emoticons//rolleyes.gif” style=”vertical-align:middle” emoid=”:roll:” border=”0″ alt=”rolleyes.gif” /> я тож пробовал отрисововать в событии OnPaint но только не через BMP
searcherParticipantспасибо, пашет. но все же так и не понял почему компонент себя так ведет
searcherParticipantc downto тот же эффект <img src="style_emoticons//sad.gif” style=”vertical-align:middle” emoid=”:(” border=”0″ alt=”sad.gif” />
Если честно, у вас код некорректен. Очень распространенная ошибка.
И “итем=компонент?” тут совершенно не при чем.
Пользуйтесь таким кодом:
CODEwhile Items.Count > 0 do
Items.Delete(0);такой код конечно будет без ошибок НО мне нужно пройтись по всем итемам проверь св-во и только нужный удалить
searcherParticipantБросьте на форму любых несколько контролов, и попробуйте выполнить такой код:
<img src="style_emoticons//wink.gif” style=”vertical-align:middle” emoid=”;)” border=”0″ alt=”wink.gif” />ну тут понятно экзепшен будет, т.е. итемы=компонент? тогда нужно проходиться по списку down to?
searcherParticipantВ последних версиях делфи весь этот код можно заменить таким:
CODEprocedure ConvertIcon2Bitmap(Icon: TIcon; var Bitmap: TBitmap);
var
IconInfo: TIconInfo;
begin
GetIconInfo(Icon.Handle, IconInfo);
Bitmap.Handle := IconInfo.hbmColor;
Bitmap.MaskHandle := IconInfo.hbmMask;
end;
Как говорится, почувствуйте разницу.разницу почувствовал, гороаздо лучше стало, но вот все равно есть икажения <img src="style_emoticons//wacko.gif” style=”vertical-align:middle” emoid=”:wacko:” border=”0″ alt=”wacko.gif” /> пока что делаю так, гружу в AlphaIMageList от туда забираю в bitmap и уже дальше его юзаю
searcherParticipantCODEprocedure ConvertIcon2Bitmap(Icon : TIcon;
TransColor : TColor;
var Bitmap : TBitmap);
{ Convert the supplied icon into a proper bitmap for Delphi button
glyphs and return in Bitmap. Use TransColor for the transparent
color in the Bitmap. See the demo program for examples on usage. }
var
i,j : integer; { loop control variables }
IconInfo : TIconInfo; { information about the icon }
ANDmask : TBitmap; { the AND mask of the icon }
OldMaskColor : TColor; { keep track of last color in AND mask }
NewMaskColor : TColor; { the current color in the AND mask }
begin { convertIcon2Bitmap }
{ create bitmap for the icon AND mask information }
ANDmask := TBitmap.Create;
try
{ Get the icon information and place the AND mask into
the appropriate TBitmap structure }
GetIconInfo(Icon.Handle,IconInfo);
ANDmask.Handle := IconInfo.hbmMask;
{ Set the returning bitmap size and draw the icon onto it }
Bitmap.Width := ANDmask.Width;
Bitmap.Height := ANDmask.Height + 1; { add one line onto the bottom
of the bitmap to keep the
Delphi glyph happy }
Bitmap.Canvas.Draw(0,0,Icon);{ Where the ANDmask bitmap is transparent, place the transparent color }
Bitmap.Canvas.Pen.Color := TransColor;
for j := 0 to ANDmask.Height – 1 do
begin { for j }
OldMaskColor := clRed; { start off with a color that is not in the mask }
Bitmap.Canvas.MoveTo(0,j); { move the the first pixel of this row }
for i := 0 to ANDmask.Width – 1 do
begin { for i }
NewMaskColor := GetPixel(ANDmask.Canvas.Handle,i,j); { get pixel color }
if NewMaskColor OldMaskColor then
begin { NewMaskColor OldMaskColor }
{ if the pixel is not the same color as the last pixel then we
have a trasition — either from transparent or to transparent
colors }
OldMaskColor := NewMaskColor;
if NewMaskColor = clWhite then
{ transition from solid to transparent — move to the first
pixel of the transparent region }
Bitmap.Canvas.MoveTo(i,j)
else
{ transition from transparent to solid — draw a line through
the transparent region in the transparent color }
Bitmap.Canvas.LineTo(i,j);
end; { NewMaskColor OldMaskColor }
end; { for i }
{ if the line ends with a transparent color then draw a line through
the transparent region in the transparent color }
if NewMaskColor = clWhite then
Bitmap.Canvas.LineTo(ANDmask.Width,j);
end; { for j }{ place an extra line at the bottom of the bitmap so that the
Delphi TSpeedButton transparent color works correctly }
Bitmap.Canvas.MoveTo(0,Bitmap.Height – 1);
Bitmap.Canvas.LineTo(Bitmap.Width,Bitmap.Height – 1);
finally
{ Release the memory for the icon information }
ANDmask.Free;
end; { try..finally }
end; { ConvertIcon2Bitmap }самый нормальный вариант кода…но и он так себе
searcherParticipant -
AuthorPosts