Subject |
Author |
Date |
|
Offer Har
|
Feb 27, 2011 - 10:03 AM
|
Dear Support, In order for a button to have a drop-down menu, I see that I need to use the MFC’s CMenu. Is there any way to use CExtPopupMenu object instead? Thanks, Ron.
|
|
Technical Support
|
Feb 27, 2011 - 11:37 PM
|
Please create and use a CExtButton derived class. Your class should implement the CExtButton::_IsMenuAvail() and CExtButton::_OnTrackPopup() virtual methods. The CExtButton::_IsMenuAvail() virtual methods returns a flag indicating whether your button displays a popup menu. Your method should return true . The CExtButton::_OnTrackPopup() virtual method should create and display a popup menu. You can use the source code of the original method as a sample.
|
|
Offer Har
|
Feb 24, 2011 - 2:59 AM
|
Dear Support, I see that there is no function for setting the row height of a specific row - why is that? we realy need such function. Thanks, Ron.
|
|
Technical Support
|
Feb 24, 2011 - 12:30 PM
|
The CExtGridCell::ExtentSet() method allows you to specify the minimum/current/maximum column width or row height. You should invoke it for outer header cells. Top area cells are more preferable than bottom area cells. Left area cells are more preferable than right area cells.
|
|
Offer Har
|
Feb 23, 2011 - 9:42 AM
|
Dear Support, I have cells I setup with multi-lines using __EGCS_EX_MULTILINE_TEXT . When I call the function BestFitRow I want it to adjust all the rows so all text in each row is readable. It does not do that... instead all rows remain with the default one line row width. How can I fix this? Thanks, Ron.
|
|
Technical Support
|
Feb 24, 2011 - 12:29 PM
|
Outer header cells are needed for cases when you have row/columns with different heights/widths. If you don’t need outer header column, then you can set its width to zero.
|
|
Offer Har
|
Feb 24, 2011 - 2:58 AM
|
Hi, I think the problem is that if there is no column header it does not adjust the height. I added a left-side column header with numbers and not it works fine. Can you fix it? Thanks, Ron.
|
|
mediatime Conseil
|
Feb 23, 2011 - 2:07 AM
|
Dear Sir, We are using Profuis for skinning our MFC applications, and now we want to create .Net (C#) application, do you have a library that support .Net Skinning? We prefer to use the same skin files (xml and images) for the .Net application? Thank you
|
|
Technical Support
|
Feb 24, 2011 - 12:33 PM
|
ProfSkin can be used for skinning .NET Windows controls. But Windows Forms library uses window class names which are different from Windows Common Controls library. This does not allow us to subclass all the supported controls automatically.
|
|
Alastair Watts
|
Feb 22, 2011 - 1:29 AM
|
I have a number of reported issues that have not yet been answered: 1. Grid filters not working correctly - 1st Jan - project & instructions emailed serveral times 2. CExtCheckComboBox - 1st Feb - flickers alot 3. BestColumnFit() - 2nd Feb - truncates header text when filter icon is displayed & truncates cell text when icon is displayed If you need any further information please don’t hestiate to ask. Kind regards Alastair
|
|
Alastair Watts
|
Mar 9, 2011 - 12:08 PM
|
I still need support for these issues ... any progress?
|
|
Alastair Watts
|
Feb 23, 2011 - 1:00 AM
|
Correction ... item 1 was emailed on 22nd Jan, not the 1st
|
|
Offer Har
|
Feb 21, 2011 - 8:30 AM
|
Hi, This is a question that been asked several times, but with no viable solution... If you place dialogs inside a CExtTabPageContainerWnd , the tab control and the dialog are not continues to the tab control. For example, in black themes the tab is light grey, and the dialog is dark grey, and it does not look good. Is there any way to make this look better? It really does not look good... and we’ll all here for the good looks... Thanks, Ron.
|
|
Technical Support
|
Feb 21, 2011 - 11:37 AM
|
The TabbedBars sample app implements tab items with the same color as dialog pages.
|
|
Piotr Tracz
|
Feb 21, 2011 - 5:19 AM
|
Hello, ProfUIS 2.91. I have derived class from CExtPPVW <CExtGridWnd> with __EGCS_EX_AUTO_BEST_FIT set for every. In grid inicialization function there is line BestFitColumns( 0L, -1L, 0, true, true, false, true); so everything works perfect. I want change font size during print / print preview of my CExtPPVW <CExtGridWnd> derived grid. Font change is done vie overriding virtual void OnPrepareDC(CDC * pDC,CPrintInfo *pInfo = NULL). The problem is that after changing font column’s width is not recalculated. I guess I need to invoke BestFitColumns somewhere after OnPrepareDC but not sure where and when. I guess BestFitColumns should be also again invoked after closing print preview or after printing to make normal "view" well fitted. What is the bes solution to make __EGCS_EX_AUTO_BEST_FIT working in that case.
|
|
Technical Support
|
Feb 21, 2011 - 11:46 AM
|
The printing/previewing subsystem is completely independent from the grid control. Please override the CExtGridCell::OnQueryCellFont() or CExtGridWnd::OnGridCellQueryFont() virtual methods to provide particular grid cells with custom font. These methods have the dwHelperPaintFlags parameter which will contain the __EGCPF_PRINTING_TARGET_MASK flags in case of printing.
|
|
MUKESH GUPTA
|
Feb 21, 2011 - 4:51 AM
|
We were using ProfUIS version 2.54 and have recently upgraded to the latest version 2.91.I built all the static and dll targets of 2.91 on VS2008. We have created a class "ClassVerticalTabs" derived from CExtTabPageContainerOneNoteWnd & then have overridden OnCreate(LPCREATESTRUCT lpCreateStruct) which has been implemented as :- int ClassVerticalTabs::OnCreate(LPCREATESTRUCT lpCreateStruct) { if( CExtTabPageContainerOneNoteWnd::OnCreate(lpCreateStruct) == -1 ) return -1;
OrientationSet( __ETWS_ORIENT_LEFT );
CCreateContext* pContext = NULL;
if (lpCreateStruct != NULL) pContext = (CCreateContext*)lpCreateStruct->lpCreateParams;
CString strTabname = "Tab One";
if( ! m_view1->Create(NULL,_T(""),WS_CHILD | WS_VISIBLE,CRect(20,20,1,1), this,ID_VIEW1, pContext)) { ASSERT( FALSE ); return -1; } if( ! PageInsert(m_view1->GetSafeHwnd(),strTabname)) { ASSERT( FALSE ); return -1; }
if( ! m_View2->Create(NULL,_T(""),WS_CHILD | WS_VISIBLE,CRect(30,30,1,1),this,ID_VIEW2, pContext))
{ ASSERT( FALSE ); return -1; } strTabname = "Tab Two"; if( ! PageInsert(m_View2->GetSafeHwnd(),strTabname)) { ASSERT( FALSE ); return -1; } } Here, m_view1 & m_view2 are instances of classes derived from CView class Then we are creating instance of above derived class using following code: ClassVerticalTabs tabview; if( ! tabview.Create(this,CRect( 200,200,1,1 ),UINT(ID_PANE1),
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
pContext ))
{
TRACE0("Failed to create view window\n");
return -1;
} Thus, we have created one horizontal tab having multiple vertical tabs. To add new horizontal tabs, we have defined a class derived from CExtTabWhidbeyWnd. Now, suppose, we create two or more horizontal tabs each of which is having 10 or more vertical tabs. On switching between horizontal tabs, corresponding vertical tabs are to be displayed. This is done using for ( int i=VerticalTabCount; i>0; --i ) tabview->PageRemove(i,TRUE,FALSE); This will hide all the vertical tabs of previous horizontal tab The problem is that switching between horizontal tabs causes flickering as all vertical tabs needs to be hidden. Please suggest.
|
|
MUKESH GUPTA
|
Feb 26, 2011 - 2:18 AM
|
Will appreciate your quick response on this.
|
|
Technical Support
|
Feb 27, 2011 - 11:43 PM
|
The CExtTabPageContainerWnd::PageRemoveAll() method removes page windows one by one. The CExtTabPageContainerWnd::PageRemove() method allows you to remove several pages at once. Please use the last method. I.e. you should replace this line of code:
p->m_wndFlatTabPageContainer4.PageRemoveAll(false);
With this one: p->m_wndFlatTabPageContainer4.PageRemove( 0, p->m_wndFlatTabPageContainer4.PageGetCount(), false );
|
|
MUKESH GUPTA
|
Feb 25, 2011 - 5:41 AM
|
Would appreciate if you can provide the fix asap.
|
|
MUKESH GUPTA
|
Feb 25, 2011 - 2:01 AM
|
Any updates? Please take this on high priority as this is critical for our project
|
|
MUKESH GUPTA
|
Feb 23, 2011 - 12:06 AM
|
I have sent a sample application which can reproduce the same issue. Following are the details:- 1. Opened TabPages_900.vcproj from \ProfUIS291\Samples.
2. Added the following code to CMainFrame::OnCreate() :- for(int i =1; i<50; ++i)
{
CExtWFF<CTreeCtrl>* wndEditCtrl1 = new CExtWFF<CTreeCtrl>;
InitTreeCtrl(wndEditCtrl1, &m_wndFlatTabPageContainer4);
int f = rand()%254-100;
wndEditCtrl1->SetBkColor(RGB(f, f, f));
VERIFY( m_wndFlatTabPageContainer4.PageInsert( wndEditCtrl1, _T("EditCtrl"), hIcon, TRUE ) );
} Please note that the above code needs to be added after the calls m_wndFlatTabPageContainer4.PageInsert(). This will insert 50 controls to m_wndFlatTabPageContainer4. 3. In Mainfrm.h, make m_wndFlatTabPageContainer4 as public
4. In CTabManageDlg::OnCheckShowBorders(), add the following code at the start CMainFrame* p = (CMainFrame*)AfxGetMainWnd();
if (p)
p->m_wndFlatTabPageContainer4.PageRemoveAll(false);
return; This will handle the removal of all pages from m_wndFlatTabPageContainer4 when ShowBorders is clicked. When ShowBorders check box is clicked, tabs (or pages) will be removed one by one which will cause flickering. Also, please note that though I have added tabs using CTreeCtrl class instead of classes derived from CView, the actual prolem is with the continuous rendering of pages which is caused by call to PageSelectionSet() in CExtTabPageContainerWnd::PageRemove(). Please suggest how this can be resolved.
|
|
MUKESH GUPTA
|
Feb 22, 2011 - 7:07 AM
|
I have created a sample project. Please let me know how can i attach that.
|
|
Technical Support
|
Feb 22, 2011 - 10:53 AM
|
|
|
Technical Support
|
Feb 22, 2011 - 3:41 AM
|
This is a complicated issue. Could you send us a test project?
|
|
MUKESH GUPTA
|
Feb 22, 2011 - 12:41 AM
|
I created 2 horizontal tabs : - "tab1" which had 10 vertical tabs, & - "tab2" which had 3 vertical tabs. Observed that switching from tab1 to tab2 causes flickering but when we switch from tab2 to tab1, flickering doesnot occur. This is beacuse switching from tab1 to tab2 required "Hiding 10 vertical tabs & inserting 3 vertical tabs" whereas switching from tab2 to tab1 required "Hiding 3 vertical tabs & inserting 10 vertical tabs". Moreover, I also observed that in CExtTabPageContainerWnd::PageRemove(), we are changing the page selection but when pages are inserted using PageInsert(), page selection is not changed as the default value of "bool bSelect" passed as parameter to PageInsert() is false. Also, if I remove PageSelectionSet() call from CExtTabPageContainerWnd::PageRemove(), flickering doesnot occur. Please suggest.
|
|
MUKESH GUPTA
|
Feb 21, 2011 - 10:32 PM
|
In CExtTabPageContainerWnd::PageRemove(), PageSelectionSet() is called which means that every time a page is removed, selection will change & thus rendering will occur. Removing 10 vertical tabs (or pages), selection changes 10 times & hence rendering occurs 10 times. Please suggest if there is any option through which pages can be removed without changing page selection so that we can avoid rendering multiple times.
|
|
Technical Support
|
Feb 21, 2011 - 11:50 AM
|
This is a very specific problem. It would be very handy to receive a test project demonstrating it.
|
|
Alfonso Bastias
|
Feb 17, 2011 - 1:35 PM
|
I create a new MFC project using VS2010, in order to use the new features (RIBBON, DOCK, TABVIEW)... The CTabView have several views
innt
CMyTabView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CTabView::OnCreate(lpCreateStruct) == -1)
return -1;
pTab->ModifyTabStyle(CMFCTabCtrl::STYLE_3D_ONENOTE);
}
Each view has the OnPaint()
void CMyView1::OnPaint()
{
CPaintDC dc(this); // device context for painting
OnPrepareDC (&dc);
OnDraw(&dc);
}
I will like to have the gradient background matching with the color tab, however I am having a plain ligh gray. If I activate the Render the Hurricane, I got it the hurricane in a gray scale. no colors et all.
Your help is appreciate,
Regards,
Alfonso
if((! g_PaintManager->GetCb2DbTransparentMode( (CObject*)this ))
||
(! g_PaintManager->PaintDockerBkgnd( true, dc, (CWnd*)this ) ) )
{
CRect rcClient;
GetClientRect( &rcClient );
if( dc.RectVisible( &rcClient ) )
dc.FillSolidRect(&rcClient,g_PaintManager->GetColor(CExtPaintManager::CLR_3DFACE_OUT));
} CMFCTabCtrl* pTab = &GetTabControl();
AddView (RUNTIME_CLASS (CMyView1), _T(
"View 1"));
AddView (RUNTIME_CLASS (CMyView2), _T("View 2"));
.... } ///////////////////////////////////////////////
CMainFrame:CMainFrame()....
{...
g_PaintManager->m_bCustomBackgroundInheritanceEnabled = true;
...
|
|
Alfonso Bastias
|
Feb 17, 2011 - 1:44 PM
|
Uff, the last post was completely unformated and unorganized by the system... in short.. I create a new project using VS2010.. added severals views with a CTabView... (OneNote Style...pTab->ModifyTabStyle(CMFCTabCtrl::STYLE_3D_ONENOTE);
) I want to set the background colorung using a gradient color (matching with the color tab). I am getting just a lightgray background. Thanks, Alfonso
|
|
Technical Support
|
Feb 18, 2011 - 2:53 AM
|
|
|
Charles Bisbee
|
Feb 16, 2011 - 10:37 AM
|
My App is a conversion from an MFC Dialog based app. In the MFC CDialog based classes, group boxes display properly INCLUDING the caption In CExtNCW < CExtResizableDialog > classes the outline of the group box displays WITHOUT breaks or caption. I need the captions properly displayed. How do I do this. Version is a 292 (this is correct) Thanks Charlie Bisbee
|
|
Charles Bisbee
|
Feb 17, 2011 - 12:40 PM
|
This was an error on my part. It was not Prof-UIS. Sorry.
|
|
Technical Support
|
Feb 16, 2011 - 1:09 PM
|
Could you send us a screenshot demonstrating this problem?
|
|
Offer Har
|
Feb 16, 2011 - 7:49 AM
|
|
|
Technical Support
|
Feb 16, 2011 - 1:07 PM
|
This can be implemented as custom measured and custom painted tab items. Or you can use check box like looking icons in tab items.
|
|
Alastair Watts
|
Feb 16, 2011 - 4:47 AM
|
I’ve got a CExtToolControlBar containing labels, edit-boxes & check-boxes. How do I insert space inbetween some of these controls to improve the look?
|
|
Alastair Watts
|
Feb 17, 2011 - 10:43 AM
|
|
|
Technical Support
|
Feb 16, 2011 - 1:10 PM
|
This is not a good solution because each CExtLabel object eats one HWND handle. You can insert CExtBarLabelButton toolbar buttons instead. Or you can override the CExtToolControlBar::OnCreateBarCommandBtn() virtual method and instantiate your own toolbar button objects which implement the CExtBarButton::CalculateLayout() virtual method for reserving additional space.
|
|
Alastair Watts
|
Feb 16, 2011 - 9:19 AM
|
Never mind, I’ve created a number of blank CExtLabel objects ... unless theres a better way?
|
|
Eric
|
Feb 15, 2011 - 9:10 AM
|
Hello, I’m trying to create a chevron button on a CExtPropertyGridToolBar, because we added several buttons on this toolbar and when the window is too small, some buttons dissappear. I tried calling the InitContentExpandButton() method after inserting the custom buttons in the toolbar, but the method always return false. How can I do that? Thanks for your help!
|
|
Eric
|
Feb 16, 2011 - 2:36 PM
|
Thanks for your help, it works well now.
|
|
Technical Support
|
Feb 16, 2011 - 6:08 AM
|
The chevron is invisible because the CExtPropertyGridToolBar class implements the following virtual method:
CExtBarContentExpandButton * CExtPropertyGridToolBar::OnCreateBarRightBtn()
{
__EXT_DEBUG_GRID_ASSERT_VALID( this );
return NULL;
}
Please override it and invoke the CExtToolControlBar class method.
|
|
Guido Jaeger
|
Feb 15, 2011 - 3:07 AM
|
I use SubclassChildControls for a Dialog incl. Buttons, Scrollbars, Edits and SpinEdits Part of the Code:
Testdialog.h class CTestdialog: public CExtResizableDialog //CDialog Test.cpp
CTestdialog::CTestdialog(CBaseEvent* pEvent,CTestdialog* pAni,CString strName,CRealTimeView* pView)
: CExtResizableDialog (CTestdialog::IDD,NULL) BOOL CTestdialog::OnInitDialog()
{
CExtResizableDialog::OnInitDialog();
SubclassChildControls();
.... The Dialogs Background , the Grouboxes and the Buttons change to the new Look.
But the Scrollbars , Edits and SpinControls stay at the old Look. I send an E-Mail with a Screenshot to Support@prof-uis.com.
Hope to get Answer...
|
|
Technical Support
|
Feb 15, 2011 - 9:42 AM
|
Please check the following:
1) Edit controls are subclassed with CExtEdit objects.
2) Spin controls are subclassed with CExtSpinWnd objects.
3) Scroll bars are subclassed with CExtScrollBar objects.
4) Group boxes are subclassed with CExtGroupBox objects.
5) The Z order of group boxes is larger than Z orders of controls inside it. The Ctrl+D command displays Z orders in Visual Studio’s dialog editor.
6) The dialog template resource has both Clip Siblings and Clip Children options set on.
|
|
Peter Meier
|
Feb 12, 2011 - 10:56 AM
|
How can I make my application dynamically switching the language when customization is enabled? I am using ::SetThreadUILanguage to advise the CString::loadString to load the strings for menus and commands in different languages. Although the function works correctly, the strings are not being displayed, because the customization feature still holds the strings for the language that was active before. Only after I delete the Prof-UIS part of the registry below my app’s registry tree the strings are displayed correctly. So what can I do to have the old strings discarded and replaced by the new ones programmatically? Is there a way to unload all the texts of commands? Thank you
|
|
Technical Support
|
Feb 14, 2011 - 1:20 AM
|
The LanguageSwitcher sample does exactly what you looking for. The CString::LoadString() method is part of MFC and we cannot change its behavior. That’s why Prof-UIS uses the CExtResourceManager::LoadString() method instead. Of course all the command descriptions should be reset after choosing the preferred language in your app. The LanguageSwitcher sample application does this for all the commands, menu items and toolbar buttons.
|
|
Guido Jaeger
|
Feb 12, 2011 - 4:27 AM
|
One more Question: My Application includes about 20 Dialogs (CDialog) Whats the easyest Way to make all Dialogs look like the choosed Design ? Greetings Guido
|
|
Technical Support
|
Feb 14, 2011 - 1:22 AM
|
You can use the CExtLabel control for that. It implements picture control functionality.
|
|
Technical Support
|
Feb 14, 2011 - 1:18 AM
|
Please derive your dialogs from CExtNCW < CExtResizableDialog > template based class type and invoke SetAutoSubclassChildren() API in dialog’s constructor.
|
|
Guido Jaeger
|
Feb 13, 2011 - 11:18 PM
|
Find it by myself..only 1 Problem left: Using SubclassChildControls(); Is there no Preplacement for Picture Control ?
|
|
Guido Jaeger
|
Feb 10, 2011 - 10:44 AM
|
Hi, i am Beginner with Visual Studio, finished Converting a Project from VC6 to VC2010 I Exchange the CToolbat against the CExtToolControlBar and the Style of the Application to
Office2007_R2_Obsidian
Now when i Start the Application the in the new Design but the Rest of the
Line until the full Wide of the Screen is still grey. Is it possibel to resize the
ToolControlbar automatic to full Wide ?
|
|
Guido Jaeger
|
Feb 12, 2011 - 3:37 AM
|
Hi, it is possible to change the Original Class so that every CExtToolbar occupy the widest Space ? In my Software there is a Mix of CToolbar and CExtToolbar. When i replace
EnableDocking(CBRS_ALIGN_ANY) against
if( ! CExtControlBar::FrameEnableDocking( this ) )
{
ASSERT( FALSE );
return -1;
};
the Software crashed.
|
|
Technical Support
|
Feb 14, 2011 - 12:34 AM
|
The CExtToolControlBar windows cannot be mixed with CToolBar windows. Our toolbar is much more advanced than MFC’s. It’s not possible to support features like persistent position affixment when CToolBar windows are docked near CExtToolControlBar windows. Please switch to the CExtToolControlBar class or your CExtToolControlBar -derived class which allows a toolbar to take up the widest available space. Please note the CExtToolControlBar windows can be created as non re-dockable. Such windows also occupy widest available space. Just not invoke EnableDocking() for CExtToolControlBar windows.
|
|
Technical Support
|
Feb 11, 2011 - 12:37 AM
|
If you created a non-redockable toolbar, then it automatically occupies the entire column/row. The drag-n-drop-able bars can also occupy the entire column/row. The menu bar is such kind of toolbar. You can create a CExtToolControlBar -derived class and invoke the following code in its constructor: m_bHelperTempFullRowMode = false; This toolbar will occupy the widest available space.
|
|
Rado Manzela
|
Feb 9, 2011 - 3:30 AM
|
|
|
Bogdan Munteanu
|
Feb 7, 2011 - 5:28 PM
|
Hello all,
In the AdoRecordsetView project I added the __EGBS_NO_HIDE_SELECTION option to the SiwModifyStyle() call in ChildView.cpp. However, while switching to a different window, the cell being selected in the grid loses its focus despite the parameter above. Is there another flag (or combination of flags) I should have specified to indicate the cell currently selected even if the focus is in a different window? Please note, if I switch back to the AdoRecordsetView executable, the selected cell is displayed correctly.
I appreciate your help, thank you,
Bogdan
|
|
Technical Support
|
Feb 9, 2011 - 11:51 AM
|
Thank you for reporting this issue. To fix it, please update source code for the following two methods:
COLORREF CExtScrollItemWnd::OnSiwGetReadOnlyBackgroundColor() const
{
ASSERT_VALID( this );
return COLORREF(-1L);
}
COLORREF CExtPropertyGridWnd::OnSiwGetReadOnlyTextColor() const
{
__EXT_DEBUG_GRID_ASSERT_VALID( this );
return OnSiwGetSysColor( COLOR_WINDOW );
}
|
|
Bogdan Munteanu
|
Feb 12, 2011 - 8:41 PM
|
It worked. Thank you very much.
|
|
Eric
|
Feb 4, 2011 - 12:07 PM
|
Hello, I have a CExtPropertyGridCtrl filled with many categories and properties. I would like to detect a click on a property’s name(left column), and get access to this property’s name. I noticed that when a click on a property occurs, the description change accordingly to the property’s description. I need to get access to the property’s name at that moment. How do I do that from a derived class of CExtPropertyGridCtrl? Thanks!
|
|
Eric
|
Feb 15, 2011 - 8:08 AM
|
|
|
Technical Support
|
Feb 9, 2011 - 11:52 AM
|
You can override the CExtGridWnd::OnGridCellQueryBackColor() virtual method and provide any grid cell with a custom color. In the case of a report grid control, the outer header cells in the top header row are CExtReportGridColumn column objects and CExtReportGridItem pointers can be used as HTREEITEM tree row handles when invoking APIs of the CExtTreeGridWnd class. So, you can use the CExtTreeGridWnd::ItemGetByVisibleRowIndex() and CExtTreeGridWnd::ItemGetVisibleIndexOf() methods for conversion between plain row indexes of CExtGridWnd class API and CExtReportGridItem pointers / HTREEITEM tree row handles.
|
|
Eric
|
Feb 7, 2011 - 12:44 PM
|
Thanks a lot, it works well now! I have another question. I’m using a CExtReportGridWnd. The grid is like the last one of the FilteredGrids-m.exe in the samples(Filtered Report Grid). I need to focus or highlight a particular column without losing the current rows selection. So I have the column’s name, the only thing I need to do is to focus or highlight this particular column(or all of it’s visible cells).
There are many columns, so if the one that needs to be focused on is not currently visible, it needs to scroll to that
column. I can access to the grid only from the outside. How can I do that?
|
|
Technical Support
|
Feb 5, 2011 - 11:07 AM
|
The CExtPropertyGridCtrl is designed as a container for one or more tree grid controls displaying properties. By default two tree grids are created: CExtPropertyGridWndCategorized and CExtPropertyGridWndSorted . These tree grids are instantiated in the CExtPropertyGridCtrl::OnPgcCreateGrids() virtual method. You should override it and create your instances of tree grid classes. Your tree grids should implement the CExtGridBaseWnd::OnGbwAnalyzeCellMouseClickEvent() virtual method for handling grid mouse clicks. There are two colums: column 0 contains name cells and 1 contains value cells. The CExtTreeGridWnd::ItemGetByVisibleRowIndex() method allows you to convert plain row indexes into HTREEITEM tree grid row handles. The CExtPropertyGridWnd::PropertyItemFromTreeItem() method allows you to convert HTREEITEM tree grid row handles into CExtPropertyItem * property value pointers.
|