938_____________________________________________Глава 15

Описание

Свойство Canvas типа TCanvas используется для рисования пером Pen и ки-
стью Brush, для модификации изображения, наложения друг на друга нескольких
изображений.

В компоненте типа TImage канва может использоваться только в случае, если
в свойство Picture загружена битовая матрица или ничего не загружено. Если в
Picture находится объект типа, отличного от TBitMap. то при обращении к Canvas
генерируется исключение EInvalidOperation. Если же в Picture находится бито-
вая матрица, то Canvas можно использовать для редактирования изображения,
например, для добавления в изображение надписей методом TextOut.

Capacity__________________________________________

Количество элементов массива указателей, которые могут храниться в объекте
класса TList

Классы TList, TStringList

Определение

_property int Capacity

Описание

Свойство Capacity можно задавать, чтобы определить число указателей, кото-
рые могут храниться в объекте класса TList. Если при увеличении Capacity оказы-
вается, что ресурсы памяти исчерпаны, генерируется исключение EOutOfMemory.

Свойство Capacity отличается от близкого ему свойства Count. Capacity пока-
зывает, сколько указателей может храниться в массиве, т.е. емкость списка, a Co-
unt показывает, сколько указателей в действительности хранится в массиве. Поэ-
тому значение Capacity всегда не меньше значения Count.

При добавлении в массив нового элемента Count автоматически увеличивает-
ся на 1. Если при этом значение Count превышает значение Capacity, то Capacity
тоже автоматически увеличивается, причем с запасом (обычно запас равен 3). Так
что свойство Capacity вообще можно нигде в приложении не задавать. Смысл зада-
ния Capacity заключается только в том, чтобы предотвратить слишком частое пе-
рераспределение памяти при добавлении новых элементов списка.

При удалении элементов списка Count автоматически уменьшается, а значе-
ние Capacity остается неизменным. Таким образом, при сокращении длины спис-
ка получаются излишние затраты памяти. В эти случаях целесообразно умень-
шить Capacity до значения Count (если не планируется в ближайшее время нового
увеличения числа элементов).

Если задать значение Capacity меньшее, чем Count, генерируется исключение
EListError с сообщением: «List capacity out of bounds [...]» («Емкость списка вне допус-
тимых пределов»). В квадратных скобках указывается значение Count.

Очистка списка методом Clear сбрасывает Capacity на нуль.

Значение Capacity может быть увеличено методом Expand.

Пример

TList *List = new TList ();

List->Clear() ;

List-capacity = 5;

// Тут List->Count = 0 и List-Capacity = 5

for (int 1=1; I <= 5; I++)
List->Add(...);