Solved

List view control problem

Posted on 1999-01-09
1
198 Views
Last Modified: 2013-11-20
Hi,

I am building a dialog box with 3 edit controls, a list view control in report view and 3 push buttons. With the buttons I want to "Add", "Change" and "Delete" items in the list view control, so for every button I have a button click event handler. See below my event handler for an "Add" button click :

void CBuildShareListDlg::OnAddShareItem()
{
    // Retrieves the following data from the dialog box :
    // CListCtrl    m_lvcShareList;
    // long         m_lVolume;
    // CString      m_strDate;
    // float        m_fRate;
    if ( UpdateData() != TRUE )
        return;
        :
        :
    // Build a CTime object "time" out of m_strDate.

    LV_ITEM      lvItem;
    int          iActItem, iItem;
    TCHAR        szText[3][15];

    lstrcpy( szText[0], ( LPCTSTR ) time.Format( "%d/%m/%Y" ) );
    _stprintf( szText[1], "%f", m_fRate );
    _strprint( szText[2], "%u", ( UINT) m_lVolume );

    iItem = ?  // THAT IS MY PROBLEM.

    for ( int iSubItem = 0; iSubItem < 3; iSubItem++ )
    {
        lvItem.mask = LVIF_TEXT | ( iSubItem == 0 ? LVIF_IMAGE : 0 );
        lvItem.iItem = ( iSubItem == 0 ) ? iItem : iActItem;
        lvItem.iSubItem = iSubItem;
        lvItem.pszText = szText[iSubItem];
        lvItem.iImage = 0;

        if ( iSubItem == 0 )
            ASSERT( ( iActItem = m_lvcShareList.InsertItem( &lvItem ) )!= -1 );
        else
            ASSERT( m_lvcShareList.SetItem( &lvItem ) != -1 );
    }
}

Question 1 :
According to my documentation iItem is a zero based index, but must these indexes be ordered starting from 0 and incremented by 1 each time a new ShareItem is added, or is it just a value that identifies an item in the control.

Question 2 :
When I write my handlers for the "Change" and "Delete" button clicks, how can I figure out which item in the list view is selected. A little bit of code would be very appreciated.


Thanks in advance for everyone that is willing to help me.
0
Comment
Question by:bs161900
1 Comment
 
LVL 8

Accepted Solution

by:
Answers2000 earned 20 total points
ID: 1327432
#1
The index identifies the item.  But it is important (depending if the list's built in sort is turned off), it gives the position to insert.  If you want to insert at the end of the list, use GetItemCount() to get the number of items currently in the list, and this gives you to index to use when adding items.

#2
int nItem = m_lvc.GetNextItem( nSearchFrom, LVNI_SELECTED ) ;

Gives the _next_ selected item.  If you have a max of 1 item selected (depends on your lists styles, set nSearchFrom to -1)...if you have a list control style allowing multi-seleciton then start from -1.  When you find an item, repeat the call with the return value of the previous call to find the next item, and so.

nItem will be set to -1 when no (more) items are found
0

Featured Post

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

Suggested Solutions

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. …
Introduction: Database storage, where is the exe actually on the disc? Playing a game selected randomly (how to generate random numbers).  Error trapping with try..catch to help the code run even if something goes wrong. Continuing from the seve…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.

747 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

18 Experts available now in Live!

Get 1:1 Help Now