namespace com::sun::star { namespace awt { class XControlModel; } namespace container { class XNameContainer; } namespace frame { class XModel; } namespace uno { class XComponentContext; }
}
namespace oox { class BinaryInputStream; class GraphicHelper; class PropertyMap; class StorageBase;
}
namespace oox::ole {
/** Common properties for all controls that are part of a VBA user form or of
another container control in a VBA user form. */ class VbaSiteModel final
{ public: explicit VbaSiteModel();
~VbaSiteModel();
/** Allows to set single properties specified by XML token identifier. */ void importProperty( sal_Int32 nPropId, const OUString& rValue ); /** Imports the site model data from the passed input stream. */ bool importBinaryModel( BinaryInputStream& rInStrm ); /** Moves the control relative to its current position by the passed distance. */ void moveRelative( const AxPairData& rDistance );
/** Returns the programmatical name of the control. */ const OUString& getName() const { return maName; } /** Returns the position of the control in its parent. */ const AxPairData& getPosition() const { return maPos; } /** Returns the unique identifier of this control. */
sal_Int32 getId() const { return mnId; } /** Returns true, if this control is a container control. */ bool isContainer() const; /** Returns the length of the stream data for stream based controls. */
sal_uInt32 getStreamLength() const; /** Returns the name of the substorage for the container control data. */
OUString getSubStorageName() const; /** Returns the tab index of the control. */
sal_Int16 getTabIndex() const { return mnTabIndex; }
/** Tries to create the control model according to the site model. */
ControlModelRef createControlModel( const AxClassTable& rClassTable ) const; /** Converts all form site properties. */ void convertProperties(
PropertyMap& rPropMap, const ControlConverter& rConv,
ApiControlType eCtrlType,
sal_Int32 nCtrlIndex ) const; const OUString& getControlSource() const { return maControlSource; } const OUString& getRowSource() const { return maRowSource; } private:
OUString maName; ///< Name of the control.
OUString maTag; ///< User defined tag.
OUString maToolTip; ///< Tool tip for the control.
OUString maControlSource; ///< Linked cell for the control value in a spreadsheet.
OUString maRowSource; ///< Source data for the control in a spreadsheet.
AxPairData maPos; ///< Position in parent container.
sal_Int32 mnId; ///< Control identifier.
sal_Int32 mnHelpContextId; ///< Help context identifier.
sal_uInt32 mnFlags; ///< Various flags.
sal_uInt32 mnStreamLen; ///< Size of control stream data.
sal_Int16 mnTabIndex; ///< Tab order index.
sal_uInt16 mnClassIdOrCache; ///< Class name identifier or GUID cache index.
sal_uInt16 mnGroupId; ///< Group identifier for grouped controls.
};
/** Imports the model from the passed stream or storage, depending on the
control's type. Imports all embedded controls, if this is a container. */ void importModelOrStorage(
BinaryInputStream& rInStrm,
StorageBase& rStrg, const AxClassTable& rClassTable );
/** Returns the programmatical name of the control. */
OUString getControlName() const;
/** Creates the UNO control model, inserts it into the passed container,
and converts all control properties. */ void createAndConvert(
sal_Int32 nCtrlIndex, const css::uno::Reference< css::container::XNameContainer >& rxParentNC, const ControlConverter& rConv ) const;
protected: /** Creates and imports the control model containing properties of the control. */ void importControlModel( BinaryInputStream& rInStrm, const AxClassTable& rClassTable ); /** Creates and imports the control model, and imports all embedded
controls from the passed substorage. */ void importStorage( StorageBase& rStrg, const AxClassTable& rClassTable );
/** Converts all control properties, and inserts and converts embedded controls. */ bool convertProperties( const css::uno::Reference< css::awt::XControlModel >& rxCtrlModel, const ControlConverter& rConv,
sal_Int32 nCtrlIndex ) const;
/** Creates the control model according to the current site model. */ void createControlModel( const AxClassTable& rClassTable ); /** Imports the site model data containing common properties of the control. */ bool importSiteModel( BinaryInputStream& rInStrm );
/** Imports the site models of all embedded controls from the 'f' stream. */ void importEmbeddedSiteModels( BinaryInputStream& rInStrm ); /* Final processing of all embedded controls after import. */ void finalizeEmbeddedControls();
/** Moves the control relative to its current position by the passed distance. */ void moveRelative( const AxPairData& rDistance ); /** Moves all embedded controls from their relative position in this
control to an absolute position in the parent of this control. */ void moveEmbeddedToAbsoluteParent();
/** Functor for comparing controls by their tab index. */ staticbool compareByTabIndex( const VbaFormControlRef& rxLeft, const VbaFormControlRef& rxRight );
protected:
VbaSiteModelRef mxSiteModel; ///< Common control properties.
ControlModelRef mxCtrlModel; ///< Specific control properties.
private:
VbaFormControlVector maControls; ///< All embedded form controls.
AxClassTable maClassTable; ///< Class identifiers for exotic embedded controls.
};
class VbaUserForm final : public VbaFormControl
{ public: explicit VbaUserForm( const css::uno::Reference< css::uno::XComponentContext >& rxContext, const css::uno::Reference< css::frame::XModel >& rxDocModel, const GraphicHelper& rGraphicHelper, bool bDefaultColorBgr );
/** Imports the form and its embedded controls, and inserts the form with
all its controls into the passed dialog library. */ void importForm( const css::uno::Reference< css::container::XNameContainer >& rxDialogLib,
StorageBase& rVbaFormStrg, const OUString& rModuleName,
rtl_TextEncoding eTextEnc );
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.