Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 423
  • Last Modified:

how to add CDialogTemplate to a CListview?

Hi,

how to add a CDilaogTempalte to a CListview.which contains buttons on top of CListctrl header.
that button action should perform some actioh in Clistctrl.
0
srikadi
Asked:
srikadi
  • 9
  • 7
1 Solution
 
AndyAinscowCommented:
You could use a CFormView instead.
Put the buttons where you want and a list control onto the dialog in the resource editor
0
 
srikadiAuthor Commented:
thanx for ur reply..
i did same thing but its not working properly..the listctrl is taking values but not showing to user..i don't know what could be the problem..
0
 
AndyAinscowCommented:
How do you add values to the list control?  (Check it is in report mode - I assume you want columns of information).
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
srikadiAuthor Commented:
ya..its in report mode..when i scan the node the values comes to the CListctrl..before it has worked fine..but when i placed on formview its not working..i know its taking values adding to the database but not showing in Clistctrl..
that y i asked some other alternate solution......
0
 
AndyAinscowCommented:
Please show your code for adding the info to the list control.
0
 
srikadiAuthor Commented:


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();
before the code was with CListview..now i changed to CFormview..
0
 
AndyAinscowCommented:
Where is the list control?
0
 
srikadiAuthor Commented:
CTaskListView is the Clistctrl  so..presently i am getting data to this CTaskListView .so i am calling this in CTaskFormView  which is CFormview class.
0
 
AndyAinscowCommented:
Is pNwVList non NULL ?
Are you getting any records back from the database ?


What is the code in SetRecordsetDirty ?
0
 
srikadiAuthor Commented:
yes..iam getting records..
0
 
AndyAinscowCommented:
You have still not posted the code that is for adding the items to the list control.

Please confirm that CTaskListView is based on the CListCtrl class.
0
 
srikadiAuthor Commented:
yes,CTaskListView is based on the CListCtrl class.
0
 
srikadiAuthor Commented:
sorry,CTaskListView is based on the CListView  class
0
 
srikadiAuthor Commented:

 if (!m_dSource.IsOpen())
  {
   return;
  }
  //if the recordset is empty, we display a notification label for the user
  if (pItem->iItem == 0 && m_dSource.GetRecordCount() == 0)
  {
   if (pItem->iSubItem == m_firstVisibleColumn )
   {
    RemoveSelection();
    pItem->pszText = (LPTSTR)(LPCTSTR)m_emptyString;
   }
   return;
  }
  // called when the listview needs to display data
  if(pItem->mask & LVIF_TEXT)
  {
   // first, move to the appropriate row in the database
   CString itemText, itemTextTrunc;
   if( m_dSource.PositionCursor(pItem->iItem) &&
    (m_dSource.GetValueByColName(m_columnHeaders.GetViewFieldName((short)pItem->iSubItem), itemText) ))
   {
    //if there is an index column, it is used for indexing the displayed items
    //this is used only for the first column item because there's no reason to duplicate
    //the information
    //Truncate string if necessary.
    if (itemText.GetLength() > pItem->cchTextMax)
    {
     CString itemTextTrunc;
     itemTextTrunc.LoadString(IDS_STRING_TO_LONG);
     int nTrunc = itemTextTrunc.GetLength() + 1;
     itemText = itemText.Left(pItem->cchTextMax - nTrunc) + itemTextTrunc;
    }
 
    lstrcpy(pItem->pszText, (LPCTSTR)itemText );
   }
   else
   {
    m_isRecordSetDirty = TRUE;
   }
   if (m_isRecordSetDirty)
   {
    SetRecordsetDirty();
    m_isRecordSetDirty = FALSE;
   }
  }
0
 
AndyAinscowCommented:
Well, you add controls to a resource dialog - so you need to link the control on the dialog to a member variable.
Select the control in resource editor, select add variable and add a CONTROL variable of type CListCtrl.

Now give your code another try.
0
 
srikadiAuthor Commented:
sorry,i didn't get u..i don't have any resource dialog for Clistctrl..
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 9
  • 7
Tackle projects and never again get stuck behind a technical roadblock.
Join Now