Во-первых:
1. При создании формы2 Form2Create Вы создаете битмап Bild:=TBitMap.Create;
2. При скриншоте вы опять создаете битмап Result := TBitMap.Create; И присваиваете новый битмап к Bild
3. При уничтожении формы Вы удаляете созданный битмап Bild.Free;
Проверяем работу:
Тест №1
1. Запуск программы -> создали битмап
2. Закрыли программу -> удалили битмап
Тест №2
1. Запуск программы -> создали битмап
2. Сделали скриншот -> создали еще битмап и присвоили ссылку на него в bild
3. Закрыли программу -> удалили битмап
Вопрос: сколько битмапов создано и сколько удалено? А если скриншот сделали 10 раз, сколько создано и сколько битмапов удалено?
Во-вторых: Проверьте что у Вас скриншотится:
Код:
function CaptureScreenRect(aRect: TRect): TBitMap;
var
ScreenDC: HDC;
begin
Result := TBitMap.Create;
with Result, aRect do
begin
// Устанавливаем размеры выводимого изображения равными выделенной области
Width := Right - Left;
Height := Bottom - Top;
// Получаем Хендл рабочего окна
ScreenDC := GetDC(0);
try
// и копируем нужную область экрана
BitBlt(Canvas.Handle, 0, 0, Width, Height, ScreenDC, Left, Top, SRCCOPY);
finally
ReleaseDC(0, ScreenDC);
end;
end;
result.SaveToFile('<some_file_name.bmp>'); // <<< посмотрите что сохранится на диск
end;