Subject |
Author |
Date |
|
Eric
|
Feb 3, 2011 - 3:36 PM
|
|
|
Eric
|
Feb 3, 2011 - 3:47 PM
|
Nevermind, I just loaded a ID_SEPARATOR resource instead of the icon’s id and it worked.
|
|
Alastair Watts
|
Feb 2, 2011 - 7:41 AM
|
We could do with variant of the ’Value Filters’ feature for dealing with column values that are populated using a CExtCheckComboBox. Example: column value 1: red column value 2: green column value 3: red, green The Filter Value list would offer 2 items: Red Green Ticking either would do a ’string contains’ search. Otherwise I’m happy to try and implement this myself if you provide a few pointers, thanks.
|
|
Alastair Watts
|
Feb 2, 2011 - 5:50 AM
|
I’ve noticed 2 things: 1. Inner string cells with an icon don’t size correctly 2. Outer column header text is truncated (...) when inner column data is smaller than the header
|
|
Alastair Watts
|
Feb 15, 2011 - 10:20 AM
|
|
|
Alastair Watts
|
Feb 2, 2011 - 6:12 AM
|
a little more info... I’m using filter headers
|
|
tera tera
|
Feb 1, 2011 - 11:48 PM
|
|
|
tera tera
|
Feb 6, 2011 - 4:50 PM
|
Hello.
Cannot you speed up? And I want a function to sense that all _SyncAllItems was finished. .....
|
|
tera tera
|
Feb 15, 2011 - 7:40 PM
|
Hello.
My customer is that display of MDI is slow, and my customer is angry.
Please answer it.
|
|
Alastair Watts
|
Feb 1, 2011 - 6:15 AM
|
This control flickers alot when moving the pointer over it ... no mouse click required!
|
|
Alastair Watts
|
Feb 15, 2011 - 10:19 AM
|
|
|
Charles Bisbee
|
Feb 1, 2011 - 12:29 AM
|
Gentlemen, I am using code to paint the NC area. A consultant first changed the color. We need round corners. He got a message saying add transparency. I did so and it is not working correctly. 1. It appears that you take the bitmap and stretch it to fill the area. This distorts the rounding 2. Some areas are not rendered as transparent, apparently after the stretch, but are black. Some areas are transparent and they are the same in the orginal bitmap I need smooth rounded transparent corners. How do I do this I would like to attach files but cant see how to do this.
|
|
Technical Support
|
Feb 1, 2011 - 9:54 AM
|
The width of rounded corners in pixels should be less than or equal to the width of left/right border.
|
|
tera tera
|
Jan 31, 2011 - 11:52 PM
|
Hello. I want to change the scroll width of the tab.
In a click, I want to more largely scroll a tab. http://ifreeta.dee.cc/20110201/Untitled2.html When I kept on pushing the button of the tab, I cannot see the scroll of the tab.
It is late and cannot speed up? ( Prof2.87 version )
|
|
Technical Support
|
Feb 1, 2011 - 9:53 AM
|
The CExtTabWnd::OnTabWndCalcButtonSize() virtual method computes the size of buttons inside the tab window. You can implement it and return a larger size.
The scrolling is fixed in Prof-UIS 2.91.
|
|
Robert Webb
|
Jan 31, 2011 - 9:51 PM
|
<!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves /> <w:TrackFormatting /> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>EN-AU</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:DontVertAlignCellWithSp /> <w:DontBreakConstrainedForcedTables /> <w:DontVertAlignInTxbx /> <w:Word11KerningPairs /> <w:CachedColBalance /> </w:Compatibility> <w:DoNotOptimizeForBrowser /> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val="--" /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;} </style> <![endif]-->
Hi, I need a list control (report-style) with the following features: - User can edit text in any column, not just the first like CExtListCtrl. - Preferably the whole row should be highlighted when selected. - Items can be dragged up and down into a different order. Currently I’m using a CExtListCtrl, but it doesn’t seem to support any of these (except maybe dragging if one writes most of the dragging code themselves). Aren’t these the sort of things Prof-UIS should make easier? Is my only option using a grid instead? The Report Grid sample still doesn’t demonstrate the ability to drag items up and down though. And I was hoping not to have to migrate my existing code from the CListCtrl interface to the more complicated grid interface, since these are all things the list control should do. Thanks, Rob.
|
|
Technical Support
|
Feb 2, 2011 - 5:31 AM
|
The CExtGridWnd::OnGridCellInputComplete() virtual method is the most universal. You can override the CExtGridWnd::OnGridCellInplaceControlTextInputComplete()</code> / CExtGridWnd::OnGridCellInplaceControlTextInputVerify() virtual methods for verifying input on-the-fly.
|
|
Robert Webb
|
Feb 2, 2011 - 10:39 PM
|
Thanks, OnGridCellInputComplete() works. For some reason though, OnGridCellInplaceControlTextInputVerify() isn’t working. It never gets called. Instead CExtGridCell::OnInplaceControlTextInputVerify() gets called directly from CExtGridInplaceEdit::DoVerifyTextInput(), without going to my virtual function (I checked this in the debugger). Normally this sort of thing is because of an error in the function heading, but I can’t find any differences, and copy/pasted the header to begin with anyway. I’ll copy/paste the header from my code below in case you want to confirm it’s right.
class MyGrid : public CExtGridWnd
{
public:
virtual bool OnGridCellInplaceControlTextInputVerify(
CExtGridCell &cell, HWND hWndInplaceControl, LONG nVisibleColNo,
LONG nVisibleRowNo, LONG nColNo, LONG nRowNo, INT nColType,
INT nRowType, __EXT_MFC_SAFE_LPCTSTR sTextInitial,
__EXT_MFC_SAFE_LPCTSTR sTextPrevious, CExtSafeString &sTextNew,
bool bEndEdit);
virtual void OnGridCellInputComplete(CExtGridCell &cell, LONG nColNo,
LONG nRowNo, INT nColType,
INT nRowType, HWND hWndInputControl);
}; Any idea why my virtual function doesn’t get called?
|
|
Technical Support
|
Feb 4, 2011 - 9:29 AM
|
The CExtGridCell::OnInplaceControlTextInputVerify() method does only one thing: it invokes the CExtGridWnd::OnGridCellInplaceControlTextInputVerify() method. So, the last method must always be invoked. Please try rebuilding completely both Prof-UIS and your project.
|
|
Robert Webb
|
Feb 18, 2011 - 12:34 AM
|
I figured out the problem by the way. The declaration in the documentation is wrong! It is missing the const from the first argument. This makes it count as a different function rather than an override. I found a similar problem in the documentation for CustomizeStateSerialize(), which should return bool, not void as the docs say. It also has a second optional argument, which should always be mentioned for virtual functions as we should pass it down to the base version of the function even if we don’t use it ourselves. Also, why are most virtual functions in the docs missing the space between "virtual" and the function’s return type? Eg "virtualbool OnGridCellInplaceControlTextInputVerify" and "virtualvoid CustomizeStateSerialize"? I hope you’ll fix these things in the docs. Thanks, Rob.
|
|
Technical Support
|
Feb 1, 2011 - 9:52 AM
|
Both CExtGridWnd and CExtReportGridWnd grids can be a replacement for the list view common control in the report mode. The CExtGridWnd control covers everything you need. You can see data row drag-n-dropping and header column drag-n-dropping in the SimpleGrids sample application. The FormulaGrid sample application demonstrates drag-n-dropping and clipboard operations with abstract cell regions. This is supported by the CExtGridWnd control - not only by CExtFormulaGridWnd . It’s possible to use the data row drag-n-dropping like demonstrated in this test project: http://www.prof-uis.com/download/forums/test_tree_grid_idea_dnd.zip
|
|
Robert Webb
|
Feb 2, 2011 - 1:29 AM
|
Thanks for the replies. Mantra, yeah I was thinking of using codeproject stuff, but wasn’t sure how it would fit in with Prof-UIS themes and was expecting Prof-UIS to already handle this stuff somehow. I’ve migrated to a grid now. What do I use to get a callback when an item in the grid is edited by the user (regardless of how)? Thanks, Rob.
|
|
Mantra
|
Feb 2, 2011 - 6:16 AM
|
Rob, I not using any Codeproject Ctrl now, i wrote a wrapper (based on the prof uis CExtGridWind class) that handle all the stuff for me.
it acts like the common listctrl but has more functions and it’s themes, etc.
If you need something like this then let me know and I’ll send you a copy and smale example of the wrapper class. just provide me your e-mail address.. Cheers
|
|
Robert Webb
|
Jan 31, 2011 - 9:53 PM
|
(Sorry about all that weird stuff at the start of my post, no idea how it got there)
|
|
Mantra
|
Feb 1, 2011 - 5:37 AM
|
I don’t know what kind of ListCtrl you use, but i used first one I found at codeproject which was very easy to use.
later the i changed to Prof UIS and wrote a wrapper to cover about 90% of all functions I used in my app.
Today I’m very happy with this solution, it took me less han one day to migrate to the new control.
Currently i have some wrappers as "ListCtrl"
- One just to show simple Text and Numbers and one Combobox with editing when needed (just as my from codeproject)
- One with all needed Controls inside (acts in the same way as the first one)
- One with Tree’s and supports DND (guess this functions can be adopted easy to other grids c. is based on CExtGridWnd)
- One with ADO Support (others also load from SQL and SP’s data into the grid and excel output)
If you think this maybe could make your life a bit easier then drop me a line. Using is near the same way as you may have in your code...
// Set Header text
m_Report.SetColumnHeader(_T("Artikel, 120;Filtergruppe, 120;Zeitraum, 120;Preis, 80, 2;Berech.Art, 80;Aktionstext, 250"
m_Report.SetGridLines(TRUE); // SHow grid lines
m_Report.DeleteAllItems();
int i = 0;
// view for faster processing !
m_DB.m_strSort = _T("Art_Suchbegriff ASC");
m_DB.Open(-1, m_DB.GetSQLQuery());
while ( ! m_DB.IsEOF() )
{
temp.Format(TEXT("%s - %s"), (CString) m_DB.m_Art_Artikelnummer, (CString) m_DB.m_Art_Suchbegriff);
m_Report.InsertItem(i, temp);
m_Report.SetItemData(i, m_DB.m_Akt_ID);
m_Report.SetItemText(i, 1, (CString) m_DB.m_MGrp_Bezeichnung);
temp.Format(TEXT("%s - %s"), m_DB.m_Akt_DatumVon.Format(_T("%Y.%m.%d")), m_DB.m_Akt_DatumBis.Format(_T("%Y.%m.%d")));
m_Report.SetItemText(i, 2, temp);
temp.Format(TEXT("%.2f"), m_DB.m_Akt_Preis);
m_Report.SetItemText(i, 3, temp);
m_Report.SetItemText(i, 4, temp);
m_Report.SetItemText(i, 5, (CString) m_DB.m_Akt_Text);// old one ?
if ( m_DB.m_Akt_DatumBis < m_Time )
{
m_Report.SetItemBkColor(i, -1, RGB(160, 0, 0));
m_Report.SetItemTextColor(i, -1, RGB(255, 255, 255));
}
i++;
m_DB.MoveNext();
}
m_Report.SiwAutohideScrollBarSet(
true, true);
m_Report.SiwScrollTypeHSet(2, true);
m_Report.OnSwUpdateScrollBars();
m_Report.UpdateStaticFilterValueForOuterRow( -1L );Cheers CDBvAktionen m_DB; m_Report.SetBestFitOnAllRows();
|
|
Alastair Watts
|
Jan 31, 2011 - 1:54 PM
|
|
|
Technical Support
|
Feb 1, 2011 - 9:51 AM
|
Thank you for reporting this issue. It can be fixed by adding the DT_NOPREFIX flag into the CExtRichContentLayout::stat_DrawText() method invocations in the CExtTreeCtrl class source code (3 cases in the .../Prof-UIS/Src/ExtControls.cpp file).
|
|
Rado Manzela
|
Jan 31, 2011 - 7:44 AM
|
When I have single item selected and focused, when I click to it’s expand button, you unset the focus and then set focus to the same item again. Why do you do that? It is causing unnecessary flashing in my other window which is showing some details for focused/selected item.
|
|
Technical Support
|
Jan 31, 2011 - 11:17 AM
|
The CExtTreeGridWnd::ItemExpand() method performs these focused item manipulations. This is required to ensure the focused row in the CExtTreeGridWnd control is never under collapsed row. The focused row resetting is always performed without tree grid re-painting.
|
|
Rado Manzela
|
Jan 31, 2011 - 3:11 PM
|
Can’t you check whether focus/selection really needs to be changed first? Tree is not redrawn, but my OnGbwSelectionChanged() is called twice, first with NULL focus, then with previous focus and my status window is flashing. It was not so bad in 2.87
|
|
Rado Manzela
|
Jan 31, 2011 - 7:47 AM
|
it seems this issue appeared when I’ve upgraded from 2.87 to 2.92. an you check it please?
|
|
Rado Manzela
|
Jan 31, 2011 - 6:01 AM
|
I need to have edit box in dialog which works exactly like CExtGridCellCurrency. I think it could be done by creating dummy grid containing only one cell. But I’m worried about edit box borders to match selected theme. I doubt I’m the only one with the same problem, is there some ready class/template to do this? I know you have some undocumented templates in the code. It could be some template which would have one class parameter - cell class and would provide method for easy initialization (creating one row/column, creating cell instance, setting styles so that edit starts immediately after click, like in normal edit box, etc.)
|
|
Technical Support
|
Feb 1, 2011 - 9:54 AM
|
We cannot reproduce this. Could you provide us with a screen short of the locale settings dialog?
|
|
Rado Manzela
|
Feb 1, 2011 - 4:02 PM
|
Just set language to "Slovak" (tested in Win 7, UIS 2.92, MBCS DEBUG)
|
|
Technical Support
|
Feb 1, 2011 - 9:52 AM
|
The CExtEditSystemNumberCurrencyBase::m_strCurrencySymbol property contains the currency symbol and you can change it. Please note, it automatically changes when a WM_SETTINGCHANGE message is received. This means you need to handle this message and specify your preferred currency symbol.
|
|
Technical Support
|
Jan 31, 2011 - 11:17 AM
|
First of all, the CExtEditSystemCurrency control may fit your requirements. This control is demonstrated on the System Number/Currency dialog page in the ProfUIS_Controls sample application. If you choose CExtGridWnd control with singe CExtGridCellCurrency cell, then you need a template class similar to CExtED . This template class just paints the non-client area borders using the CExtEditBase::stat_DoPaintNc() API. The CExtGridWnd class does not affect to window non-client area at all.
|
|
Rado Manzela
|
Jan 31, 2011 - 3:04 PM
|
I’ve seen that class, but I need to have more edit boxes with various currency symbols and I haven’t found any method for specifying currency symbol in documentation. Am I missing it?
|
|
Rado Manzela
|
Feb 1, 2011 - 2:26 AM
|
NVM, I’ve cderived my class from CExtEditSystemCurrency and added method to change m_strCurrencySymbol. But there is bug, if you set some language settings in windows with comma as decimal separator, pressing the comma key will ASSERT in CExtEditSystemCurrency::LongDoubleGet() const. Can you fix it please?
|
|
Rado Manzela
|
Jan 31, 2011 - 5:35 AM
|
I create date time cell, set this options:
d->ModifyStyle(__EGCS_BUTTON_DROPDOWN,0); d->SetMode(CExtGridCellDateTime::date);
Cell is initially empty. When I click into cell to start edit, then press "1", it puts there some date like 1.January....... Then I open the calendar control, click to "none" button to erase the date. When I select cell to start edit and press "1" again, in debug mode it asserts in
CExtDateTimeWnd::stat_GetDaysInMonth( INT nYear, INT nMonth )
at
ASSERT( dt1.GetStatus() == COleDateTime::valid || dt1.GetStatus() == COleDateTime::null );
nMonth is -1
I’m trying it with 2.92 Can you check it please? Thank you.
|
|
Technical Support
|
Jan 31, 2011 - 11:17 AM
|
Thank you for reporting this issue. To fix it, please update the source code for the CExtGridInplaceDateTime::Create() virtual method in the ExtGridWnd.h file:
virtual bool Create()
{
__EXT_DEBUG_GRID_ASSERT_VALID( this );
__EXT_DEBUG_GRID_ASSERT( m_hWnd == NULL );
if( m_wndGrid.GetSafeHwnd() == NULL )
{
__EXT_DEBUG_GRID_ASSERT( FALSE );
delete this;
return false;
}
DWORD dwAreaFlags =
CExtGridHitTestInfo::CellTypesToAreaFlags(
m_nColType,
m_nRowType
);
bool bFontMustBeDestroyed = false;
HFONT hCellFont = m_cell.OnQueryCellFont( m_wndGrid, m_nVisibleColNo, m_nVisibleRowNo, m_nColNo, m_nRowNo, m_nColType, m_nRowType, dwAreaFlags, bFontMustBeDestroyed );
HFONT hFont = hCellFont;
if( hFont == NULL )
{
hFont = (HFONT)
m_wndGrid.OnSiwGetDefaultFont().GetSafeHandle();
if( hFont == NULL )
hFont = (HFONT)
::GetStockObject(DEFAULT_GUI_FONT);
if( hFont == NULL )
{
if( hFont == NULL )
hFont = (HFONT)
::GetStockObject(SYSTEM_FONT);
if( hFont == NULL )
{
__EXT_DEBUG_GRID_ASSERT( FALSE );
delete this;
return false;
}
}
}
LOGFONT lf;
__EXT_DEBUG_GRID_VERIFY( ::GetObject(hFont,sizeof(LOGFONT),&lf) );
if( bFontMustBeDestroyed
&& hCellFont != NULL
)
::DeleteObject( hCellFont );
if( ! m_font.CreateFontIndirect(&lf) )
{
__EXT_DEBUG_GRID_ASSERT( FALSE );
delete this;
return false;
}
UINT nDrawTextFlags = m_cell.OnQueryDrawTextFlagsForInplaceEdit( m_nVisibleColNo, m_nVisibleRowNo, m_nColNo, m_nRowNo, m_nColType, m_nRowType, dwAreaFlags, 0 );
bool bReadOnly = false;
bool bPassword = false;
COLORREF clrText = COLORREF(-1L);
COLORREF clrBack = COLORREF(-1L);
m_cell.OnInplaceControlQueryStyle(
m_wndGrid, this, m_nVisibleColNo, m_nVisibleRowNo, m_nColNo, m_nRowNo, m_nColType, m_nRowType,
dwAreaFlags, bReadOnly, bPassword, clrBack, clrText
);
COLORREF clrTextAll = m_cell.TextColorGet( CExtGridCell::__ECS_ALL );
COLORREF clrTextNormal = m_cell.TextColorGet( CExtGridCell::__ECS_NORMAL );
if( clrTextAll != COLORREF(-1L) )
clrText = clrTextAll;
else if( clrTextNormal != COLORREF(-1L) )
clrText = clrTextNormal;
COLORREF clrBackAll = m_cell.BackColorGet( CExtGridCell::__ECS_ALL );
COLORREF clrBackNormal = m_cell.BackColorGet( CExtGridCell::__ECS_NORMAL );
if( clrBackAll != COLORREF(-1L) )
clrBack = clrBackAll;
else if( clrBackNormal != COLORREF(-1L) )
clrBack = clrBackNormal;
if( clrText != COLORREF(-1L) )
SetTextColor( clrText );
if( clrBack != COLORREF(-1L) )
SetBkColor( clrBack );
m_bInConstruction = true;
CExtGIED < CExtGIE < CExtDateTimeWnd > > :: Create( &m_wndGrid, m_rcInplaceControl );
if( m_hWnd == NULL )
{
__EXT_DEBUG_GRID_ASSERT( FALSE );
delete this;
return false;
}
SetFont( &m_font );
CExtGridCellDateTime * pCell = DYNAMIC_DOWNCAST( CExtGridCellDateTime, &m_cell );
__EXT_DEBUG_GRID_ASSERT( pCell != NULL );
__EXT_DEBUG_GRID_ASSERT_VALID( pCell );
CExtGridCellDateTime::eMode_t eMode = pCell->GetMode();
SetMode( (eMode_t)eMode );
CExtGridCellDateTime::eTimeFormat_t eTimeFormat = pCell->GetTimeFormat();
SetTimeFormat( (eTimeFormat_t)eTimeFormat );
// synchronize item’s visible status
if( eMode == CExtGridCellDateTime::date || eMode == CExtGridCellDateTime::all )
{
SetShowItem( CExtDurationWnd::year, pCell->IsItemVisible( CExtGridCellDateTime::year ), false );
SetShowItem( CExtDurationWnd::month, pCell->IsItemVisible( CExtGridCellDateTime::month ), false );
SetShowItem( CExtDurationWnd::month_name_short, pCell->IsItemVisible( CExtGridCellDateTime::month_name_short ), false );
SetShowItem( CExtDurationWnd::month_name_long, pCell->IsItemVisible( CExtGridCellDateTime::month_name_long ), false );
SetShowItem( CExtDurationWnd::day, pCell->IsItemVisible( CExtGridCellDateTime::day ), false );
}
if( eMode == CExtGridCellDateTime::time || eMode == CExtGridCellDateTime::all )
{
SetShowItem( CExtDurationWnd::hour, pCell->IsItemVisible( CExtGridCellDateTime::hour ), false );
SetShowItem( CExtDurationWnd::minute, pCell->IsItemVisible( CExtGridCellDateTime::minute ), false );
SetShowItem( CExtDurationWnd::second, pCell->IsItemVisible( CExtGridCellDateTime::second ), false );
SetShowItem( CExtDurationWnd::designator, pCell->IsItemVisible( CExtGridCellDateTime::designator ), false );
}
if( ( nDrawTextFlags & DT_RIGHT ) != NULL )
SetAlign( right );
else if( ( nDrawTextFlags & DT_CENTER ) != NULL )
SetAlign( center );
else
SetAlign( left );
DWORD dwCellStyle = m_cell.GetStyle();
if( (dwCellStyle&__EGCS_READ_ONLY) != 0 || bReadOnly )
SetReadOnly( true );
if( m_cell.IsUndefined()
|| m_cell.IsEmpty()
)
m_dtPrevious = COleDateTime::GetCurrentTime();
else
m_dtPrevious = pCell->GetDateTime();
if( m_dtPrevious.GetStatus() != COleDateTime::valid )
m_dtPrevious = COleDateTime::GetCurrentTime();
m_dtInitial = m_dtPrevious;
SetDateTime( m_dtInitial, false );
UpdateDurationWnd( true );
SetWindowPos( &CWnd::wndTop,0,0,0,0, SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE|SWP_FRAMECHANGED|SWP_SHOWWINDOW );
SetFocus();
m_bInConstruction = false;
return true;
}
|
|
tera tera
|
Jan 31, 2011 - 2:27 AM
|
Hello. 
Using CellCheckBox, I draw an independent image.
However, none of the client areas can widen a button image.
I want to widen a button image in client area all
The offer of the sample please.
|
|
Technical Support
|
Jan 31, 2011 - 8:35 AM
|
Judging by your screen shot you need to remove some padding space between icons. This means you should create bitmaps without un-needed border pixels and draw them closer to each other. You may need to override the CExtGridCell::OnCalcButtonExtent() virtual method which measures button sizes. Your method should return required sizes.
|
|
Alastair Watts
|
Jan 28, 2011 - 7:15 AM
|
I’ve a dialog with about 25 combo boxes on it. When using CComboBox everything is fine. Replacing them with CExtComboBox causes OnCmdMsg() to be called a lot which inturn slows the display & operation of the dialog considerably. Any suggestions:
|
|
Technical Support
|
Jan 31, 2011 - 11:19 AM
|
The problem is not with the CExtComboBox class. It’s just a repainted CComboBox version. The command updating code in your test app is extremely heavy. It should not be based on re-asking 30 combo boxes about selection. You should keep some enabled state flag in your dialog class and use it instead of CComboBoxTestDlg::DoCheck() method. This flag should be updated via handling the CBN_SELENDOK notification from combo boxes.
|
|
Alastair Watts
|
Jan 31, 2011 - 6:33 AM
|
A test project has been sent.
|
|
Technical Support
|
Jan 28, 2011 - 1:11 PM
|
We tried to test the behavior of CExtComboBox control using the following simplest possible test project:
http://www.prof-uis.com/download/forums/tmp/Test25ComboBoxes.zip
But we saw only expected number of CBN_*** command notification sent by Windows Common controls rather than by by Prof-UIS. This sample app demonstrates the equal behavior of subclassed and unsubclassed combo box common controls. Could you reproduce the problem using this test project? You can comment/uncomment the SetAutoSubclassChildControls(); line of code to switch between CExtComboBox and unsubclassed combo box windows.
|
|
Alastair Watts
|
Jan 27, 2011 - 7:37 AM
|
The title says it all really!
|
|
Technical Support
|
Jan 28, 2011 - 1:11 PM
|
This is already fixed. You can send us an e-mail so we will provide you with the source code update download.
|
|
Alastair Watts
|
Jan 28, 2011 - 8:13 AM
|
Can you confirm whether any progress has been made regarding another grid issue - email sent 22nd January titled ’Grid filters not working correctly’. Thanks.
|
|
Technical Support
|
Jan 28, 2011 - 1:32 AM
|
Thank you for reporting this issue. Please drop us an e-mail to the support mail box at this web site so we will provide you with the source code update download.
|
|
Eric guez
|
Jan 27, 2011 - 7:18 AM
|
Hello,
Using a CExtTreeCtrl to display files with icon, I noticed that you can’t scroll horizontally far enough to see the end of an item with a too long name. The issue appears also in the sample tree view (ProfUIS controls).
I’ve tried with no success to change the font size or call SetViewportExtEx. Nothing worked.
How can I fix this ?
Regards
|
|
Technical Support
|
Jan 28, 2011 - 1:13 PM
|
This is a known issue. The CExtTreeCtrl control currently uses the scrolling provided by the tree view common control. We would have to recode this common control from scratch to fix this issue. We recommend that you switch to a more powerful CExtTreeGridWnd tree grid control.
|
|
Eric guez
|
Feb 1, 2011 - 3:26 AM
|
This implies quite a lot of modifications to have it behave as before (this is only a file tree view).
Is there a fix planed for a future release ?
|
|
Alastair Watts
|
Jan 26, 2011 - 9:32 AM
|
I notice CExtLabel & CExtCheckComboBox dont display the "&" character as expected. Could you provide a fix please. Thanks.
|
|
Alastair Watts
|
Jan 28, 2011 - 6:22 AM
|
DT_ELLIPSIS combined with DT_NOPREFIX does not work, "&" is displayed as "&&" when doing so. The best I have managed so far is to use DT_SINGLELINE|DT_VCENTER|DT_NOPREFIX, forgoing the ellipsis!
|
|
Alastair Watts
|
Jan 27, 2011 - 7:30 AM
|
I’ve modified CExtCheckComboBox::DrawItem()
::stat_DrawText() options changed from
DT_SINGLELINE|DT_VCENTER|DT_END_ELLIPSIS
to
DT_SINGLELINE|DT_LEFT|DT_VCENTER|DT_NOPREFIX
... it seems that DT_ELLIPSIS causes problems!
|
|
Technical Support
|
Jan 28, 2011 - 1:10 PM
|
This is already fixed. You can send us e-mail to the support mail box at this web site so we will provide you with the source code update download.
|
|
Technical Support
|
Jan 27, 2011 - 12:36 PM
|
Thank you for reporting this issue. The CExtCheckComboBox::DrawItem() method should draw text using the DT_NOPREFIX flag:
CExtRichContentLayout::stat_DrawText( pDIS->hDC, LPCTSTR(strDraw), strText.GetLength() + 1, &rcText, DT_SINGLELINE|DT_VCENTER|DT_NOPREFIX|DT_END_ELLIPSIS, 0 );
|
|
Alastair Watts
|
Jan 26, 2011 - 2:16 PM
|
CExtCheckComboBox::AddString(_T("This & that")); is not displayed correctly. CComboBox::AddString(_T("This & that")); is displayed correctly.
|
|
Technical Support
|
Jan 26, 2011 - 1:19 PM
|
We have not found any problems with parsing and displaying the ampersand. Please provide us with more details.
|
|
tera tera
|
Jan 25, 2011 - 11:37 PM
|
Hello. Please teach a merit and demerit to use Prof-UIS RibbonBar.
Please teach a merit and demerit to use CMFCRibbonBar(Feature Pack).
|
|
Technical Support
|
Jan 26, 2011 - 2:25 PM
|
Both have similar features but different implementations. Our ribbon bar supports newer Office 2010 themes.
|
|
tera tera
|
Jan 25, 2011 - 11:37 PM
|
Hello. Please teach a merit and demerit to use Prof-UIS RibbonBar.
Please teach a merit and demerit to use CMFCRibbonBar(Feature Pack).
|
|
Offer Har
|
Jan 25, 2011 - 11:42 AM
|
|
|
Rado Manzela
|
Jan 25, 2011 - 3:36 PM
|
I was asking for this 1 or 2 years ago, then I’ve implemented it by myself, but not exactly like this, more like contact list search in miranda instant messenger. I can give you most important part of the code: bool CChildView::OnGbwAnalyzeCellKeyEvent(
bool bKeyDownEvent,
UINT nChar,
UINT nRepCnt,
UINT nFlags)
{ CString tmp; UINT wScanCode = ::MapVirtualKey( nChar, 0 );
BYTE lpKeyState[256];
::GetKeyboardState( lpKeyState );
HKL hKeyboardLayout = ::GetKeyboardLayout( ( ::AfxGetThread() ) -> m_nThreadID );
WORD nMapped = 0;
::ToAsciiEx( nChar, wScanCode, lpKeyState, &nMapped, 1, hKeyboardLayout );
TCHAR ch = (TCHAR)nMapped; if (isprint(ch) || nChar == VK_BACK)
{
if (!bKeyDownEvent)
return true;
if (nChar == VK_BACK)
{
if (m_quickSearch.GetLength()>0)
m_quickSearch.Delete(m_quickSearch.GetLength()-1);
else
return true;
}
else
{
m_quickSearch += (TCHAR)ch;
m_quickSearch.MakeLower();
} if (FindAndFocus(m_quickSearch))
return true; m_quickSearch = ch;
m_quickSearch.MakeLower();
if (!FindAndFocus(m_quickSearch))
m_quickSearch = "";
return true;
}
m_quickSearch = "";
return CExtTreeGridWnd::OnGbwAnalyzeCellKeyEvent(bKeyDownEvent,nChar,nRepCnt,nFlags);
}
m_quickSearch is buffer for matching string typed by user while searching. FindAndFocus() focuses first matched item (in my case it is custom drawn where matched part of string is drawn with differernt color). I hope it helps. I think it’s easy to adapt it to explorer style, you just need to remember timestamp of last key typed and invalidate (erase) whole m_quickSearch when it was too long time ago.
|