Print Page | Close Window

Markup Hyperlink and Report Control

Printed From: Codejock Forums
Category: Codejock Products
Forum Name: Report Control
Forum Description: Topics Related to Codejock Report Control
URL: http://forum.codejock.com/forum_posts.asp?TID=14423
Printed Date: 15 May 2024 at 2:22am
Software Version: Web Wiz Forums 12.04 - http://www.webwizforums.com


Topic: Markup Hyperlink and Report Control
Posted By: zitz
Subject: Markup Hyperlink and Report Control
Date Posted: 01 June 2009 at 12:13am
I use Xtreme ToolkitPro v13.0.0.
How add Markup Hyperlink to Report control? I add CXTPReportRecordItem, and set Murkup Text to it. How can i get OnHyperlinkClick( CXTPMarkupObject* pSender, CXTPMarkupRoutedEventArgs* pArgs );

pMarkupContext->AddHandler( CXTPMarkupHyperlink::m_pClickEvent,
CreateMarkupClassDelegate( this, &CReportCtrlComm::OnHyperlinkClick ) );

What next?



Replies:
Posted By: zitz
Date Posted: 01 August 2009 at 2:04pm
Please add support for Markup Hyperlink to Report control, embedded links (CXTPReportHyperlink) is very poor.
Or add multiline hyperlinks to CXTPReportHyperlink ( several CRect m_rcHyperSpot1, CRect m_rcHyperSpot2... )


-------------
Xtreme ToolkitPro v13.1.0, static, VC++6


Posted By: mdoubson
Date Posted: 01 August 2009 at 2:19pm
Use 13.1 Upgrade -

void CXTPReportRecordItem::OnDrawCaption(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, XTP_REPORTRECORDITEM_METRICS* pMetrics){

ASSERT(pDrawArgs->pItem == this);

CXTPReportPaintManager* pPaintManager = pDrawArgs->pControl->GetPaintManager();

BOOL bForceMarkUp(FALSE);

if (pPaintManager) bForceMarkUp = pPaintManager->m_bForceDynamicMarkupForCell;

// SPECIAL Flag to use

if ((pDrawArgs->pControl->IsVirtualMode() || bForceMarkUp)

&& pDrawArgs->pControl->GetMarkupContext() && !m_pMarkupUIElement)

{

CXTPMarkupUIElement* pMarkupUIElement = XTPMarkupParseText(pDrawArgs->pControl->GetMarkupContext(), pMetrics->strText);

if (pMarkupUIElement)

{

CRect rcItem = pDrawArgs->rcItem;

rcItem.DeflateRect(2, 1, 2, 0);

XTPMarkupSetDefaultFont(XTPMarkupElementContext(pMarkupUIElement), (HFONT)pMetrics->pFont->GetSafeHandle(), pMetrics->clrForeground);

XTPMarkupMeasureElement(pMarkupUIElement, rcItem.Width(), INT_MAX);

XTPMarkupRenderElement(pMarkupUIElement, pDrawArgs->pDC->GetSafeHdc(), &rcItem);

XTPMarkupReleaseElement(pMarkupUIElement);

return;

}

}

if (m_pMarkupUIElement)

{

CRect rcItem = pDrawArgs->rcItem;

rcItem.DeflateRect(2, 1, 2, 0);

XTPMarkupSetDefaultFont(XTPMarkupElementContext(m_pMarkupUIElement), (HFONT)pMetrics->pFont->GetSafeHandle(), pMetrics->clrForeground);

XTPMarkupMeasureElement(m_pMarkupUIElement, rcItem.Width(), INT_MAX);

XTPMarkupRenderElement(m_pMarkupUIElement, pDrawArgs->pDC->GetSafeHdc(), &rcItem);

}

else

{

if (pPaintManager)

pPaintManager->DrawItemCaption(pDrawArgs, pMetrics);

}

}



-------------
Mark Doubson, Ph.D.


Posted By: mdoubson
Date Posted: 07 August 2009 at 9:37pm

You can USE hyperlink if add properly support on your app level - e.g.

void CReportSampleView::OnReportHyperlinkClick(NMHDR * pNotifyStruct, LRESULT * /*result*/) {

XTP_NM_REPORTRECORDITEM* pItemNotify = (XTP_NM_REPORTRECORDITEM*) pNotifyStruct;

if (!pItemNotify->pRow || !pItemNotify->pColumn) return;

if (pItemNotify->nHyperlink >= 0) { ::ShellExecute(NULL, _T("open"), pItemNotify->pItem->GetCaption(pItemNotify->pColumn), NULL, NULL, SW_SHOWNORMAL); //like this - ::ShellExecute(NULL, _T("open"), _T("www.google.com"), NULL, NULL, SW_SHOWNORMAL); } }



-------------
Mark Doubson, Ph.D.


Posted By: acwest
Date Posted: 01 June 2010 at 11:18am
Originally posted by mdoubson mdoubson wrote:

You can USE hyperlink if add properly support on your app level - e.g.

void CReportSampleView::OnReportHyperlinkClick(NMHDR * pNotifyStruct, LRESULT * /*result*/) {

XTP_NM_REPORTRECORDITEM* pItemNotify = (XTP_NM_REPORTRECORDITEM*) pNotifyStruct;

if (!pItemNotify->pRow || !pItemNotify->pColumn) return;

if (pItemNotify->nHyperlink >= 0) { ::ShellExecute(NULL, _T("open"), pItemNotify->pItem->GetCaption(pItemNotify->pColumn), NULL, NULL, SW_SHOWNORMAL); //like this - ::ShellExecute(NULL, _T("open"), _T("www.google.com"), NULL, NULL, SW_SHOWNORMAL); } }


Is this answer related to your previous one? Do we need to modify the OnDrawCaption code, and how do I add the OnReportHyperlinkClick handler? I was looking into using the CXTPReportHyperlink class, but it appears to be incompatible with using XAML markup in the control.


Posted By: acwest
Date Posted: 14 June 2010 at 1:45pm
I figured out how to get hyperlinks working, using EnableMarkup, and AddHandler. The problem I have now is that when a link is displayed in the first line of the viewable area (sometimes the second line as well) the event dispatching code doesn't recognize it as being a hyperlink. If I scroll it down a line, it works fine...


Posted By: acwest
Date Posted: 15 June 2010 at 5:39pm
I did some tracing into the code, and in CXTPMarkupContext::OnWndMsg there is a test for m_pActiveElement && m_pActiveElement != pUIElement, which the link in question is failing. I'm working on figuring out why the MarkupContext thinks the mouse is in a different element than it is actually in now.
-Craig



Print Page | Close Window

Forum Software by Web Wiz Forums® version 12.04 - http://www.webwizforums.com
Copyright ©2001-2021 Web Wiz Ltd. - https://www.webwiz.net