本文整理汇总了C++中CXFA_FFWidget::UpdateWidgetProperty方法的典型用法代码示例。如果您正苦于以下问题:C++ CXFA_FFWidget::UpdateWidgetProperty方法的具体用法?C++ CXFA_FFWidget::UpdateWidgetProperty怎么用?C++ CXFA_FFWidget::UpdateWidgetProperty使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CXFA_FFWidget
的用法示例。
在下文中一共展示了CXFA_FFWidget::UpdateWidgetProperty方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnValueChanged
void CXFA_FFNotify::OnValueChanged(CXFA_Node* pSender,
XFA_ATTRIBUTE eAttr,
CXFA_Node* pParentNode,
CXFA_Node* pWidgetNode) {
CXFA_FFDocView* pDocView = m_pDoc->GetDocView();
if (!pDocView)
return;
if (!(pSender->GetPacketID() & XFA_XDPPACKET_Form)) {
if (eAttr == XFA_ATTRIBUTE_Value)
pDocView->AddCalculateNodeNotify(pSender);
return;
}
XFA_Element eType = pParentNode->GetElementType();
FX_BOOL bIsContainerNode = pParentNode->IsContainerNode();
CXFA_WidgetAcc* pWidgetAcc =
static_cast<CXFA_WidgetAcc*>(pWidgetNode->GetWidgetData());
if (!pWidgetAcc)
return;
bool bUpdateProperty = false;
pDocView->SetChangeMark();
switch (eType) {
case XFA_Element::Caption: {
CXFA_TextLayout* pCapOut = pWidgetAcc->GetCaptionTextLayout();
if (!pCapOut)
return;
pCapOut->Unload();
} break;
case XFA_Element::Ui:
case XFA_Element::Para:
bUpdateProperty = true;
break;
default:
break;
}
if (bIsContainerNode && eAttr == XFA_ATTRIBUTE_Access)
bUpdateProperty = true;
if (eAttr == XFA_ATTRIBUTE_Value) {
pDocView->AddCalculateNodeNotify(pSender);
if (eType == XFA_Element::Value || bIsContainerNode) {
if (bIsContainerNode) {
pWidgetAcc->UpdateUIDisplay();
pDocView->AddCalculateWidgetAcc(pWidgetAcc);
pDocView->AddValidateWidget(pWidgetAcc);
} else if (pWidgetNode->GetNodeItem(XFA_NODEITEM_Parent)
->GetElementType() == XFA_Element::ExclGroup) {
pWidgetAcc->UpdateUIDisplay();
}
return;
}
}
CXFA_FFWidget* pWidget = nullptr;
while ((pWidget = pWidgetAcc->GetNextWidget(pWidget)) != nullptr) {
if (!pWidget->IsLoaded())
continue;
if (bUpdateProperty)
pWidget->UpdateWidgetProperty();
pWidget->PerformLayout();
pWidget->AddInvalidateRect();
}
}