Solved

How to add list to CListView which is part of CFormView?

Posted on 2008-10-27
60
645 Views
Last Modified: 2013-11-20
Hi,
i have created CListCtrl in CFormview.when i perform some operation the list shold be added to CListctrl..
but its adding to the database but not showing the list to the user...
what to do to show the list in CListctrl?..
0
Comment
Question by:srikadi
  • 30
  • 14
  • 6
  • +2
60 Comments
 
LVL 30

Expert Comment

by:Zoppo
Comment Utility
Hi srikadi,

could you post the code you wrote to populate the list-control?

ZOPPO
0
 

Author Comment

by:srikadi
Comment Utility
int CNView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 if(!m.Create(NULL, NULL, WS_VISIBLE | WS_CHILD, CRect(0,30,1100,480),
       this, 1))
 {
  TRACE( "Failed view creation\n" );
 }
}
already CListview is created dynamically without resource..so i called this function to place on CFormView.
0
 
LVL 30

Expert Comment

by:Zoppo
Comment Utility
Hi,

well, this is where you create it, but not where you fill it - to fill the CListCtrl you need to create columns (InsertColumn) and then to add the lines (InsertItem or AddItem, SetItemText).

BTW, in the posted code you don't call the base class implementation of OnCreate - I'm not sure if this can work ...

Regards,

ZOPPO
0
 

Author Comment

by:srikadi
Comment Utility
i am perfectly adding data to CListCtrl.if i take CListview as a base its working fine..for some enhancement  i have taken CFormView as base class(like i need to add buttons on top of Clistctrl headers).
if u give any alternate way to add button its ok for me...
0
 
LVL 30

Expert Comment

by:Zoppo
Comment Utility
To add some buttons to a list control is IMO either impossible or extremely difficult.

Using a CListCtrl in a CFormView is quite usual. In this case it's most common to add a list-control in the resource and assign it to a member variable of the formview (most easily done with the class-wizard). The use that member variable to access the list-control i.e. for inserting the data.

There's one thing to take care: The attached CListCtrl-variable can't be used before at least once the 'UpdateData' of the form-view is called - this is automatically done after 'CFormView::OnInitialUpdate' was called.

ZOPPO
0
 

Author Comment

by:srikadi
Comment Utility
k.i was not using 'UpdateData' anywhere..

 BeginWaitCursor();
 CDatabase * commonDatabase = CTresManApp::GetDatabaseObject();
 ErrorRepository errorRep(commonDatabase);
 
 //get the filter (if any) from the network tree. If no filter is available, then
 //the whole NodeList table is considered when generating the task list table contents
// CString taskFilter = m_nwSplitter.GetNwTreeFilter();
 CString taskFilter = m_nwSplitter2.GetNwTreeFilter();
 //fill database with scan tasks
 TaskListDbHandler::Instance()->FillTaskListTable(taskFilter);
 CTresManApp * pApp = (CTresManApp *)AfxGetApp();
 ASSERT(pApp);
 
/**/CTaskFormView * pNwVList1 = (CTaskFormView *)m_nwSplitter2.GetPane(2,0);
 CTaskListView * pNwVList=(CTaskListView *)pNwVList1->GetTaskListView();
 ASSERT(pNwVList);

/* CDbView * tskvw = (CDbView *) pApp->GetView(CTresManStates::Views::TASKFORMVIEW);
 ASSERT(tskvw);
 //set the dirty flag for the recordset. Recordset will be requeryd. This one is for the TaskList view
 if (tskvw)
 {
  tskvw->SetRecordsetDirty();
 }*/
 if (pNwVList)
 {
  pNwVList->SetRecordsetDirty();
 }
 EndWaitCursor();
anyway ihave data with Clistctrl.just i need to show in Cformview..so iam using this code..for CTaskListViewth base class is CListView.for CTaskFormView base class is CFormview.
0
 
LVL 19

Expert Comment

by:alb66
Comment Utility
It seems to me that CListCtrl::Create parameters are quite different. Look at
http://msdn.microsoft.com/en-us/library/2xhkzyh4.aspx

It should be
m.Create(  WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT,CRect(0,30,1100,480), this,1);  
0
 

Author Comment

by:srikadi
Comment Utility
Hi ald66,
this is for Clistctrl creation..but  i am calling one calss which i have already...
0
 
LVL 30

Expert Comment

by:Zoppo
Comment Utility
So you want to place a CListView-derived class in a CFormView? I'm not sure if this is possible. IMO you should use a CListCtrl instead of a CListView.
0
 

Author Comment

by:srikadi
Comment Utility
yes..i have placed CListView-derived class in a CFormView.but not showing data..no..its not possible for me to use CListCtrl..anyway ClistCtrl is the part of CListview na..
0
 
LVL 19

Expert Comment

by:alb66
Comment Utility
You cannot add a view to another view. CFormView is a container for controls, not for views.
0
 
LVL 19

Expert Comment

by:alb66
Comment Utility
Any way the porting should be easy. CListView is simply a CListCtrl with a view interface
0
 
LVL 44

Expert Comment

by:AndyAinscow
Comment Utility
0
 

Author Comment

by:srikadi
Comment Utility
k..i'll try..but could you please tell me how to add button on top of header in CListview..
plz find the sample which i have attached

Doc2.doc
0
 

Author Comment

by:srikadi
Comment Utility
0
 
LVL 44

Expert Comment

by:AndyAinscow
Comment Utility
I know - but it is duplicating things here, the experts contributing here ought to be made aware of that.
0
 

Author Comment

by:srikadi
Comment Utility
k..
0
 
LVL 39

Expert Comment

by:itsmeandnobodyelse
Comment Utility
A few remarks to the above comments and suggestions:

1. A CListView is not a normal CFormView but is derived from CCtrlView what actually is a construct to turn one single control to a view. So actually a CListView *is a* CListCtrl turned to view. That is much different to a CFormView which actually is a non-modal dialog turned to a view. So, when adding a list control to a form view you have a quite different case as with a CListView. Note a view in the document-view architecture is a means to display the contents of the associated document. Following that definition a list view shows the document data in a list. But if you add a list control to a form view, the form view is responsible for presenting document data and the embedded list control is only one of many controls which may display parts of the document data but actually must not.

2. To display 'buttons' in the title-line of a list control you simply need to add a handler for the HDN_ITEMCLICK notification of your list-control. The wizard would create a member function of your formview (or dialog) like

void CTestDlgDlg::OnHdnItemclickList1(NMHDR *pNMHDR, LRESULT *pResult)
{
   LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR);
   // TODO: ...
   *pResult = 0;
}

Then, when clicking to the header of one of the columns, the handler would be called and you could invoke some appropriate functionality, e. g. sort the list or column.
0
 
LVL 19

Expert Comment

by:alb66
Comment Utility
You can use a CDialogBar embedded in the frame containing the CListView
http://msdn.microsoft.com/en-us/library/tdkcfwe6(VS.80).aspx
0
 

Author Comment

by:srikadi
Comment Utility
Hi alb66,
i have tried this one also..baseclass of this one is CframeWnd but my base class Cviiew..its not worked for me..
0
 
LVL 19

Expert Comment

by:alb66
Comment Utility
mmmh....
CListView is always contained in a CFrameWnd derived class.
In MDI applications it is usually called CChildFrame.
In SDI applications it is usually called CMainFrame.
You can add a CDialog bar this CFrameWnd derived class containing the CListView. You will get the effect you want without any modification to the already written CListView class.

The other solution is to use a CFormView with some buttons and a CListCtrl.
0
 

Author Comment

by:srikadi
Comment Utility
hi alb66,
You cannot add a view to another view. CFormView is a container for controls, not for views.
R u sure about this?..
0
 

Author Comment

by:srikadi
Comment Utility
yes..i want but some modofications arae ok..
what i need to do add CdialogBar?..
0
 

Author Comment

by:srikadi
Comment Utility
Hi AndyAinscow,Zoppo:
plz suggest me..
0
 
LVL 19

Expert Comment

by:alb66
Comment Utility
0
 
LVL 44

Expert Comment

by:AndyAinscow
Comment Utility
I am restricting my comments to your other question  (link provided earlier by me) and limiting those to my suggestion there of using a CFormView based view instead of the CListView.
0
 

Author Comment

by:srikadi
Comment Utility
sorry i didn't get u..iam using Cformview ponly na..
0
 
LVL 39

Expert Comment

by:itsmeandnobodyelse
Comment Utility
>>>> but could you please tell me how to add button on top of header in CListview..
>>>> what i need to do add CdialogBar?..

Can you tell what you *really* want to achieve?

Did you understand the differences of CListView and CFormView?
0
 
LVL 39

Expert Comment

by:itsmeandnobodyelse
Comment Utility
>>>> sorry i didn't get u..iam using Cformview ponly na..
????
0
 

Author Comment

by:srikadi
Comment Utility
Hi itsmeandnobodyelse:
wht do u want to say..please see the question?..
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 

Author Comment

by:srikadi
Comment Utility
hi alb66,
u have provided some links..could you suggest me what i have to do..
0
 
LVL 39

Expert Comment

by:itsmeandnobodyelse
Comment Utility
>>>> wht do u want to say..please see the question?..
What do you mean by "iam using Cformview ponly na.." ?

It is rather difficult to help you cause your spelling and wording is very inaccurate. For example, your initial question is

>>> How to add list to CListView which is part of CFormView?

which obviously is *not* what you actually want to know. You neither will add a list to a view nor is CListView part of CFormView.

We now have to realise that your initial question nevertheless is the clearest of all your questions, so we may not wonder that after 32 comments we nearly had made no progress.

0
 

Author Comment

by:srikadi
Comment Utility
k..sorry..
i want add some data to a CListView,which is inside CFormview..
 
0
 
LVL 44

Expert Comment

by:AndyAinscow
Comment Utility
>>i want add some data to a CListView,which is inside CFormview..

currently and for some time being adressed in
http://www.experts-exchange.com/Programming/System/Windows__Programming/MFC/Q_23849783.html
0
 
LVL 39

Expert Comment

by:itsmeandnobodyelse
Comment Utility
>>>> i want add some data to a CListView,which is inside CFormview..

it may look like nitpicking but it can't be a CListView but only a CListCtrl which is part of a CFormView. The CListView is a single list control which was *manipulated* by MFC framework so that it can be used like a view. As told multiple times in the above comments, a view cannot contain another view. So, if you need a list in your view you have to choose CFormView and add a list *control* by means of the resource editor.

In a CFormView you can add as many buttons as you want. You also can add a handler for each button using class wizard (CTRL+W). Also with class wizard you can create a member of the list control in the CFormView derived class. Using that member in the handler functions of your button gives you any means you need for manipulating the list control, e. g. like

void MyFormView::OnClickedButton1()
{
      int row = m_listCtrl.GetSelectedColumn();
      if (row != -1)
      {
             // make it only focused but not selected and hilited
             m_listCtrl.SetItemState(row, LVIS_FOCUSED, LVIS_STATEIMAGEMASK);
      }
}

Note, if you want the button to handle only one column of the list control rather than all list control, you should/could add a handler for the  HDN_ITEMCLICK notification of your list control, as I already described above.
0
 

Author Comment

by:srikadi
Comment Utility
ok..now I can't  change  form CListView to CListCtrl .could you please guve any other idea otherthan CFormview..
0
 
LVL 30

Expert Comment

by:Zoppo
Comment Utility
Why can't you change to use CListCtrl. All things you need to show a list is possible in CListCtrl. All functionality you need for document/view framework is included in CFormView. So, IMO you can do anything you can do for a CListView in a CFormView containing a CListCtrl too.

ZOPPO
0
 

Author Comment

by:srikadi
Comment Utility
ok,i'll try to do..but its big application if i change this one i have to change so many things...
0
 
LVL 39

Accepted Solution

by:
itsmeandnobodyelse earned 500 total points
Comment Utility
I read all the above comments again, and finally I got an idea about your main issues.

If I was right now you have  

1. a working view derived from CListView where you can display data with

2. a view derived from CFormView (CNView) where you tried to use the
working list view as a control.

3. As the wizard doesn't allow you to add a listview to a formview you
tried to create the listview programmatically but without success.

Is the analysis correct?

If yes, you should know that it isn't so much work to move the functionality of your list view to a list control which was in a formview, cause the listview actually is a list control, hence it has the same notifications and behavior like the list view. The main difference is that you need to add a list control to the dialog resource of the formview class and add a member of class CListCtrl by using the wizard. If done so far, the wizard had added a new entry into the DoDataExchange member function of the formview class, which provides the following functionality: (A) it subclasses the listctrl to the formview so that the formview class can now receive messages for the list control. (B) You can send data from your member to screen by calling UpdateData(FALSE) and (C) you can get data from screen to your list control by calling UpdateData(TRUE). The (C) is not needed if you use the list control for display only. Now you can move the creation of columns and headers from your listview class to the formview class. You best put the statements into the OnInitialUpdate meember function of the form view. Instead of GetListCtrl() as it was in the list view, you simply use the new CListCtrl member, e. g. instead of

    GetListCtrl().InsertColumn(...);

you now have

    m_listCtrl.InsertColumn(...);

All other things can be identically. To add data to the list control you use

   m_listCtrl.InsertItem(...);

for adding a new row and value to first column and

  m_listCtrl.SetItem(...);

for adding a new value in a cell of the second and following columns.

0
 

Author Comment

by:srikadi
Comment Utility
Hi itsmeandnobodyelse,
yes exactly  i want this one..but u said that we can't add one view in another view..but i added CListView in CFormView..MY CListView is showing same function as Old One like popupwindow..i am sure that the List is adding to the CListView .i checked it with GetItemCount() function.
Only problem iam facing is the list is not visible to the user..
If i follow ur suggestion i need to change so many functions.now my code is  like
CListView->CDbView->CmyView.so i need chage 2 classes(lot of changes)...
 
0
 
LVL 39

Expert Comment

by:itsmeandnobodyelse
Comment Utility
>>>> but i added CListView in CFormView..
the main difference between a control and a view is that the dialog (or formview) handles the controls as child-windows, what means that all messages for the control windows were sent to the dialog or formview. That way the painting of the dialog was synchronized with the painting of the controls placed on the dialog resource, what would mean for your case that the list control was shown together with the formview window (so that you could see the data). If showing a second view that view is a stand-alone (top-level) window which was painted when it is active. So, you either have the formview active or the listview but not both. So if you click to the formview the listview would be hidden by the formview window. You would need to make the formview not maximized and move it until you would 'find' the listview again. Moreover, your listview probably has no data. That is cause a normal view would get its data when the document class invokes the OnInitialUpdate of the view. But in your case you create the listview from fromview dialog and the document doesn't know, hence the OnInitialUpdate was not called.

Tomorrow i would have time to check what must be done. If you would post all your project sources and the project files I (or maybe other experts as well) surely find a way how to solve the issues.  
0
 
LVL 30

Expert Comment

by:Zoppo
Comment Utility
>> If i follow ur suggestion i need to change so many functions.now my code is  like

I don't thinks it's that bad - IMO you only need to change the base class from the CListView to your own derived CFormView class, somehow like this:

CMyFormView -> CDbView -> CmyView

Then you only need to implement functionality which CListView has for handling the list-related functionality (like InsertColumn, InsertRow a.s.o.) for your CMyFormView with simple functions which are just wrapper functions for the appropriate CListCtrl-functions.

ZOPPO
0
 

Author Comment

by:srikadi
Comment Utility
Hi,
sorry for late reply..i didn't check this post..i solved this problem in other way..but its not helped me much ..agian i came back to this...
itsmeandnobodyelse:
could you give any link to support your answer plz...
i 'll try to  change now CListview to ClistCtrl.
0
 
LVL 39

Expert Comment

by:itsmeandnobodyelse
Comment Utility
>>>could you give any link to support your answer plz...

if you would post your sources - best all project files - here, we could point you exactly what and how to change ...

We at least need the full sources of the list view and the current form view where the new list control should be added ...


0
 

Author Comment

by:srikadi
Comment Utility
Hi,
Ok,I have attached CDbView,CTaskListView,CTaskFormView.

TaskFormView.txt
TaskListView.txt
DbView.txt
0
 

Author Comment

by:srikadi
Comment Utility
Hi itsmeandnobodyelse,
sorry,please check this TaskFormView.
thanx in advance.

TaskFormView.txt
0
 
LVL 39

Expert Comment

by:itsmeandnobodyelse
Comment Utility
I'll try to check the sources this evening. I'll find time to answer your questions at Friday.
0
 

Author Comment

by:srikadi
Comment Utility
ok..thanx..
0
 

Author Comment

by:srikadi
Comment Utility
Hi,
I have taken one example in SDI with CFormView as a baseclass and i created CListView inside CFormView.its working fine..
just see i have attached the screenshot.
 

Doc1.doc
0
 

Author Comment

by:srikadi
Comment Utility

Hi itsmeandnobodyelse,
i am waiting for your suggestion.
thanx...
0
 
LVL 39

Expert Comment

by:itsmeandnobodyelse
Comment Utility
hi srikadi,

I would add a listcontrol to the formview with the button. You could take most of the code from listview to the formview.  

I'll make some sample code tomorrow and send it to you.

Another idea is to let the listview as it is and add a toolbar button to the frame window containing the listview.

If there is nothing but one single button, the second is might be the easiest.

Regards, Alex
0
 
LVL 39

Expert Comment

by:itsmeandnobodyelse
Comment Utility
I created a new formview derived class using the class wizard.

Then I added a button and a list control using the resource editor.

Finally I added a member m_listCtrl by right-clicking on thelist control in the resource editor.

I chose 'report' style and the very first screenview with no code of my own was what you find in testfrm1.jpg  

I now added code to the TestFrmView::OnInitialUpdate to add the columns to the list control and fill the list control (see code snippet).

You'll see that your code to create and fill the listview easily can be changed to fill the list control accordingly.

Look at testfrm2.jpg for the result.

The advantage of a list control over a list view is that the list control is a child window of the form view and sends it notifications to the form view. That way you easily hvae access from button handler (button 1) to the list control.



void TestFrmView::OnInitialUpdate()

{

    CFormView::OnInitialUpdate();

    GetParentFrame()->RecalcLayout();

    ResizeParentToFit();
 

    CRect listRect;

    m_listCtrl.GetWindowRect(&listRect);

    m_listCtrl.InsertColumn(0, "Column 1", 0, ((listRect.Width()-4) * 30 + 49) / 100, -1);

    m_listCtrl.InsertColumn(1, "Column 2", 0, ((listRect.Width()-4) * 70 + 49) / 100, -1);

    m_listCtrl.InsertItem(0, "item1 col1");

    m_listCtrl.SetItem(0, 1, LVIF_TEXT, "item1 col2", 0, 0, 0, 0);

    m_listCtrl.InsertItem(1, "item2 col1");

    m_listCtrl.SetItem(1, 1, LVIF_TEXT, "item2 col2", 0, 0, 0, 0);

}

Open in new window

testfrm1.jpg
testfrm2.jpg
0
 

Author Comment

by:srikadi
Comment Utility
Hi,
Another idea is to let the listview as it is and add a toolbar button to the frame window containing the listview.
could you please tell me how to do this..all my views are dervied from ListViews..and storing in CView array..so i have tried to do this but i couldn't get..
thanx..
0
 

Author Comment

by:srikadi
Comment Utility
Hi,
Plz help me.....urgent...
i did one sample with CListView..i wrote
CListView l;
 l.Create(NULL, NULL, WS_VISIBLE| WS_CHILD|LVS_REPORT|LVS_OWNERDATA , CRect(0,30,1100,480),
       this, 1);
 l.GetListCtrl().InsertColumn(0,"First");
l.GetListCtrl().InsertColumn(1,"Second");
l.GetListCtrl().SetColumnWidth(0,100);
l.GetListCtrl().SetColumnWidth(1,100);
l.GetListCtrl().InsertItem(0,"aaaaa");
l.GetListCtrl().InsertItem(1,"bbbbb");
its working without fine LVS_OWNERDATA style..if i set this property the ListView is not showing the items but it has that itemss..
what to do to show the items?..i should need to set this LVS_OWNERDATA style..
plz..plz help me.....
thanx in adavance...

 
0
 
LVL 39

Expert Comment

by:itsmeandnobodyelse
Comment Utility
>>>> its working without fine LVS_OWNERDATA style..

LVS_OWNERDATA means that you have to provide the data to show in the lsit control on request rather than to *insert* them on advance. You have to write a handler for the LVN_GETDISPINFO notification which was sent from List control whenever it needs data for a line to display. You don't see anything in the moment cause you didn't handle the LVN_GETDISPINFO notification in the moment.

Note, I doubt that you really need/want the LVS_OWNERDATA style. It is for *very* large data only where your application only provides data for the currently visible rows only, e. g. by a database query. That way a list control can *manage* a really huge amount of data cause it let the data manage by you ...

>>>> all my views are dervied from ListViews..
only replace the list views by form views and add a list control as member. Instead of GetListCtrl() you use m_listCtrl member. The changes are minimal.

>>>> could you please tell me how to do this..
You should have frame window classes. Either CMainFrame if it is an SDI architecure or a CMyChildFrame class derived from CMDIChildWnd if it is a MDI (multiple document interface). In any case you could add tool buttons to the frame window. Check the cpp of your frame window classes and add a new toolbar button using the resource editor.
0
 

Author Comment

by:srikadi
Comment Utility
Hi,
>>>> all my views are dervied from ListViews..
only replace the list views by form views and add a list control as member. Instead of GetListCtrl() you use m_listCtrl member. The changes are minimal.
ok..now iam implementing your suggestion..but i have one doubt..in my project we r setting Owner data propert ot listview..so it s calling LVN_GETDISPINFO and displaying data in Listview..
in my case what i need to do..

 

doc.txt
0
 
LVL 39

Expert Comment

by:itsmeandnobodyelse
Comment Utility
>>>> in my case what i need to do..

You first could try whether the CFormView could catch the LVN_GETDISPINFO for the control. If that doesn't work, you need to derive from CListCtrl and change the member type in CFormView derived class from CListCtrl to your derived class name. Then, you can handle the LVN_GETDISPINFO in the derived class. Note the derived class must have the DECLARE_DYNAMIC macro in class definition and the IMPLEMENT_DYNAMIC macro in the .cpp for the class.

Tomorrow I'll find time to help you further on that.
0
 

Author Comment

by:srikadi
Comment Utility
Hi,
No,CFormView is not catching the LVN_GEDISPINFO.sorry i didn't understand what you suggested..
plz help me...

0
 

Author Comment

by:srikadi
Comment Utility
Hi itsmeandnobodyelse ,
please help me  .......
0
 
LVL 39

Expert Comment

by:itsmeandnobodyelse
Comment Utility
>>>> No,CFormView is not catching the LVN_GEDISPINFO.sorry i didn't understand what you suggested..
You are wrong.

Open your .rc file in the IDE. Navigate to the Dialog folder and choose the formview where the list control was in. Mark the list control and right-click on it. Choose add handler. Then you'll get a combobox with all messages to handle. One of these is the LVN_GETDISPINFO message which you select and klick the Add/Edit ... button. The wizard then generates like

// TestFrmView message handlers

void TestFrmView::OnLvnGetdispinfoList1(NMHDR *pNMHDR, LRESULT *pResult)
{
    NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);
    // TODO: Add your control notification handler code here
    *pResult = 0;
}

in the formview cpp source. Here you can easily take the code of your list view handler with minimal changes.
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Templates For Beginners Or How To Encourage The Compiler To Work For You Introduction This tutorial is targeted at the reader who is, perhaps, familiar with the basics of C++ but would prefer a little slower introduction to the more ad…
Introduction: Finishing the grid – keyboard support for arrow keys to manoeuvre, entering the numbers.  The PreTranslateMessage function is to be used to intercept and respond to keyboard events. Continuing from the fourth article about sudoku. …
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.
The viewer will learn additional member functions of the vector class. Specifically, the capacity and swap member functions will be introduced.

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now