Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.20;
Скачать: CL | DM;

Вниз

Разрушается ли Glyph у SpeedButton?   Найти похожие ветки 

 
Ega23 ©   (2006-07-28 13:39) [0]

В ран-тайме создаётся N экземпляров TSpeedButton. Из БД беруться Caption и картинка (bmp).

 With adsTemp do
  begin
   while(not Eof) do
   begin
     btn.Caption  := adoq.fieldbyName("CLSMetNam").AsString;

     btn.Visible  := true;
     btn.Enabled  := true;
     btn.Flat     := false;

     if not fieldbyName("CLSMetImg").IsNull then
      begin
       ms:=TMemoryStream.Create;
       try
         TBLOBField(fieldbyName("CLSMetImg")).SaveToStream(ms);
         ms.Position:=0;
         bmp:=TBitmap.Create;
         bmp.LoadFromStream(ms);
         btn.Glyph:=bmp;
       finally
         ms.Free;
       end;
      end;

      btn.Layout:=blGlyphLeft;


Здесь bmp:TBitmap, btn:TSpeedButton, adsTemp:TDataSet

Убиваются кнопки потом сами.
Вопрос: надо ли им специально bmp разрушать, или TSpeedButton сделает это "автоматом"?


 
Мефисто   (2006-07-28 13:48) [1]

bmp :=TBitmap.Create;

А уничтожить?

Наверно так лучше?
btn.Glyph.Assign(bmp);

TSpeedButton.Glyph - высвобождает ресурсы сам без участия программиста.


 
begin...end ©   (2006-07-28 13:49) [2]

> Ega23 ©   (28.07.06 13:39) [0]

> bmp:=TBitmap.Create;
> bmp.LoadFromStream(ms);
> btn.Glyph:=bmp;

btn.Glyph.LoadFromStream(ms);

?


 
Ega23 ©   (2006-07-28 13:51) [3]


> btn.Glyph.LoadFromStream(ms);
>


Ага, я уже сам допёр...  :)


 
Ega23 ©   (2006-07-28 14:07) [4]

Другой вопрос: а как его просто очистить? Т.е. есть SpeedButton.Glyph, непустой.
Нужно его убрать.
SpeedButton.Glyph:=nil  корректно, или нет?


 
Мефисто   (2006-07-28 14:13) [5]

А почему бы и нет

procedure TButtonGlyph.SetGlyph(Value: TBitmap);
var
 Glyphs: Integer;
begin
 Invalidate;
 FOriginal.Assign(Value);
 if (Value <> nil) and (Value.Height > 0) then
 begin
   FTransparentColor := Value.TransparentColor;
   if Value.Width mod Value.Height = 0 then
   begin
     Glyphs := Value.Width div Value.Height;
     if Glyphs > 4 then Glyphs := 1;
     SetNumGlyphs(Glyphs);
   end;
 end;
end;



Страницы: 1 вся ветка

Текущий архив: 2006.08.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.055 c
15-1153971454
Nic
2006-07-27 07:37
2006.08.20
Вопросик по php


1-1152179934
Dmitry_177
2006-07-06 13:58
2006.08.20
Как можно прочитать сообщения из окна icq?


6-1142006821
safo
2006-03-10 19:07
2006.08.20
Существуют ли функции для работы с файлом HOSTS?


15-1153553033
Pazitron_Brain
2006-07-22 11:23
2006.08.20
Посоветуйте КПК


2-1152303671
Pavia
2006-07-08 00:21
2006.08.20
Спец эфекты.