Для выполнения примера в репозитории предполагается наличие рабочего пространства с идентификатором «WSP».
Добавьте ссылки на системные сборки: Andy, Drawing, Metabase, Workspace.
Sub UserProc;
Var
MB: IMetabase;
ws: IWxWorkspace;
Rect: IWxRectangle;
Ellipse: IWxEllipse;
Style: IWxStyle;
Link: IWxLink;
Begin
Mb := MetabaseClass.Active;
ws := Mb.ItemById("WSP").Edit As IWxWorkspace;
ws.BeginUpdate;
// создание прямоугольника
Rect := ws.CreateRectangle;
Rect.PinPosition := New GxPointF.Create(20, 10);
Rect.Text := "Прямоугольник";
Style := ws.CreateStyle;
Style.Id := "MyStyle";
Style.BackgroundBrushForeColor := New GxColor.CreateRGB(153, 204, 255);
Style.BackgroundBrushForeTransparent := 10;
Style.ShadowBrushForeColor := GxColor.FromName("White");
Style.ShadowBrushBackColor := New GxColor.CreateRGB(204, 153, 255);
Style.ShadowBrushPattern := GxBrushPattern.Gradient;
Style.TextFontSize := 9;
Style.TextFontBrushColor := GxColor.FromName("Blue");
Rect.Style := Style;
// создание эллипса
Ellipse := ws.CreateEllipse;
Ellipse.PinPosition := New GxPointF.Create(80, 60);
Ellipse.Text := "Эллипс";
Ellipse.Style := ws.Styles.FindById("MyStyle");
// создание связи между объектами
Link := ws.CreateLink;
Link.Text := "Связь";
Link.TextVertOffset := -10;
Style := ws.CreateStyle;
Style.LinePenBeginWxCap := WxLineCap.ArrowRoundedFilled;
Style.LinePenColor := New GxColor.CreateRGB(128, 0, 255);
Style.LinePenWidth := 0.5;
Link.Style := Style;
ws.GlueConnectionPoints(Rect, 3, Link, 0);
ws.GlueConnectionPoints(Ellipse, 0, Link, 1);
ws.EndUpdate;
(ws As IMetabaseObject).Save;
End Sub UserProc;
После выполнения примера на рабочем пространстве будут созданы прямоугольник, эллипс и связь между ними, для каждого из которых будет применен заданный стиль:
См. также: