Subject |
Author |
Date |
|
Andrew Banks
|
Mar 17, 2007 - 7:31 PM
|
|
|
Technical Support
|
Mar 19, 2007 - 5:28 AM
|
Both fonts are controlled by the paint manager, and not by ribbon control. So you should create and use a custom paint manager class which implements the CExtPaintManager::Ribbon_SyncFonts() virtual method. In this method, the following members of the CExtPaintManager class should be initialized: m_FontRibbonNormal , m_FontRibbonGroupCaption and m_FontRibbonTabItem .
You can change the window caption’s font by overriding the CExtPaintManager::CreateCaptionFont() virtual method in which you can create the desired font.
|
|
Offer Har
|
Mar 17, 2007 - 7:07 AM
|
Dear Support,
I got to this function when clicking the header of a tree grid I set to be sorted. I guess that something is missing in the sorting implementation. Isn’t there any option to sort a tree grid?
Thanks, Ron.
|
|
Technical Support
|
Mar 17, 2007 - 10:26 AM
|
This feature is not yet implemented. We will add it in the next version.
|
|
Offer Har
|
Mar 18, 2007 - 8:34 AM
|
|
|
Offer Har
|
Mar 16, 2007 - 1:02 PM
|
Hi,
I have tried to add the FontWeightGet & FontWeightSet to my derived cell class, but it is never called, hence my cell never gets bold. I see that also the base class’s FontWeightGet is never called.
What do I need to do?
Thanks, Ron.
|
|
Technical Support
|
Mar 17, 2007 - 10:17 AM
|
You did not specify which cell class you are using so we will give a general overview. There is a CExtGridCell which is the base class for all other cell classes and defines only pure virtial methods. There is a CExtGridCellStringDM class (derived from CExtGridCell ) that allows you to display single and multiline text. Although its features are limited, for example you cannot make the text bold (because only the default system font is used), nor you can store a text string as its text property, it is very effective when you need to instantiate a great number of cells. There is also a CExtGridCellEx class (also directly derived from CExtGridCell ), which is wrapped in several templates implementing various features including FontWeightGet() / FontWeightSet() . The CExtGridCellEx is the base class for most of Prof-UIS cell classes including the CExtGridCellString class, which you may want to use for displaying formatted text. So please let us know which class you are using and if the problem persists.
|
|
Offer Har
|
Mar 18, 2007 - 8:34 AM
|
Thanks,
This is the cell type i was looking for. the CExtGridCellString is good enough in my case, as I won’t have more the a couple of thousand cells, and it seems to run fast enough.
|
|
Jean-Yves Tremblay
|
Mar 16, 2007 - 8:35 AM
|
Hi,
Could it be possible to add more functionalities to the class CExtGCF please ?
I would like to modify the character set of the font without overriding OnQueryCellFont()
Thank you
|
|
Technical Support
|
Mar 19, 2007 - 8:57 AM
|
We have just added a character set parameter and the following methods: FontCharsetSet() , FontCharsetGet() and FontCharsetSetDefault() . If you need this feature right now, please contact us via email.
|
|
Jia Hong Li
|
Mar 16, 2007 - 12:05 AM
|
I would like to chat with you about some image processing.
My Skype: ooy.yoo My MSN: der_boy.tw@yahoo.com.tw
Hope ur reply. ˆˆ
PS: Adm dont delete my message please. Because this forum no member list, I dont know how to contact others.
|
|
Suhai Gyorgy
|
Mar 18, 2007 - 8:59 AM
|
|
|
Jia Hong Li
|
Mar 18, 2007 - 9:20 AM
|
Contact is made, delete this subject plz. Thanks very much.
|
|
Jia Hong Li
|
Mar 15, 2007 - 8:48 PM
|
|
|
Technical Support
|
Mar 16, 2007 - 10:27 AM
|
We think the problem has little to do with Prof-UIS. But, to find out what’s wrong, we need to look at the source code. Would you send us the a test project that demonstrates the problem?
|
|
Brian Horn
|
Mar 15, 2007 - 2:22 PM
|
Hello;
How to maintain a sequence for ribbon bar groups and tab node.
Thanks
|
|
Technical Support
|
Mar 16, 2007 - 10:22 AM
|
It is not completely clear what you mean exactly but please read this forum thread first. If it is not what you mean, please let us know.
|
|
Brian Horn
|
Mar 15, 2007 - 2:21 PM
|
How can I align button to center on ribbon bar ?
|
|
Technical Support
|
Mar 16, 2007 - 10:18 AM
|
A ribbon button is aligned vertically at the center by default. In the RibbonBar sample, there is a Mailings | Create ribbon group with two buttons. When the buttons are small (16x16), they are vertically aligned at the middle. Is that what you asking about?
|
|
Brian Horn
|
Mar 15, 2007 - 2:20 PM
|
Hi;
Did any one know how to apply tooltip for ribbon bar buttons.
thanks
|
|
Technical Support
|
Mar 16, 2007 - 10:09 AM
|
The CExtRibbonBar and CExtRibbonPage classes are derived from CExtMenuControlBar which, in turn, derived from CExtToolControlBar . As you may know, the toolbar does not keep tooltips nor status bar tips. All this information is stored in CExtCmdItem command description objects that can be accessed from the command manager (g_CmdManager->CmdGetPtr() ). So you can set tooltip text for any command in the ribbon in the same way as for a toolbar, i.e. by setting the CExtCmdItem::m_sTipTool property.
If you mean super tooltips, this feature is not yet implemented in v.2.64. This will be available in the next version. You can download a sample that demonstrates the beta version of this feature (Home/Clipboard group only ). The latest code is available at our ftp site.
|
|
Jean-Yves Tremblay
|
Mar 14, 2007 - 2:46 PM
|
Dear support,
I have a set of CExtDynamicControlBar docked in a tab container.
Each CExtDynamicControlBar has a child window (CFormView-derived)
I would like to know, from the view, if its parent is the active/focused control bar in the tab container.
How should I do that ?
I tried with CExtDynamicControlBar::BarStateGet (Checking p_bIsVisibleState) and CExtDynamicControlBar::OnQueryVisibilityInContainerTabs but all the control bars are always visible.
Thank you.
|
|
Technical Support
|
Mar 15, 2007 - 2:13 PM
|
You should use the following code: CFormView * pView = . . .
CExtControlBar * pBar = DYNAMIC_DOWNCAST(CExtControlBar, pView->GetParent() );
If( pBar == NULL )
return . . . // we are in the document mode
if( pBar->IsVisible() )
return . . . // bar is hidden or auto-hidden
CExtDynTabControlBar * pTabbed = pBar->_GetNearestTabbedContainer();
If( pTabbed == NULL )
return . . . // bar is not in the tabbed group
LONG nSelectedTabIndex = pTabbed->GetSwitcherSelection();
If( nSelectedTabIndex < 0 )
return . . . // this can happen only during bar drag-n-drop
CExtControlBar * pSelectedBar = pTabbed->GetBarAt( nSelectedTabIndex, false );
If( pSelectedBar != pBar )
return . . . // our pBar is not selected in the tab group
// if we are here then pView is in the in-group active bar
|
|
Jean-Yves Tremblay
|
Mar 14, 2007 - 2:19 PM
|
Dear support,
I posted a message on 07/03/05 (in the support forum) but I got no reply :
Is there a way to adjust a multiline header cell to fit its height ?
I followed these steps :
http://www.prof-uis.com/Forum_View.aspx?CID=29&M=6242
but it doesn’t work.
Could you tell me at least if such a feature exists or if I need to code it myself. Thanks in advance.
|
|
Technical Support
|
Mar 16, 2007 - 10:30 AM
|
The CExtGridWnd::BestFitRow() and CExtGridWnd::BestFitColumn() methods now can measure and adjust the heights of header rows and width of header columns. You can download the updated source code from our ftp site (contact us via email if you do not know hot to download it).
|
|
Technical Support
|
Mar 15, 2007 - 2:12 PM
|
We are working on the CExtGridWnd::BestFitColumn() and CExtGridWnd::BestFitRow() methods and this will be ready in 3-4 days. We have would already finished best fitting but this should work with multiline text cells in any area of the grid window.
|
|
Juri Tsjornoi
|
Mar 14, 2007 - 9:58 AM
|
How to make scroll bars in CExtControlBar look like they look in Color Picker Bar in your example BitmapEditor? I’d say, they are more elegant, "beautiful" there, especially when Office 2007 UI Theme is switched.
|
|
Suhai Gyorgy
|
Mar 14, 2007 - 10:13 AM
|
The scrollbars you see belong to any control or window you created as child of the controlbar, they are not the scrollbars of the CExtControlBar itself. Anyway, you can theme the scrollbars following this sample.
|
|
Juri Tsjornoi
|
Mar 14, 2007 - 9:30 AM
|
Is this possible to implement and swith between ribbon bar and usual "old style" with menu bar and tool bars in the application? So the user can select what he prefers most, whether ribbon bar or menu bar with tool bars style.
|
|
Technical Support
|
Mar 14, 2007 - 11:33 AM
|
Yes, you can have the ribbon bar, menu bar and toolbars in one application. The CExtRibbonBar is a control bar which statically attached to the top border of its parent window. You can simply hide it like the status bar. You can simply hide all menu bar and toolbars and set their m_bAppearInDockSiteControlBarPopupMenu properties to false to prevent them from appearing in the context menus displayed by Prof-UIS over the frame window. You should use the CFrameWnd::ShowControlBar() method to show any of the control bars discussed in this message.
|
|
David Skok
|
Mar 14, 2007 - 8:27 AM
|
I want to hide/show some columns in CExtGridWnd. I use
pCell->ExtentSet(0, 0); pCell->ExtentSet(0, 1);
to hide the column then call
OnSwRecalcLayout( true ); OnSwUpdateScrollBars();
The first problem is the grid does not redraw showing the new layout.
The second problem is when I cursor through to focus cells in the grid, the zero width column is still focusable. Focus should skip over the zero width column. How can I fix this?
|
|
Technical Support
|
Mar 15, 2007 - 2:02 PM
|
You can use OnSwDoRedraw() to redraw the grid window. The CExtReportGridWnd class may be more convenient for working with active/inactive columns. Alternatively you can implement the keyboard processing for the VK_LEFT and VK_RIGHT keys in a CExtGridWnd -derived class manually so you can skip any column that has a zero width.
|
|
Jia Hong Li
|
Mar 13, 2007 - 9:40 PM
|
Why ?
I am tracing some parameters. Add TRACE( PARAMETER ), and get nothing. So, I try to use TRACE("..........."), but get nothing again in the Debug Window.
PS: I try this test in any sample will get the same result.
|
|
Suhai Gyorgy
|
Mar 14, 2007 - 6:07 AM
|
I’m not sure if that helps, but try using TRACE0("..........\n") for messages with zero parameter, TRACE1, TRACE2, etc for messages with 1, 2, etc parameters. Those variations usually work for me.
|
|
Jia Hong Li
|
Mar 14, 2007 - 8:52 AM
|
It’s work now. I have another question about thumbnail, and I send mail to support@prof-uis.com. Could you check that problem for me ?? thanks
|
|
Technical Support
|
Mar 15, 2007 - 6:45 AM
|
Actually we have not yet received your email. You can also send it to profuis at gmail.com.
|
|
Suhai Gyorgy
|
Mar 12, 2007 - 4:52 AM
|
Dear Support,
I have more than one dynamic bar in tabbed document mode (similar to SDI_DynamicBars sample). As I experienced, when I change their order and the selected tab index in that group, this change is not saved and loaded back at next program startup. If I have same bars tab-docked together (like with DockControlBarIntoTabbedContainer ), these changes are saved and loaded properly. Would it be possible to implement this feature for the bars in tabbed document mode, as well?
Thank you, Chris
|
|
Technical Support
|
Mar 12, 2007 - 3:33 PM
|
We have just fixed several issues with CExtDynamicBarSite . Thank you for the reported problems and suggestions. We emailed you information about how to download the updated code from our site.
|
|
Suhai Gyorgy
|
Mar 13, 2007 - 7:05 AM
|
Dear Support,
I have downloaded the latest source code, rebuilt the library and the SDI_DynamicBars sample that came with this latest code. The only improvement I saw was that now the sample didn’t crash, not even once, when closing the application (the issue with CExtHookSink seems to be solved now). That’s very nice. But I can’t see the suggestions of my first post implemented. Or maybe I misunderstood your last post, and those features will be added later?
Thank you, Chris
|
|
Technical Support
|
Mar 13, 2007 - 1:47 PM
|
We emailed you how to download the latest code from our ftp site. Please let us know if the problems persist.
|
|
Fransiscus Herry
|
Mar 11, 2007 - 4:28 AM
|
Dear Prof-UIS,
I would like to know how to paint the client area in Mainframe for MDI application. Any suggestion of this, especially without much flickering?
regards, F.Herry
|
|
Fransiscus Herry
|
Mar 14, 2007 - 11:41 PM
|
Dear Prof-UIS,
I have checked the compilation time both using prof-uis and using plain MFC. It seemed the code to paint the mainframe background is only a basic code to paint which have some weaknesses as i surfaced to you earlier. But don’t worry, i have managed to custom paint the background using a code from Bogdan Ledwig in www.codeguru.com <http://www.codeguru.com/cpp/w-d/doc_view/background/article.php/c3311/>. Hopefully this will help other people that want to solve the same problem. This class works just fine with Prof-uism though i had to modify the painting method and setbitmap method in this class.
regards, F. Herry
|
|
Fransiscus Herry
|
Mar 14, 2007 - 2:15 AM
|
Dear Prof-Uis,
I have successfully implemented this code. I can load a bitmap as well using CExtImage (as per search in this forum). However, when the window of the background is resized by maximize button or minimize, the background image seems to be "late" for re-paint. maybe you could help me again with this matter.
I also noticed that in this forum about m_bCustomBackgroundInHeritanceEnabled. I just want to know whether this kind of function (overriden code) have the same purposes to paint the background?
FYI, i am happy with the service for fast answer. Thank you.
|
|
Technical Support
|
Mar 14, 2007 - 9:24 AM
|
Prof-UIS is much slower when compiled under debug settings because it is crammed with assert statements to make it reliable. So please compile a release version and let us know if the problem persists. The CExtPaintManager::m_bCustomBackgroundInheritanceEnabled flag allows you to paint a custom background for windows in your application. By default, it is set to false and the background of a particular window is painted by the current paint manager. For example, if the current paint manager is CExtPaintManagerOffice2003 , a gradient background will be painted. Now suppose you need to paint some custom background for a window or you want to paint a custom background that is consistent between all the other windows in the application like in the Tabbed Bars sample. When CExtPaintManager::m_bCustomBackgroundInheritanceEnabled is true , the paint manager, instead of painting the standard background of the window, sends a CExtPaintManager:: g_nMsgPaintInheritedBackground message to the window back and allows it to paint the background in the handler of this message. If the message is not handled, the paint manager sends it to its parent and so forth until the message is processed, which means the background has been painted. If the message has not been processed by parent windows, the paint manager simply paints the standard background. There is also a FAQ article relating to your question: How to paint a custom background consistent between the windows in my application?
|
|
Technical Support
|
Mar 12, 2007 - 3:17 PM
|
Here is how you could do this.
1) Subclass the MDI client area and handle WM_ERASEBKGND and WM_PAINT messages: class CMyMdiClientAreaWnd : public CWnd
{
protected:
virtual LRESULT WindowProc( UINT message, WPARAM wParam, LPARAM lParam )
{
if( message == WM_ERASEBKGND )
return TRUE;
if( message == WM_PAINT )
{
CPaintDC dc( this );
CRect rc;
GetClientRect( &rc );
dc.FillSolidRect( &rc, RGB(0,255,0) ); // draw entirely green background
return TRUE;
}
return CWnd::WindowProc( message, wParam, lParam );
}
}; 2) Define the following property in your main frame class CMyMdiClientAreaWnd m_wndMyMdiClientArea; and invoke the line below somewhere at the end of the OnCreate() handler method of your main frame class m_wndMyMdiClientArea.SubclassWindow( ::GetDlgItem( m_hWnd, AFX_IDW_PANE_FIRST ) );
|
|
Matthew Claus
|
Mar 9, 2007 - 1:58 PM
|
Hi!
I need to resize windows put in docked state in the way I resize them by moving selectable (and dragable) border between two docked windows. I find out that I can not just change desired size with SetInitDesiredSize* and call RecalcLayout(). It looks like I have to issue a command agains the docking window itself? but was not able to find out the exact sequence.
Actually I have more then one level of docking but I believe if I can resize at any specific level the same procedure will work on all levels.
TIA, GS, gseryakov@espeed.com, in behalf of MC
|
|
Matthew Claus
|
Mar 15, 2007 - 2:58 PM
|
I’ve just sent the example to support@prof-uis.com.
I am trying to resize the two control bars docked together:
void CChangeFloatingSizeView::OnBnClickedButton1() { CExtControlBar & bar = ( STATIC_DOWNCAST( CMainFrame, GetParentFrame() ) ) -> m_wndResizableBar; CExtControlBar & bar2 = ( STATIC_DOWNCAST( CMainFrame, GetParentFrame() ) ) -> m_wndResizableBar2;
CRect r1, r2; bar.GetWindowRect(&r1); bar2.GetWindowRect(&r2);
r1.InflateRect(0, 5); r2.DeflateRect(0, 5);
bar.SetInitDesiredSizeVertical(CSize(r1.Width(), r1.Height())); bar2.SetInitDesiredSizeVertical(CSize(r2.Width(), r2.Height())); }
|
|
Technical Support
|
Mar 16, 2007 - 10:25 AM
|
Please add bar.GetParentFrame()->RecalcLayout(); at the end of CChangeFloatingSizeView::OnBnClickedButton1() . That should help
|
|
Matthew Claus
|
Mar 12, 2007 - 10:45 AM
|
> For example, you have two vertically docked control bars so they share one column at left. If you want them to > have a particular width, you should call SetInitDesiredSizeHorizontal() for both of them.
Does not work as described. Should I call something similar to pFrame->RecalcLayout()? Is it crucial if I call SetInitDesiredSizeHorizontal for these control bars with two calls from script? In between we’ve got a SetWindowPos call for the window nested in the control bar and maybe some messages are processed.
> If it is not a secret, would let us know what is the reason for resizing control bars programmatically?
Suppose you have several similar dialogs docked together. I you decided to change the shape of these dialogs (hide a column, f.e.) then you may want to resize these docked windows.
|
|
Technical Support
|
Mar 10, 2007 - 11:30 AM
|
The SetInitDesiredSize* methods always work but they should be used properly for the control bars that affect the layout. For example, you have two vertically docked control bars so they share one column at left. If you want them to have a particular width, you should call SetInitDesiredSizeHorizontal() for both of them. If you take a more complex layout, for instance, when you have two or more control bars docked into a tabbed container that is in the position of one of the mentioned control bars, then you should call SetInitDesiredSizeHorizontal() exactly for this container so all this can work correctly. So if you did want to implement some generic algorithm of changing the layout programmatically, you would have to analyze all these combinations. If it is not a secret, would let us know what is the reason for resizing control bars programmatically?
|
|
Matthew Claus
|
Mar 15, 2007 - 1:00 PM
|
> For example, you have two vertically docked control bars so they share one column at left. If you want them to > have a particular width, you should call SetInitDesiredSizeHorizontal() for both of them.
Does not work as described. Should I call something similar to pFrame->RecalcLayout()? Is it crucial if I call SetInitDesiredSizeHorizontal for these control bars with two calls from script? In between we’ve got a SetWindowPos call for the window nested in the control bar and maybe some messages are processed.
> If it is not a secret, would let us know what is the reason for resizing control bars programmatically?
Suppose you have several similar dialogs docked together. I you decided to change the shape of these dialogs (hide a column, f.e.) then you may want to resize these docked windows.
|
|
Technical Support
|
Mar 15, 2007 - 2:15 PM
|
Would you send us a test project that demonstrates what you need to achieve so we can help you?
|
|
Vincent Lin
|
Mar 8, 2007 - 7:29 PM
|
Dear Sir, How to get the hue and saturation from CExtColorCtrl and CExtColorButton ?
|
|
Technical Support
|
Mar 9, 2007 - 8:16 AM
|
In the CExtBitmap class there are two static methods, stat_RGBtoHSL and stat_HLStoRGB , that should help you perform these conversions.
|
|
Suhai Gyorgy
|
Mar 9, 2007 - 1:52 AM
|
What you need is an RGB to HSL conversion algorithm. You can find a lot of implementation if it on the net, this is the first I’ve found: Paul Bourke’s Converting between various colour spaces. The code given on that page is in C, so probably it won’t give you any trouble using it.
|
|
Paul Cowan
|
Mar 8, 2007 - 8:54 AM
|
CExtGridCellComboBox behaives differently then a standard combo box when typeing a character to select an item. With a standard combo box, typeing a letter will select the item that begins with that letter, Repeating the same character will only select items starting with the letter. With CExtGridCellComboBox, it’s mataching any character in the string, not just the first one. How do I get CExtGridCellComboBox to behaive like the standard combobox and only look at the starting characeter?
|
|
Paul Cowan
|
Mar 9, 2007 - 9:23 AM
|
I and W do work, but only becasue they only appear as the first character in the strings. Pressing t or e will cycle all the items in the list. I’d like the control to only check the first character.
|
|
Technical Support
|
Mar 13, 2007 - 11:49 AM
|
Thank you for reporting the problem. Please update the CExtGridCellComboBox::OnInplaceControlPreTranslateMessage() method with this one and recompile the library: bool CExtGridCellComboBox::OnInplaceControlPreTranslateMessage(
MSG * pMsg,
HWND hWndInplaceControl,
CExtGridWnd & wndGrid,
LONG nVisibleColNo,
LONG nVisibleRowNo,
LONG nColNo,
LONG nRowNo,
INT nColType,
INT nRowType,
const RECT & rcCellExtra,
const RECT & rcCell,
const RECT & rcInplaceControl
)
{
ASSERT_VALID( this );
ASSERT( hWndInplaceControl != NULL && ::IsWindow(hWndInplaceControl) );
ASSERT_VALID( (&wndGrid) );
rcInplaceControl;
DWORD dwCellStyle = GetStyle();
if( (dwCellStyle&__EGCS_READ_ONLY) != 0 )
return false;
CExtGridInplaceEdit * pEdit =
static_cast < CExtGridInplaceEdit * > ( CWnd::FromHandle( hWndInplaceControl ) );
ASSERT( pEdit != NULL );
ASSERT_VALID( pEdit );
bool bEnumMode = GetEnumMode();
if( bEnumMode
&& pMsg->message == WM_LBUTTONDBLCLK
)
{
_DoItemsIterate(
hWndInplaceControl,
true,
false
);
pEdit->DoEndEdit( true );
return true;
}
if( bEnumMode
&& pMsg->message == WM_MOUSEWHEEL
)
{
SHORT zDelta = HIWORD( pMsg->wParam );
if( zDelta != 0 )
_DoItemsIterate(
hWndInplaceControl,
zDelta < 0 ? true : false,
false
);
return true;
}
if( pMsg->message == WM_KEYDOWN )
{
DWORD dwBseStyle = wndGrid.BseGetStyle();
switch( pMsg->wParam )
{
case VK_DOWN:
case VK_UP:
if( bEnumMode
&& (dwBseStyle&__EGWS_BSE_WALK_VERT) == 0
)
{
_DoItemsIterate(
hWndInplaceControl,
( pMsg->wParam == VK_DOWN ) ? true : false,
true
);
return true;
}
break;
case VK_F4:
if( (GetStyle()&__EGCS_BUTTON_DROPDOWN) != 0
&& IsButtonEnabled( __EBTT_DROPDOWN )
)
{
CRect _rcCellExtra( rcCellExtra );
CRect _rcCell( rcCell );
pEdit->DoEndEdit( true );
OnButtonPressed(
wndGrid,
__EBTT_DROPDOWN,
_rcCellExtra,
_rcCell,
nVisibleColNo,
nVisibleRowNo,
nColNo,
nRowNo,
nColType,
nRowType
);
return true;
}
break;
case VK_DELETE:
if( bEnumMode )
return true;
break;
}
} // if( pMsg->message == WM_KEYDOWN )
if( bEnumMode
&& pMsg->message == WM_CHAR
)
{
CString sSpecSymbols( _T("~`!@#$%ˆ&*()_-+={}[]:;\"’|\\<,>.?/ ") );
TCHAR ch = (TCHAR)pMsg->wParam;
if( IsCharAlphaNumeric( (TCHAR)pMsg->wParam )
|| sSpecSymbols.FindOneOf( CString(ch) )
)
{
LONG nNextItem = -1L;
LONG nCurSel = GetCurSel();
LONG nItemsProcessed = 0L;
LONG nItem = nCurSel;
LONG nSize = LONG( m_arrItems.GetSize() );
while( nItemsProcessed < nSize )
{
if( nItem == -1L )
nItem = 0L;
else if( nItem < nSize - 1L )
nItem++;
else
nItem = 0L;
ITEM_INFO * pItemInfo = m_arrItems[ nItem ];
ASSERT( pItemInfo != NULL );
CExtSafeString sItemString = pItemInfo->m_sString;
if( sItemString.GetLength() > 0 )
{
CExtSafeString sStringToFind = ch;
sItemString.MakeLower();
sStringToFind.MakeLower();
if( sItemString[0] == sStringToFind[0] )
{
nNextItem = nItem;
break;
}
}
nItemsProcessed++;
}
if( nNextItem >= 0L
&& nNextItem != nCurSel
)
{
SetCurSel( nNextItem, true );
::SetWindowText(
hWndInplaceControl,
GetItemString( nNextItem )
);
::SendMessage(
hWndInplaceControl,
EM_SETSEL,
0, -1
);
}
}
return true;
}
return false;
}
|
|
Technical Support
|
Mar 9, 2007 - 9:54 AM
|
Thank you for clarifying the issue. We will fix this as soon as possible.
|
|
Technical Support
|
Mar 9, 2007 - 8:57 AM
|
We tried to reproduce your report but failed. You can use the Prof-UIS_Controls sample to make sure of that yourself: simply change the way the first cell in the CPageGrid::_InitColumnComboBox method is initialized. CExtGridCellComboBox * pCellComboBox0 =
STATIC_DOWNCAST(
CExtGridCellComboBox,
m_wndGrid.GridCellGet( nColNo, 0L )
);
pCellComboBox0->SetEnumMode( true );
pCellComboBox0->AddString( _T("Item1") );
pCellComboBox0->AddString( _T("Wtem1") );
pCellComboBox0->AddString( _T("Item2") );
pCellComboBox0->AddString( _T("Wtem2") );
pCellComboBox0->AddString( _T("Wtem3") );
pCellComboBox0->AddString( _T("Item3") );
pCellComboBox0->AddString( _T("Wtem4") );
pCellComboBox0->SetCurSel( 2 ); So if you repeatedly press I or W, you can see that items are selected in the proper way.
|