Excel ЧаВо

Как сгруппировать несколько объектов Shape на листе?


// Сгруппируем все объекты Shapes на листе

AShape := (ASheet.DrawingObjects(EmptyParam, lcid) as DrawingObjects).ShapeRange.Group; AShape.Name := 'MyGroup1';

// группировка через вариантный массив

V := VarArrayCreate([1, 2], varVariant); // !!!

// сгруппируем 2-й и 4-й Shape

V[1] := 2; V[2] := 4; AShape := ASheet.Shapes.Range[V].Group; AShape.Name := 'MyGroup2';

// Если заранее известно, какие Shape будут сгруппированы,

// то можно и так

AShape := ASheet.Shapes.Range[VarArrayOf([2, 4])].Group; AShape.Name := 'MyGroup3';

// Теперь, на закуску, через Selection

// Выберем 2-й, 3-й и 4-й Shape

ASheet.Shapes.Item(2).Select(True); ASheet.Shapes.Item(3).Select(False); ASheet.Shapes.Item(4).Select(False); // сгруппируем выделенные Shape

AShape := (XL.Selection[lcid] as DrawingObjects).ShapeRange.Group; AShape.Name := 'MyGroup4';

// Разгруппировать

AShape.Ungroup;

Заметьте, что после того, как объекты Shape были сгруппированы, их количество на листе (Shapes.Count) уменьшится. После "группировки" можно обратиться к отдельному Shape, включенному в группу, используя коллекцию GroupItems объекта Shape, полученного в результате группировки.

Group Method

Regroup Method

Ungroup Method

GroupItems Property



Содержание раздела