Форум: "Начинающим";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];
ВнизРазрушается ли 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.04 c