Multiple ranged selection not working |
Post Reply | Page 12> |
Author | |
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
Posted: 11 February 2009 at 3:59am |
Hi,
Could you please tell me why the multiple range selection is not working ?
To reproduce this problem :
I used : myReportCtrl.SetMultipleSelection(TRUE);
The method SetMultiSelectionMode(TRUE); is not for this kind of feature.
Please help me and give me feedback.
Thank you in advance.
|
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
What do you like to reach? Select non-continues set of Rows? It's works - with Ctrl+Click. Or you need discrete set of Cells? May be this comments help you
BOOL m_bMultipleSelection; // TRUE if multiple selection enabled.
SetMultipleSelection(...) BOOL m_bMultiSelectionMode; // TRUE if multiselection mode enabled (i.e. VK_CTRL is always on). SetMultiSelectionMode(...)
Looks like with this flag you don't need to hold Ctrl while making Click
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Yes, it works only for one range.
I would like to use the Windows standard shortcuts keys to build, for example, two ranges of selection.
Your [CTRL + SHIFT + click] is not working correctly.
I am using Codejock version 12.0.1.
Do you have fixed this behavior after this release ?
Regards,
|
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
This is same concept as any listbox or list control non-continues selection - it collect set of items as ONE subset. You can do smth yourself with this subset - e.g. keep it in your own container. Now you can have many subsets. Current release 13 has no differences with release 12 in this spec.
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
It doesn't work also with your sample Report Control Sample. Sequence :
Microsoft :
Codejock :
Sorry, it doesn't work !
|
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
OK - confirmed. Will fix in Release 13.1
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Thank you ! Regards,
|
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Have working version which allow to select multiple disconnected blocks of rows - for 13.1
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Sergio could you please get recent https://forum.codejock.com/uploads/DemoVersion/ReportSampleSatic.rar and try it for selection-related operations? I am not sure we covered all expected cases so please share your opinion here in Forum
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Hello Mark,
We just tested your executable and it needs some fixes : 1) In some cases, when the items are displayed for example in group, the CTRL + SHIFT doesn't select the last clicked line. When the CTRL + SHIFT keys are used, all items in the clicked range should always be selected, including the first one and the last one. 2) When displaying items in group, the group titles in the range are not selected (but the first and the last are selected!). Group titles cannot anyway be selected by using the keyboard. It's a little strange. 3) In some cases, the simple selection of a range of items (just by using the SHIFT key with a mouse click or up/down arrow keys) doesn't work upward. For example, go to the middle of the Report Control, then hold down the shift key and move up (by the up key or a mouse click) to backward select a range of items. It doesn't occur when displaying items in group. 4) Using the CTRL key without the SHIFT key should not take care of any range, it should just invert the selection of the clicked item. You have some other bugs here but they are linked to the point (3). ---------------- NB: Your WYSIWYG print mode doesn't work for the last column (the size of the last printed column is extra big). When removing the WYSIWYG print mode, in your sample app, you shoud redraw the Report Control. ---------------- Hope you will fix. Regards, |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Sure. Thank you
My comments about WYSIWYG mode.
After you use Print Preview in this mode 1st time you can see little red markers - they suppose to help you adjust your columns to fit in the paper.
Last column always use all space - by design all printed part fit in the same visible or invisible envelope based on margin settings.
If you turn WYSIWYG mode off there is no reason to redraw control if you not set AutoSize in same call.
Selection bug should be fixed to moment of official release.
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
When you turn off the WYSIWYG mode, the little red markers are still visible.
In WYSIWYG mode, the last column is always on a new page ? |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Thank you - you right - need to call Populate after WYSIWYG flag set back to FALSE to get rid from red markers.
If you run PrintPreview once and after adjust - you will have nice fit.
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
OK, now it works, you fixed them both.
Please let me know when the selection will be fixed. |
|
Sergio
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Hello,
What about the selection fix ? Do you have something new to test ? I would like to be sure that it will work for the next release of ToolKitPro. Please keep me informed. Regards, |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Hi, check this static app - https://forum.codejock.com/uploads/DemoVersion/ReportSampleSatic.rar
I think that mouse operations fixed. Check keyboard also please - I think there are some non-fixed cases but the only problem I found is:
using keyboard (Up or Down) + Shift we select a block. Now instead of Shift we press Control and going to another row and now press Shift again to select next block. But in this moment we also select intermediate block which we don't need! I will look on this tomorrow
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Hi, Thank you for your prompt answer. I've checked it and here's what I found :
- Selecting a backward range of lines (by keyboard or by mouse) using the SHIFT key, blocs the use of down/left/right arrows keys. - Selecting a backward range of lines by mouse and using the SHIFT + CTRL keys, doesn't select the clicked item. Please check for backward selection and let me check again after your fixes. Regards, |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
OK - but when I write about mouse selection fixed (up and down direction) I mean actions: SHIFT + Mouse - select seq. block, CTRL + Mouse - start new block (keep prev selection), SHIFT + Mouse - select next seq. block
It works in both directions. I expect you will confirm this fact. Before yesterday there was a bug in reverse direction selection.
P.S. I applied your logic: Ctrl disable Shift and updated demo app - get again and try please
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Your new bloc selection using the SHIFT + CTRL key was working nicely ! Now, it doesn't work anymore. What have you removed ?
Please go back to the previous version and just fix the two points about selecting items upward. What do you mean when you say my Ctrl disable Shift logic ? If you want to be sure, the selection should work as the Microsoft Windows file explorer (file list in view details mode). |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
It means: BOOL bIgnoreSelection = GetKeyState(VK_CONTROL) < 0 || IsMultiSelectionMode(); BOOL bSelectBlock = GetKeyState(VK_SHIFT) < 0; if (bIgnoreSelection) //Ctrl disable Shift!bSelectBlock = FALSE; For mouse selection I think this is a good feature - you don't need to release SHIFT key - just press CTRL and you can select next block.
Without it next click will extend previous selection - so no differences with and without CONTROL
But if we want to follow Explorer logic - you right - need to go back to previous version
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Be careful, because we still need the "MultiSelectionMode()" as some customers are certainly using it.
I can take a look at the code, if you want, to check all the behaviors and to gain time. |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Sure - please
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
You right - multiple-selection-mode (CTRL always ON) was not working properly
I also build Control component demo https://forum.codejock.com/uploads/DemoVersion/ListCtrl.rar
and this list contorl also not same behaviour as Explorer - please compare
I finished keyboard selection code and attached updated code and sample app
Sample app with ready to use slection modifiers - enable, mutlple, extended... |
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Please make all situations testing and give your comments after
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
What's the ListCtrl.exe ? That's not a report control, true ?
The focus caret is missing, it's difficult to see where's the caret when moving it by keyboard (CTRL + UP/DOWN ARROWS). The selection works fine for this control, but there's no single selection mode. Now I will look at the Report Control (ForSergio), please wait one day... |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
No - this control from .\CodejockSVN\Samples\Controls\ListCtrl
But Explorer supported single-selection mode so this list control suppose to follow same rules?
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Yes, I think so.
|
|
Sergio
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
I'm currently checking your code, I will then send you the modified files. Do you have a file comparer ? If not, you can use Beyond Compare for 30 days (www.scootersoftware.com).
Please note that I have also fixed the horizontal scrollbar to 32 bits (without any impacts for you and customers). Meanwhile, can you please add and implement these two methods in your class : XTPReportView.h =============== //----------------------------------------------------------------------- // Summary: // This method is called to print the page header of the report control // Parameters: // pDC - Print device context // rcPage - Page print area // bOnlyCalculate - TRUE = only calculate // FALSE = calculate and print // Returns: // The header height in device units. //----------------------------------------------------------------------- virtual int PrintPageHeader(CDC* pDC, CPrintInfo* pInfo, CRect rcPage, BOOL bOnlyCalculate, int nPageNumber, int nNumberOfPages); //----------------------------------------------------------------------- // Summary: // This method is called to print the page footer of the report control // Parameters: // pDC - Print device context // rcPage - Page print area // bOnlyCalculate - TRUE = only calculate // FALSE = calculate and print // Returns: // The footer height in device units. //----------------------------------------------------------------------- virtual int PrintPageFooter(CDC* pDC, CPrintInfo* pInfo, CRect rcPage, BOOL bOnlyCalculate, int nPageNumber, int nNumberOfPages); XTPReportView.cpp ================= // New method int CXTPReportView::PrintPageHeader(CDC* pDC, CPrintInfo* pInfo, CRect rcPage, BOOL bOnlyCalculate, int nPageNumber, int nNumberOfPages) { int nHeaderHeight = 0; if (GetReportCtrl().IsHeaderVisible()) nHeaderHeight = GetPaintManager()->GetHeaderHeight(&GetReportCtrl(), pDC, rcPage.Width()-2); CRect rcHeader(rcPage.left + 1, rcPage.top + 1, rcPage.right - 1, rcPage.top + 1 + nHeaderHeight); if (nHeaderHeight) PrintHeader(pDC, rcHeader); return nHeaderHeight; // Customer implementation example : //int nTestHeight = rcPage.Height() / 10; //CRect rTest(rcPage); //rTest.bottom = rTest.top + nTestHeight; //pDC->FillSolidRect(rTest, RGB(0,0,0)); //rTest.DeflateRect(1,1); //pDC->FillSolidRect(rTest, RGB(128,128,255)); //rTest.DeflateRect(10,10); //pDC->DrawText(_T("Test Header"), rTest, DT_CENTER | DT_VCENTER | DT_SINGLELINE); //return nTestHeight; } // New method int CXTPReportView::PrintPageFooter(CDC* pDC, CPrintInfo* pInfo, CRect rcPage, BOOL bOnlyCalculate, int nPageNumber, int nNumberOfPages) { int nFooterHeight = 0; if (GetReportCtrl().IsFooterVisible()) nFooterHeight = GetPaintManager()->GetFooterHeight(&GetReportCtrl(), pDC, rcPage.Width()-2); CRect rcFooter(rcPage.left + 1, rcPage.bottom - nFooterHeight - 1, rcPage.right - 1, rcPage.bottom - 1); if (nFooterHeight) PrintFooter(pDC, rcFooter); return nFooterHeight; } long CXTPReportView::PrintReport(CDC* pDC, CPrintInfo* /*pInfo*/, CRect rcPage, long nIndexStart) { int nPageNumber = ...; int nNumberOfPages = ...; int nHeaderHeight = PrintPageHeader(pDC, pInfo, rcPage, FALSE, nPageNumber, nNumberOfPages); int nFooterHeight = PrintPageFooter(pDC, pInfo, rcPage, FALSE, nPageNumber, nNumberOfPages); CRect rcRows(rcPage.left + 1, rcPage.top + 1 + nHeaderHeight, rcPage.right - 1, (rcPage.bottom - 1) - nFooterHeight); ... With these two methods, we add more flexibility to customize the print. The page header's and footer's height can be set more easily without having to override from CXTPReportPaintManager. |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Of course I had Beyond Compare. I also update ForSergio archive with my updates so you can get it again to refresh your files.
You can use CXTPReportView cpp and h from archive (my last modifications) to add your modifications but please test Wysiwyg print / printpreview after this. Now CXTPReportView supported print range of pages. I don't want to loose it.
Thanks for help in testing and inprovments.
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Ok. I will do the changes (and add horizontal pages support). I hope that we have no conflicts with our changes.
I cannot test my changes due to our configuration, I will post the files and then check your new build. I'm currently looking at the method CXTPReportControl::SetFocusedRow(...), which seems to be responsible of a bug. |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Thanks but did you check recent
and test it for selection cases?
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Here's part one of two, all these changes should be checked after your build :
20090527_084025_ForSergioChange.zip CXTPReportControl - Fixed 16 bits range of horizontal scrollbar - Fixed unselected clicked row for ranged selection (CTRL + SHIFT + CLICK for a backward selection) CXTPReportPaintManager - Added "BOOL m_bPrintPageRectangle" to be able to hide pages borders CXTPReportView - Added two new virtual methods : virtual int PrintPageHeader(CDC* pDC, CPrintInfo* pInfo, CRect rcPage, BOOL bOnlyCalculate, int nPageNumber, int nNumberOfPages, int nHorizontalPageNumber, int nNumberOfHorizontalPages); virtual int PrintPageFooter(CDC* pDC, CPrintInfo* pInfo, CRect rcPage, BOOL bOnlyCalculate, int nPageNumber, int nNumberOfPages, int nHorizontalPageNumber, int nNumberOfHorizontalPages); - Changed : "int x(0), y(0);" to "int x = 0, y = 0;" ___________________ I have implemented all the code, but you will perhaps have some compiler errors because I can't build the sources on my computer. Please let me know... I am still checking for SetFocusedRow(...) to fix another problem with ranged selection. Now, please include my sources into yours, rebuild and update the executable. I will then check if it works. Thank you. |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Thanks - I get your files and will make a build and look on behaviour
Now I made a build and it looks fine - don't see any diffs in my samples
I put my modifications after successfull build in same ForSergio archive - please get it
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
I refresh samples so you can try now
https://forum.codejock.com/uploads/DemoVersion/ReportSampleSatic.rar
https://forum.codejock.com/uploads/DemoVersion/EditVirtualListIconStatic.rar |
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
- The horizontal scrollbar doesn't work (I will fix it soon, I should use another method to get the 32 bits position of the scrollbar from the Windows message.).
- If you try the print preview, there are infinite pages, but I don't think that's due to my changes. Please check it and tell me more. |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Print will print exact pages (you can try print in file, e,g use MS ImageWriter) - I am keeping printpreview unrestricted for now - this is not dengerous/ Later today will restrict to existed pages only
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
I fix paging to printpreview and update source for you and sample. Please download
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
this is fix for your scroll code
void CXTPReportControl::OnHScroll2(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar){ if (pScrollBar != NULL){ CWnd::OnHScroll(nSBCode, nPos, pScrollBar); return;} if (nSBCode == SB_THUMBTRACK || nSBCode == SB_THUMBPOSITION){ SCROLLINFO info; info.cbSize = sizeof(SCROLLINFO);info.fMask = SIF_TRACKPOS; ::GetScrollInfo(m_hWnd, SB_HORZ, &info); nPos = info.nTrackPos; } But selection still working my way - not as you propose for SHIFT + CONTROL situation |
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
I refresh samples so you can try now -
Horizontal scrollbar is working properly
In WYSIWYG mode it there are fixed header and footer rows on each page
This sample aslo have menu to set Ext Selection mode (CTRL always ON). Try it and you will see that you did not fixed it as promised... Please try if we want to keep this mode
Looks like effect is opposite - in this mode after some action app freezed!
But if I comment your only selection-related modification: [in function CXTPReportControl::OnLButtonDown(UINT nFlags, CPoint point) ]
//if (!bSelectBlock || IsMultiSelectionMode()) //No SHIFT or SHIFT + fixed CONTROL
m_pSelectedRows->Invert(pRow);
there is no freeze effect. Please take attention to this case
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Yes, you're right, you fixed the scrollbar, it's ok now, thank you.
I didn't fix the selection (only one case, but it didn't work at all, that's the line you commented), I said "Here's part one of two"... I will now focus only on the selection ! Have you updated the sources ? |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Sure
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Ok, I will try to compile the sources on my computer in order to be able to debug the selection.
Is it possible to put your files into the Codejock Version 12.0.1? Will it build successfully? |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Sure not - too many changes after. If you have source for 13.0 - you can. If you need few new files from Common - give me know
P.S. I like to comment selection modification you made : (all in XTPReportControl.cpp)
................................
if (!bSelectBlock || IsMultiSelectionMode()) //No SHIFT or SHIFT + fixed CONTROL - You add this condition
m_pSelectedRows->Invert(pRow); ..........................
case VK_DOWN:
if (pFocusedRow->IsSelected() && !bIgnoreSelection && !bSelectBlock) m_iSelectOnMouseUpRow = -1; // - You keep my restriction here GetNavigator()->MoveDown(bSelectBlock, bIgnoreSelection); break; case VK_UP:if (pFocusedRow->IsSelected() && !bIgnoreSelection && !bSelectBlock) m_iSelectOnMouseUpRow = -1; // - You keep my restriction here GetNavigator()->MoveUp(bSelectBlock, bIgnoreSelection); break;..........................
This is the problem - one OR another one. You one is WORKING if I comment my condition. Try it and confirm please. May be your way is simple and better (no extra flag m_iSelectOnMouseUpRow need!) If you like to try under 13.1 full code - give me know. But I consider what MFC Forum should be in sync with current producation code - other case we are speaking different languages sometime |
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
I've just read your answer, but now, I must leave the office.
I have downloaded and installed the ToolKitPro version 13.0.0. Tomorrow, I'll merge the new sources and finally try to build and test the selection and what you say. See you tomorrow and have a nice afternoon. |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Ok - I will update ForSergio with needed Common updates
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Hi Mark,
I'm trying to build the Codejock ToolKitPro 13.0.0 with all your new files (Report Control + Common), but I need some more files : error C2027: use of undefined type 'CXTPReportRecordItemIcon' g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecorditemtext.cpp 44 ... error C2027: use of undefined type 'CXTPReportRecordItemIcon' g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecorditemtext.cpp 161 error C2039: 'GetParentRecord' : is not a member of 'CXTPReportRecord' g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportcontrol.cpp 4584 error C2039: 'GetParentRecord' : is not a member of 'CXTPReportRecord' g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecord.cpp 283 error C2059: syntax error : ')' g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecorditemtext.cpp 46 error C2059: syntax error : ')' g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecorditemtext.cpp 46 error C2061: syntax error : identifier 'CXTPReportRecordItemIcon' g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecorditemtext.cpp 44 error C2061: syntax error : identifier 'CXTPReportRecordItemIcon' g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrow.cpp 317 error C2065: 'm_pRecords' : undeclared identifier g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecord.cpp 285 error C2065: 'm_pRecords' : undeclared identifier g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecord.cpp 285 error C2065: 'm_pRecords' : undeclared identifier g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecord.cpp 286 error C2143: syntax error : missing ';' before '{' g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecorditemtext.cpp 47 error C2227: left of '->GetOwnerRecord' must point to class/struct/union/generic type g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecord.cpp 285 error C2227: left of '->GetOwnerRecord' must point to class/struct/union/generic type g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecord.cpp 286 error C2270: 'GetParentRecord' : modifiers not allowed on nonmember functions g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecord.cpp 284 error C2270: 'GetRuntimeClass' : modifiers not allowed on nonmember functions g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecorditemtext.cpp 44 error C2352: 'CXTPReportRecordItem::Draw' : illegal call of non-static member function g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecorditemtext.cpp 54 error C2352: 'CXTPReportRecordItem::Draw' : illegal call of non-static member function g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecorditemtext.cpp 63 error C2352: 'CXTPReportRecordItem::GetCaptionRect' : illegal call of non-static member function g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecorditemtext.cpp 157 error C2352: 'CXTPReportRecordItem::OnDrawCaption' : illegal call of non-static member function g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecorditemtext.cpp 132 error C2352: 'CXTPReportRecordItem::OnEditChanged' : illegal call of non-static member function g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecorditemtext.cpp 166 error C2447: '{' : missing function header (old-style formal list?) g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecorditemtext.cpp 47 error C2653: 'CXTPReportRecordItemIcon' : is not a class or namespace name g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecorditemtext.cpp 44 error C2653: 'CXTPReportRecordItemIcon' : is not a class or namespace name g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecorditemtext.cpp 44 error C2653: 'CXTPReportRecordItemIcon' : is not a class or namespace name g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportrecorditemtext.cpp 44 fatal error C1903: unable to recover from previous error(s); stopping compilation g:\dev\codejock software\mfc\xtreme toolkitpro v13.0.0\source\reportcontrol\xtpreportcontrol.cpp 4584 Please help ! |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
OK - I add to ForSergio |
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
It's all right ! The Codejock ToolKitPro now compile perfectly.
Next step : I must try to compile your "ReportSampleMod.rar" project. |
|
Sergio
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Ok, I had to comment some part of code (missing Codejock shared resources files) and rename internal version 13.10 to 13.00, but now it works and I am finally able to debug!
You have also removed the "vc90" in .lib filenames, I had to rename some files. I will debug the selection now! You will be kept informed. |
|
Sergio
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Could you please give me some explanation for the member variable m_iSelectOnMouseUpRow?
|
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
State of mouse-base direction of selection - check the place m_iSelectOnMouseUpRow = smth (if -1 means direction going down) :
if (pRow->IsSelected() && !bIgnoreSelection && !bSelectBlock)
m_iSelectOnMouseUpRow = pRow->GetIndex(); elsebFocusChanged = SetFocusedRow(pRow, bSelectBlock, bIgnoreSelection); |
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
OK, so you have two member variables for identifying the current bloc selection range : m_iSelectOnMouseUpRow and m_iSelectOnKeyUpRow, one for the mouse and another one for the keyboard.
On next Tuesday (because on next Monday it's holiday) I will check them and make a small resume of how should the code work. |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
OK. Please clean your previous posts from no-needed info like build bugs
I update files for you (only Recent ones) and also refresh app to test: https://forum.codejock.com/uploads/DemoVersion/ReportSampleSatic.rar
See post http://forum.codejock.com/forum_posts.asp?TID=14410 where I explain recent functional updates
Only now I recoginized that this is typo in demo file name - I will keep it for prev version and now upload new one:
Source also updated so take it
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Hi, Sergio - no need to invent wheels - take a look in MFC Grid 2.26 - http://www.codeproject.com/KB/miscctrl/gridctrl.aspx
it use proper way for mouse-based selection (but restricted for keyboard-based) so try to implement similar concept - don't use existed implementation of
SELECTED_BLOCK - it works for expand - collapse case now but we can use better approach for selection. I am busy now with many other things to finalize 13.1 so I like you conventrate on this isolate task and finish it soon - this is not difficult just be accurate and cover all cases. We can also start to use real blocks (x start, y start, x end, y end) keeping in mind future (like CJ Grid Control instead of CJ Report Control).
https://forum.codejock.com/uploads/DemoVersion/ForSergio.rar |
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Where are updated sources ? You gave ".../ReportSampleSatic.rar" twice. Where is "ForSergio.rar", you removed the link from your posts ?
I don't want to register on CodeProject Web site now. I know how should the selection work, don't worry I won't invent wheels, I'll just fix what wrong. |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Sorry - done
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Hi Mark,
The sample app. sometimes seems to hang (when starting a drag'n'drop) because there are too many blocs of selection and this kind of code is slow : void CXTPReportControl::OnBeginDrag(CPoint point) { ... int nCount = pSelectedRows->GetCount(); for (int i = nCount - 1; i >= 0; i--) { CXTPReportRow* pRow = pSelectedRows->GetAt(i); // *** GetAt(i) does another loop ! *** ... } CXTPReportRow* CXTPReportSelectedRows::GetAt (int nIndex) { for (int i = 0; i < (int) m_arrSelectedBlocks.GetSize(); i++) { ... } ... } I think that each Row should store its own selection state, like the CListCtrl does (one LVIS_SELECTED state per item). Then, the CXTPReportSelectedRows should manage (simulate) bloc of selection, the array "CArray<SELECTED_BLOCK, SELECTED_BLOCK&> m_arrSelectedBlocks" should be removed and if needed, replaced by functions. After that, it will be easier to manage state. I fixed some part of code, but the CXTPReportSelectedRows seems also to have some bugs. Do you want to keep on "Blocs of selection" or to move to "row selected state" ? |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
The only place I want to keep old code is expand-collapse parent-childs combination - this is isolated case and not related to selection.
So let's start clean implementation of selection similar to ListView. Don't forget that ListView also allow to use GetFirst - GetNext mechanic so we should also have it
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
OK, I will just modify the class CXTPReportSelectedRows, but I will try to keep all existing methods (excepted the Array member variable).
And I will add and manage "BOOL m_bSelected" in the class CXTPReportRow. |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
You can also use https://forum.codejock.com/uploads/DemoVersion/ReportSampleSourceUpdated.rar
and check 32bit scrollbars for External Themed scrollbars - you will see they works but not in 32bit mode while internal scrollbar did
Need to have functions like CListCtrl
POSITION CListCtrl::GetFirstSelectedItemPosition() constint CListCtrl::GetNextSelectedItem(POSITION& pos) constUINT CListCtrl::GetSelectedCount() const |
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
I updated source for you after I fixed Records: Move function today - please get it by same link
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
OK, I have done 75 % of the work. But now, I can't compile your new sources for the sample app., because :
reportsampleview.cpp(378) : error C2660: 'CXTPReportView::SetScrollBarCtrl' : function does not take 2 arguments reportsampleview.cpp(432) : error C2660: 'CXTPReportControl::AssignIconViewPropNumAndIconNum' : function does not take 4 arguments reportsampleview.cpp(577) : error C2039: 'm_iCheckWithRightButton' : is not a member of 'CXTPReportControl' reportsampleview.cpp(578) : error C2039: 'm_iCheckRightButtonExtended' : is not a member of 'CXTPReportControl' I think I need to update ToolKitPro sources, so could you please tell me which link belongs to ToolKitPro sources ? I will then also check for external scrollbars. |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Looks like you not read prev post - I asked you to get fresh ForSergio archive - I keep it updated all the time
You can also modify Sample code to follow Core modifications
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
btw - I like to have dynamic stateless logic without any crutches (like keyboard or mouse direction like
in CXTPReportControl : m_iSelectOnKeyUpRow, m_iSelectOnMouseUpRow and in CXTPReportRows : m_nRowBlockBegin)
Same about Row or Record state - for selection all we need we can get from CXTPReportRow : IsFocused() and IsSelected()
so I don't think we need store some other state for Row or Record. Let's make it properly - not like in past versions. And hurry up please - only 2 days left to have it 100% ready so please attach your working progress files to check
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Hi Mark,
Here are my files : 20090604_050431_SergioChanges2.zip Fixed : - Missing selected row when selecting a bloc with CTRL + SHIFT. - Locked move up/down by keyboard after a bloc is selected - Bloc selection behaviour between header rows, contents rows and footer rows - Implemented post : Topic Missing methods - Each row store it own selected state (CXTPReportSelectedRows and CXTPReportRow), moreover, the IsSelected() virtual member should now be called in all cases to let override the m_bSelected - Three new method to centralize selection in CXTPReportSelectedRows : WillSelectionChange(...), ChangeSelection(...) should be called for any change, _CheckBlockRange(...) check and adjust ranges - Added two method for possible need of blocs (but slower) : GetSelectedBlockCount() and GetSelectedBlock(...) Still need to be fixed : - External scrollbars (Please tell me more about these ones, how are they attached to the report control?) - m_iSelectOnMouseUpRow, m_iSelectOnKeyUpRow : I must now fill them in the correct place, the starting ranges are now incorrect. |
|
Sergio
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Still need to be fixed :
- External scrollbars (Please tell me more about these ones, how are they attached to the report control?) - m_iSelectOnMouseUpRow, m_iSelectOnKeyUpRow : I must now fill them in the correct place, the starting ranges are now incorrect. - Expand/Collapse : now collapsed items keep their selected state (but when collapsed the CXTPReportSelectedRows doesn't know that they are selected) ---> Tell me if you like this behaviour, I will then change the code in CXTPReportSelectedRows::_OnExpanded(...)/_OnCollapsed(...) |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Thanks - I will check your code today. Ext Scrollbars - part of CXTPReportView - not CXTPReportControl. Look how they communicate in code of both classes
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Make a build - mouse selection looks like works, keyboard - not. VirtualMode show all rows selected on start?! Think about this case - I guess this is result of your state stored value which for virtual mode is one for all?!
Could you write your selection spec please to check the logic? I updated ForSergio file with integrated source - please get it
|
|
Aaron
Senior Member Joined: 29 January 2008 Status: Offline Points: 2192 |
Post Options
Thanks(0)
|
Hi Mark,
Why don't you reply in ActiveX/COM forum???? I said you have to call .Redraw to get the marker updated. Do not use .Populate because grouped rows will be expanded and .... and .... and .... Well, there are more problems with WYSIWYG property !!!! But I will wait for first reply from you, before I will add more tests.
|
|
Product: Xtreme SuitePro (ActiveX) version 15.0.2
Platform: Windows XP (32bit) - SP 2 Language: Visual Basic 6.0 Zero replies is not an option.... |
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Arron - this is exactly that you can find in published code:
void CVirtualListView::OnReportWYSIWYG(){ m_bWYSIWYG = !m_bWYSIWYG; CXTPReportControl& wndReport = GetReportCtrl(); wndReport.GetPaintManager()->SetColumnWidthWYSIWYG(m_bWYSIWYG); wndReport.GetReportHeader()->SetAutoColumnSizing(!m_bWYSIWYG); wndReport.RedrawControl(); } Populate or Redraw used here as a common way to force redraw |
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
For the VirtualMode, you're right, we should keep using blocks. But at the time I wrote my code, selection blocks had in some cases redundancies. I saw that you made some changes between the time, did you fix that? Although CXTPReportSelectedRows could manage both selections (per elements and per blocks), we perhaps better stay using one method, the block one.
Here's what I'm trying to do for the selection : CXTPReportSelectedRows // To simplify CXTPReportRows* retrieval // Not implemented yet! CXTPReportRows* GetRowTypeRows() // Checks and adjust the selection range // Return FALSE if there are no rows in the block range BOOL _CheckBlockRange(int nRowsCount, int& ib, int& ie); // Checks if the selection would change from current BOOL WillSelectionChange(int& ib, int& ie, BOOL bSelect); // Centralized method that handle all cases and that should be called for every changes in the selection // In this method, we check the range, and we know if we are clearing the selection, changing the selection of only one item, ... // Should return TRUE if the selection has changed from current, if not, return FALSE and do not notify or redraw BOOL ChangeSelection(int& ib, int& ie, BOOL bSelect, BOOL bNotify, BOOL bRedraw); CXTPReportControl Keyboard events or mouse events should call a centralized method to manage the selection. // To know from where we extend the selection // Used for mouse and keyboard // -1 = no selection extend = no item previously selected int m_nSelExtendStartingRowIndex = -1; // Centralized method to manage the selection // All the checks must be made in this method // Returns TRUE if the selection has changed, to be able to notify or update display later BOOL DoSelectionChange(int nNewlyFocusedRowIndex, BOOL bExtendTo /*if VK_SHIFT*/, BOOL bReplacePreviousSelection /*if not VK_CONTROL*/, BOOL bByMouse, BOOL bSpacebarPressed /*If not by mouse, if VK_SPACE pressed to switch row selection*/, BOOL bNotify, BOOL bUpdateDisplay) Implementation : // Keyboard - bByMouse=FALSE // Always do this check and change if m_nSelExtendStartingRowIndex==-1 and bSpacebarPressed!=TRUE then bExtendTo=FALSE if bSpacebarPressed==FALSE if bExtendTo==FALSE and bReplacePreviousSelection==TRUE then clear the selection and select nNewlyFocusedRowIndex and m_nSelExtendStartingRowIndex=nNewlyFocusedRowIndex if bExtendTo==TRUE and bReplacePreviousSelection==TRUE then clear the selection and select bloc from m_nSelExtendStartingRowIndex to nNewlyFocusedRowIndex do not change m_nSelExtendStartingRowIndex! if bExtendTo==FALSE and bReplacePreviousSelection==FALSE then set only the FOCUS CARET to nNewlyFocusedRowIndex and m_nSelExtendStartingRowIndex=nNewlyFocusedRowIndex Do not make any change to the selection ! if bExtendTo==TRUE and bReplacePreviousSelection==FALSE then select bloc from m_nSelExtendStartingRowIndex to nNewlyFocusedRowIndex do not change m_nSelExtendStartingRowIndex! if bSpacebarPressed==TRUE if bExtendTo==FALSE and bReplacePreviousSelection==TRUE then do nothing ! if bExtendTo==TRUE and bReplacePreviousSelection==TRUE then do nothing ! if bExtendTo==FALSE and bReplacePreviousSelection==FALSE then invert the selection of nNewlyFocusedRowIndex and m_nSelExtendStartingRowIndex=nNewlyFocusedRowIndex if bExtendTo==TRUE and bReplacePreviousSelection==FALSE then clear the selection and select nNewlyFocusedRowIndex and m_nSelExtendStartingRowIndex=nNewlyFocusedRowIndex // Mouse - bByMouse=TRUE // Always do this check and change if m_nSelExtendStartingRowIndex==-1 then bExtendTo=FALSE if bExtendTo==FALSE and bReplacePreviousSelection==TRUE then clear the selection and select nNewlyFocusedRowIndex and m_nSelExtendStartingRowIndex=nNewlyFocusedRowIndex if bExtendTo==TRUE and bReplacePreviousSelection==TRUE then clear the selection and select bloc from m_nSelExtendStartingRowIndex to nNewlyFocusedRowIndex do not change m_nSelExtendStartingRowIndex! if bExtendTo==FALSE and bReplacePreviousSelection==FALSE then invert the selection of nNewlyFocusedRowIndex and m_nSelExtendStartingRowIndex=nNewlyFocusedRowIndex if bExtendTo==TRUE and bReplacePreviousSelection==FALSE then select bloc from m_nSelExtendStartingRowIndex to nNewlyFocusedRowIndex do not change m_nSelExtendStartingRowIndex! It's a little difficult to know how the code in the Codejock ToolKitPro works, but I think this will help ! |
|
Sergio
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Please note that I have no more time to consecrate to this task, I have to do my own job. I will still check your samples .exe and your feedbacks, but I must now switch back to my development environment. Please kindly note that you don't pay us for this task, we do it...
If you get back to block selection, don't forget to put the code back to the methods _OnExpanded()/_OnCollapsed()... Thank you. |
|
Sergio
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
For the external scrollbars, if you keep the last code I sent you, and change this :
void CXTPReportView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { if (m_pScrollBarHor && pScrollBar == m_pScrollBarHor) { if (nSBCode == SB_THUMBTRACK || nSBCode == SB_THUMBPOSITION) { nPos = pScrollBar->GetScrollPos(); GetReportCtrl().SetScrollPos(SB_HORZ, nPos, FALSE); } GetReportCtrl().OnHScroll(nSBCode, nPos, NULL); } CView::OnHScroll(nSBCode, nPos, pScrollBar); } void CXTPReportView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { if (m_pScrollBar && pScrollBar == m_pScrollBar) { if (nSBCode == SB_THUMBTRACK || nSBCode == SB_THUMBPOSITION) { nPos = pScrollBar->GetScrollPos(); GetReportCtrl().SetScrollPos(SB_VERT, nPos, FALSE); } GetReportCtrl().OnVScroll(nSBCode, nPos, NULL); } CView::OnVScroll(nSBCode, nPos, pScrollBar); } It should work. |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
OK - you proposed your help and now you refused to finish with comments about pay - so I will ignore you changes and will do my own implementation later as now we are going to release version and I have no time (the reason I agree for your help) to fix old wrong design - only improve it little bit
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
I would really like to continue my fix, but my manager is asking me to continue internal jobs.
I have given you the complete selection cases. To finish completely the selection behavior, I need at least 2 days (to rollback to blocks of selection and change SetFocusedRow(...), OnLButtonDown/Up(...) and OnKeyDown(...)). What are your deadlines for this Release ? |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Deadlines as always - yesterday, in current case this is not a figure of speech but pure true. Release should be today. But you can try to fix your vision of selection - if it will be good and work properly in all cases - I will try to use it. Look on current state in static app - refreshed but keeped same link
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
OK, I have to finish some work this week, I will try to do it on next week.
|
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
OK - let's finish it later. I also busy now and this "bug" is minor - if user can't make desired selection using one way - he can do it using another way...
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Hi, Sergio - are you ready to continue?
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Hi Mark,
I don't know, I'm waiting for a response from my manager. Meanwhile, could you please fix this method in the CXTResize::Size() : void CXTResize::Size() { if (m_arrItems.GetSize() > 0) { CSize szWindow = CXTPClientRect(m_pWnd).Size(); if (szWindow.cx == 0 || szWindow.cy == 0) return; ////////////////////////// // New Code - Begin - take care of limits if (m_szMin.cx != 0) szWindow.cx = max(m_szMin.cx, szWindow.cx); if (m_szMin.cy != 0) szWindow.cy = max(m_szMin.cy, szWindow.cy); if (m_szMax.cx != 0) szWindow.cx = min(m_szMax.cx, szWindow.cx); if (m_szMax.cy != 0) szWindow.cy = min(m_szMax.cy, szWindow.cy); // New Code - End - take care of limits ////////////////////////// AjustResizeRect(szWindow); CSize szDelta = szWindow - m_szWindow; HDWP hDWP = ::BeginDeferWindowPos((int)m_arrItems.GetSize()); ... We are using this class for a child window (no WM_GETMINMAXINFO). Thank you in advance, Regards. |
|
Sergio
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
My manager is asking me to evaluate how much time it will take. I need your latest files to estimate the work load.
Please note that any intermediary merge take time, I would appreciate if we could avoid them. |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
If you get recent official version of MFC code - you can start from here
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
OK, I will download it now!
|
|
Sergio
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Download OK. I will launch the setup on next Monday.
|
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
I think that all or almost all related to rows selection and records move I already fixed but I don't have testers to check all possible test-cases so please check modified code and run different cases based on your app or our sample - including drag'n drop cases. Thanks
Most recent updates here -
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Hi Mark,
Thank you for having included all the small enhancements. I am currently using your release version 13.1.0 and successfully built one of our projects. I will keep you informed as soon as I have tested your ReportControlMFCUpdated.rar files. Best regards, |
|
Sergio
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Hi Mark,
In the release 13.1.0, the resizing of the Report Control behaves differently. When using the full column scrolling mode and when the control reaches a certain low limit, the control is automatically switched to a non-full column scrolling mode (the horizontal scrollbar is automatically hidden). How can we now avoid that ? |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Please re-build using recent updates and confirm as I don't have such effect. Could you reproduce it on
https://forum.codejock.com/uploads/DemoVersion/ReportSampleStatic.rar
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
It doesn't occur in your sample, because you don't have as much columns as we have (approx. 100). It's working fine with a few columns.
Please try to add 100 columns in your sample. |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
I don't understand - are we using same code or not?
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
I am using the Toolkit Pro of the latest release (13.1.0) to test my code.
Your sample cannot be modified to carry more columns because it's an executable. Here is the case : each column counts for approx. 10 pixels, multiply this number with the number of columns, and now reduce the width of the report control to be lower than this number. |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Latest release is not that I mean - you need to get updates from https://forum.codejock.com/uploads/DemoVersion/ReportControlMFCUpdated.rar
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
OK, you tried to fix it and now I should check it by using your latest source code.
I can't do it now, it take time to change my environment, I will test it when I will test the multiple selection. Please wait one or three days, thank you. |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
You are doing smth sensless as scrolling code changed
|
|
Sergio
Senior Member Joined: 18 September 2006 Status: Offline Points: 216 |
Post Options
Thanks(0)
|
Could you please be more precise ?
That's not senseless, we will distribute our products with the latest official release of Codejock, the 13.1.0, which doesn't seem to be working. |
|
Sergio
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
this is why I propose you to use patch and we can fix fullcolumnscroll case faster using same code
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
uploads/20090702_111440_ReportDialogSam.rar
This is simple sample with many columns - working fine with autosizing and not autosizing mode
and FullColumnScrolling with not autosizing
but need to fix FullColumnScrolling + AutoSizing case (if such mode have some sense?)
You can try static exe https://forum.codejock.com/uploads/DemoVersion/ReportDialogSampleStatic.rar
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Sergio - why don't you open the issue and we can work together to fix your problem and same time release result for all users?
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Get fresh update with good selection - https://forum.codejock.com/uploads/DemoVersion/ReportControlMFCUpdated.rar
|
|
mdoubson
Senior Member Joined: 17 November 2008 Status: Offline Points: 1705 |
Post Options
Thanks(0)
|
Fresh demo with persist child selection here - https://forum.codejock.com/uploads/DemoVersion/ReportSampleStaticProto.rar
|
|
Post Reply | Page 12> |
Tweet
|
Forum Jump | Forum Permissions You cannot post new topics in this forum You cannot reply to topics in this forum You cannot delete your posts in this forum You cannot edit your posts in this forum You cannot create polls in this forum You cannot vote in polls in this forum |