Workspace: IWorkspace;
Свойство Workspace возвращает рабочее пространство.
Для выполнения примера предполагается наличие в репозитории формы и рабочего пространства с идентификатором WORKSPACE. Разместите на форме компоненты Button, WorkspaceBox, UiWorkspaceObject с наименованиями «Button1», «WorkspaceBox1», «UiWorkspaceObject1» соответственно.
Добавьте ссылки на системные сборки: Andy, Drawing, Fore, ExtCtrls, Forms, MathFin, Metabase, Workspace.
Class TESTForm: Form
Button1: Button;
UiWorkspaceObject1: UiWorkspaceObject;
WorkspaceBox1: WorkspaceBox;
Sub IUIWORKSPACEEVENTARGS_WORKSPACEFormOnCreate(Sender: Object; Args: IEventArgs);
Var
Mb: IMetabase;
Workspace: IMetabaseObjectDescriptor;
Begin
// Получим рабочее пространство
Mb := MetabaseClass.Active;
Workspace := Mb.ItemById("WORKSPACE").Edit;
// Зададим параметры открытия объекта на форме
UiWorkspaceObject1.Active := True;
UiWorkspaceObject1.Object := Workspace;
UiWorkspaceObject1.OperationMode := UiMetabaseObjectOperationMode.Edit;
WorkspaceBox1.Source := UiWorkspaceObject1 As IWorkspaceSource;
End Sub IUIWORKSPACEEVENTARGS_WORKSPACEFormOnCreate;
// Выведем на печать рабочее пространство при нажатии на кнопку
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
Printer: IGxDocumentPrinter;
w: IGxDocument;
Begin
// Получим принтер для печати
Printer := GxPrinters.DefaultPrinter As IGxDocumentPrinter;
w := (UiWorkspaceObject1 As IDocumentSource).GetDocument;
// Выведем на печать рабочее пространство
w.Print(Printer, -1, -1, "");
End Sub Button1OnClick;
// Настроим событие, которое будет происходить после печати рабочего пространства
Sub UiWorkspaceObject1OnAfterPrintWorkspace(Sender: Object; Args: IUiWorkspaceEventArgs);
Var
ui: IWxWorkspace;
shapesCount, i: Integer;
shape: IWxShape;
Begin
// Ввдём наименование рабочего пространства для печати
Debug.WriteLine("OnAfterPrintWorkspace - Form");
// Получим рабочее пространство
ui := Args.Workspace As IWxWorkspace;
// Получим коллекцию фигур и их количество
With shapes: ui.Shapes Do
shapesCount := shapes.Count;
For i := 0 To shapesCount - 1 Do
// Получим текущую фигуру
shape := shapes.Item(i);
shape.Style.BeginUpdate;
// Сгенерируем случайный цвет и применим его к фигуре
With r: Math.RandBetween(0, 255) As Integer, g: Math.RandBetween(0, 255) As Integer, b: Math.RandBetween(0, 255) As Integer Do
shape.Style.BackgroundBrushBackColor := New GxColor.CreateRGB(r, g, b);
End With;
shape.Style.EndUpdate;
End For;
End With;
End Sub UiWorkspaceObject1OnAfterPrintWorkspace;
End Class TESTForm;
В результате выполнения примера при нажатии на кнопку будет печататься рабочее пространство с идентификатором WORKSPACE. После печати рабочего пространства цвет фигур будет изменён на случайный.
См. также: