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

Вниз

Работа с HBitmap   Найти похожие ветки 

 
NAlexey ©   (2003-02-14 17:19) [0]

Подскажите пожалуйста как правильно работать с HBitmap?
Пользуюсь Bitmap.Handle - вылетает сообщение Out of resources.
Вроде бы везде делаю ReleaseHandle...


 
MBo ©   (2003-02-14 17:26) [1]

код покажи


 
NAlexey ©   (2003-02-17 08:53) [2]

function TForm1.GetHGlyph(Index: integer): HBitmap;
var
Pict: TBitmap;
begin
if Index > -1 then
begin
Pict := TBitMap.Create;
try
if Index >= Val then
Pict.Assign(Collection.Items[Index].Glyph)
else
ImageList.GetBitmap(Index, Pict);
Result := Pict.Handle;
finally
Pict.ReleaseHandle;
Pict.Free;
end;
end else
Result := 0;
end;


 
MBo ©   (2003-02-17 09:13) [3]

procedure TForm1.Button2Click(Sender: TObject);

function loadhbmp(filename:string):hbitmap;
var
b:tbitmap;
begin
b:=tbitmap.create;
b.LoadFromFile(filename);
Result:=b.ReleaseHandle;
b.free;
end;

begin
image1.Picture.Bitmap.Handle:=loadhbmp("e:\4.bmp");
end;


 
NAlexey ©   (2003-02-17 09:51) [4]

Спасибо, тогда в тему задам еще вопрос.
Почему BitBtn.Glyph, не реагирует на присвоение пустого Handle, вернее реагирует но со второго раза? Т.е если моя ф-ция не находит картинку, она просто создает пустой TBitMap и присваиват его Result, в отладчике я вижу, что на выходе Resul = 0,
а когда делаю BitBtn.Glyph.Hanle := GetHBitMap(1);
Handle BitBtn.Glyph имеет значение отличное от 0, одним словом предыдущая картинка не затирается, хотя с Image.Picture все работает на ура. А вот если вторично присвоить BitBtn.Glyph.Hanle пустое значение, то затирается. В чем здесь дело? Что присваивать BitBtn.Glyph.Handle чтобы изображение было пустым?


 
MBo ©   (2003-02-17 10:05) [5]

>вот если вторично
у меня такого не происходит.
а
if hmbp=0 then
bitbtn1.Glyph:=nil;
устроит?


 
NAlexey ©   (2003-02-17 10:21) [6]

>у меня такого не происходит.
Интересно...
Так это понятно что если Handle = 0 то BitBtn.Glyph := nil; Вот в этом мой вопрос и состоит: как работать с Hbitmap?:
var
hmbp: Hbitmap;
begin
hmbp := GetHBitmap(1);
if hmbp=0 then bitbtn1.Glyph :=nil else bitbtn1.Glyph.Handle := hmbp;
end;
Можно так? Если можно, то что делать в конце с hmbp? Потому как повторюсь: BitBtn.Glyph.Handle := GetHBitmap(1); Ф-ция то возвращает 0, а BitBtn.Glyph.Handle имеет значение отличное от 0, такое ощущение что оно переприсваиватся...
Пример:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
BitBtn1.Glyph.Handle := 0;
if BitBtn1.Glyph.Handle = 0 then
BitBtn1.Glyph := nil;
end;
Не работает... В условие заходит со 2-го раза.



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
3-2786
VladN
2003-05-14 13:30
2003.06.02
Как в SQL запросе, сортировка в обратном порядке?


3-2805
Dion
2003-05-15 06:18
2003.06.02
Как создать файл (*.dbf) на диске, данные из DBGrid -> в файл


3-2742
Непоседа
2003-05-13 09:56
2003.06.02
Как обойти пароль на файле данных типа *.db?


3-2738
АлексейТ
2003-05-13 00:07
2003.06.02
Работа с BDE


1-2958
GenezZ
2003-05-17 03:53
2003.06.02
Вопрос про размеры.