Главная страница
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.041 c
1-1151967710
MNC
2006-07-04 03:01
2006.08.20
фокус на первый символ в РичЕдит


15-1151082948
TUser
2006-06-23 21:15
2006.08.20
Для любителей коммунизъъма


1-1151996902
JohnKorsh
2006-07-04 11:08
2006.08.20
Измерение интервалов, меньших 1 mS.


3-1150282694
Olleg_ator
2006-06-14 14:58
2006.08.20
Проблема с DBF


15-1153837535
Parus
2006-07-25 18:25
2006.08.20
Сайт