20#include <com/sun/star/awt/XControl.hpp>
21#include <com/sun/star/awt/XControlContainer.hpp>
22#include <com/sun/star/awt/XWindow2.hpp>
23#include <com/sun/star/awt/PosSize.hpp>
24#include <com/sun/star/container/XNameContainer.hpp>
25#include <com/sun/star/frame/XController.hpp>
26#include <com/sun/star/frame/XModel.hpp>
27#include <com/sun/star/script/XDefaultProperty.hpp>
49 uno::Reference< awt::XControl > xControl(
m_xDialog, uno::UNO_QUERY_THROW );
50 m_xProps.set( xControl->getModel(), uno::UNO_QUERY_THROW );
51 setGeometryHelper( std::make_unique<UserFormGeometryHelper>( xControl, 0.0, 0.0 ) );
52 if ( aArgs.getLength() >= 4 )
63 SAL_INFO(
"vbahelper",
"ScVbaUserForm::Show( )");
72 uno::Reference< frame::XController >
xController(
m_xModel->getCurrentController(), uno::UNO_SET_THROW );
73 uno::Reference< frame::XFrame >
xFrame(
xController->getFrame(), uno::UNO_SET_THROW );
74 uno::Reference< awt::XWindow > xWindow(
xFrame->getContainerWindow(), uno::UNO_SET_THROW );
75 awt::Rectangle aPosSize = xWindow->getPosSize();
77 uno::Reference< awt::XControl > xControl(
m_xDialog, uno::UNO_QUERY_THROW );
78 uno::Reference< awt::XWindow > xControlWindow( xControl->getPeer(), uno::UNO_QUERY_THROW );
79 xControlWindow->setPosSize(
static_cast<sal_Int32
>((aPosSize.Width - getWidth()) / 2.0),
static_cast<sal_Int32
>((aPosSize.Height - getHeight()) / 2.0), 0, 0, awt::PosSize::POS );
81 catch( uno::Exception& )
87 SAL_INFO(
"vbahelper",
"ScVbaUserForm::Show() execute returned " << aRet);
93 uno::Reference< lang::XComponent > xComp(
m_xDialog, uno::UNO_QUERY_THROW );
98 catch( uno::Exception& )
107 m_xProps->getPropertyValue(
"Title" ) >>= sCaption;
119 uno::Reference< awt::XControl > xControl(
m_xDialog, uno::UNO_QUERY_THROW );
120 uno::Reference< awt::XWindow2 > xControlWindow( xControl->getPeer(), uno::UNO_QUERY_THROW );
121 return xControlWindow->isVisible();
135 return mpGeometryHelper->getInnerWidth();
140 mpGeometryHelper->setInnerWidth( fInnerWidth );
145 return mpGeometryHelper->getInnerHeight();
150 mpGeometryHelper->setInnerHeight( fInnerHeight );
179 return "ScVbaUserForm";
182uno::Sequence< OUString >
185 return {
"ooo.vba.excel.UserForm" };
188uno::Reference< beans::XIntrospectionAccess > SAL_CALL
191 return uno::Reference< beans::XIntrospectionAccess >();
195ScVbaUserForm::invoke(
const OUString& ,
const uno::Sequence< uno::Any >& , uno::Sequence< ::sal_Int16 >& , uno::Sequence< uno::Any >& )
197 throw uno::RuntimeException();
212 uno::Reference< script::XDefaultProperty > xDfltProp( aObject, uno::UNO_QUERY_THROW );
213 OUString aDfltPropName = xDfltProp->getDefaultPropertyName();
216 xPropSet->setPropertyValue( aDfltPropName, aValue );
220uno::Reference< awt::XControl >
223 uno::Reference< awt::XControl > xControl = xContainer->getControl( aPropertyName );
224 if ( !xControl.is() )
226 const uno::Sequence< uno::Reference< awt::XControl > > aControls = xContainer->getControls();
228 for (
const auto& rCtrl : aControls )
230 uno::Reference< awt::XControlContainer > xC( rCtrl, uno::UNO_QUERY );
250 uno::Reference< awt::XControl > xDialogControl(
m_xDialog, uno::UNO_QUERY_THROW );
251 uno::Reference< awt::XControlContainer > xContainer(
m_xDialog, uno::UNO_QUERY_THROW );
252 uno::Reference< awt::XControl > xControl =
nestedSearch( aPropertyName, xContainer );
253 xContainer->getControl( aPropertyName );
260 aResult <<= xVBAControl;
277 uno::Reference< awt::XControl > xDialogControl(
m_xDialog, uno::UNO_QUERY );
278 uno::Reference< XCollection > xControls(
new ScVbaControls(
this,
mxContext, xDialogControl,
m_xModel, mpGeometryHelper->getOffsetX(), mpGeometryHelper->getOffsetY() ) );
279 if (
index.hasValue() )
287 uno::Reference< awt::XControl > xControl(
m_xDialog, uno::UNO_QUERY );
289 SAL_INFO(
"vbahelper",
"ScVbaUserForm::hasProperty(" <<
aName <<
") " << xControl.is() );
292 uno::Reference< beans::XPropertySet > xDlgProps( xControl->getModel(), uno::UNO_QUERY );
293 if ( xDlgProps.is() )
295 uno::Reference< container::XNameContainer > xAllChildren( xDlgProps->getPropertyValue(
"AllDialogChildren" ), uno::UNO_QUERY_THROW );
296 bool bRes = xAllChildren->hasByName(
aName );
297 SAL_INFO(
"vbahelper",
"ScVbaUserForm::hasProperty(" <<
aName <<
") " << xAllChildren.is() <<
" ---> " << bRes );
304extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
306 css::uno::XComponentContext* context , css::uno::Sequence<css::uno::Any>
const& args)
void setLibraryAndCodeName(const OUString &sLibCodeName)
Reference< frame::XModel > m_xModel
#define SAL_INFO(area, stream)
css::uno::Reference< ov::msforms::XControl > createUserformControl(const css::uno::Reference< css::uno::XComponentContext > &xContext, const css::uno::Reference< css::awt::XControl > &xControl, const css::uno::Reference< css::awt::XControl > &xDialog, const css::uno::Reference< css::frame::XModel > &xModel, double fOffsetX, double fOffsetY)
css::uno::Reference< T > getXSomethingFromArgs(css::uno::Sequence< css::uno::Any > const &args, sal_Int32 nPos, bool bCanBeNull=true)
uno::Reference< beans::XIntrospectionAccess > getIntrospectionAccess(const uno::Any &aObject)
Reference< XController > xController
Reference< XFrame > xFrame