![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с переменной
paule © (2004-12-21 11:34:00)Вот код. Пишу графический редактор.
begin
WorkList.Canvas.DrawFocusRect(R);
BMCopy := TBitMap.Create; //Создаем переменную которую поместим в буфер
{Задаем размеры этой переменной}
BMCopy.Width := R.Right - R.Left;
BMCopy.Height := R.Bottom - R.Top;
try
//Копируем содержимое выделенной области в эту переменную
BMCopy.Canvas.CopyRect(Rect(0, 0, BMCopy.Width, BMCopy.Height),RectMap. Canvas, R);
WorkList.Canvas.DrawFocusRect(R);
ClipBoard.Assign(BMCopy); //Помещаем переменную в буфер
if (Sender as TMenuItem).Name = 'MCut' then
begin
// Если выбран пункт меню Вырезать, то закрашиваем выбранную область белым цветом
WorkList.Canvas.Brush.Color := clWhite;
WorkList.Canvas.FillRect(R);
end;
finally
BMCopy.Free;
end;
Один раз процедура отрабатывает нормально.
Второй раз вылетает на строке BMCopy := TBitMap.Create; с ошибкой о том что доступ к памяти запрещен и т.д.
а в чем проблема то. Я же её освобождаю перед этим. BMCopy.Free;
olookin (2004-12-21 18:21:00) [1]А если попробовать закомментировать строку ClipBoard.Assign(BMCopy);? Почему то мне кажется, что это блокирует BMCopy...
Denis_AC (2004-12-21 11:49:00) [2]Если BMCopy глобальная то не проще ли создать её один раз, а BMCopy.Free;
Замени BMCopy.FreeImage