CListCtrl - как праграммно установить фокус
От: Valery  
Дата: 08.12.01 05:49
Оценка:
Привет Всем!
Вопрос простой — как программно вернуть фокус элементу CListCtrl и подсветить какую нибудь строчку,
т.е. повторить операции которые вызывает щелчок мыши по контролу.
Жду не дождусь ответа.
Re: CListCtrl - как праграммно установить фокус
От: Alex Fedotov США  
Дата: 08.12.01 05:59
Оценка:
Здравствуйте Valery, Вы писали:

V>Вопрос простой — как программно вернуть фокус элементу CListCtrl и подсветить какую нибудь строчку,

V>т.е. повторить операции которые вызывает щелчок мыши по контролу.

m_List.SetFocus();
m_List.SetItemState(nItem, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
-- Alex Fedotov
Re[2]: CListCtrl - как праграммно установить фокус
От: Valery  
Дата: 08.12.01 06:37
Оценка:
Здравствуйте Alex Fedotov, Вы писали:

AF>Здравствуйте Valery, Вы писали:


V>>Вопрос простой — как программно вернуть фокус элементу CListCtrl и подсветить какую нибудь строчку,

V>>т.е. повторить операции которые вызывает щелчок мыши по контролу.

AF>
AF>m_List.SetFocus();
AF>m_List.SetItemState(nItem, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
AF>


Спасибо все заработало — отлично!.
Valery.
Re[3]: CListCtrl - как праграммно установить фокус
От: dad  
Дата: 12.12.01 09:24
Оценка:
Здравствуйте Valery, Вы писали:

AF>>
AF>>m_List.SetFocus();
AF>>m_List.SetItemState(nItem, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
AF>>


V>Спасибо все заработало — отлично!.

А я вызываю модальный диалог для редактирования записей списка, в диалоге есть переход вверх и вниз по записям. Надо что бы по выходе из диалога — выделенным был текущий элемент, а не тот который был на момент начала редактирования. При использовании указанного выше кода — получается выделенным массив элементов. Как этого избежать?
А как быстро сделать, что бы выделенным был не узловой элемент, а вся строка (режим LVS_REPORT)?
V>Valery.
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
Re[4]: CListCtrl - как праграммно установить фокус
От: Admiral Украина  
Дата: 12.12.01 10:11
Оценка:
Здравствуйте dad, Вы писали:

dad>А как быстро сделать, что бы выделенным был не узловой элемент, а вся строка (режим LVS_REPORT)?


Вот для ATL
LRESULT OnInitDialog(...)
{
    ...
    INITCOMMONCONTROLSEX icc;
    icc.dwSize=sizeof(INITCOMMONCONTROLSEX);
    icc.dwICC=0xffffffff;
    InitCommonControlsEx(&icc);

    CWindow lw1;
    lw1.Attach(GetDlgItem(IDC_LIST1));
    DWORD dwStyle=::SendMessage(lw1.m_hWnd,LVM_GETEXTENDEDLISTVIEWSTYLE,0,0);
    dwStyle|=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES;
    ::SendMessage(lw1.m_hWnd,LVM_SETEXTENDEDLISTVIEWSTYLE,0,dwStyle);
    ...
}


Хоть и криво выглядит, но у меня работает.

В MFC вместо CWindow надо использовать CWnd (не проверял).

Удачи!
Re[5]: CListCtrl - как праграммно установить фокус
От: dad  
Дата: 12.12.01 10:23
Оценка:
Здравствуйте Admiral, Вы писали:

A>Здравствуйте dad, Вы писали:


dad>>А как быстро сделать, что бы выделенным был не узловой элемент, а вся строка (режим LVS_REPORT)?


A>Вот для ATL

A>Хоть и криво выглядит, но у меня работает.

A>В MFC вместо CWindow надо использовать CWnd (не проверял).


Спасибо. В мфц ес-но цэвнд используется, но вот беда я ваши сили попробовал применить, получается беда к-то
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
Re[6]: CListCtrl - как праграммно установить фокус
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 12.12.01 10:31
Оценка:
Здравствуйте dad, Вы писали:

dad>>>А как быстро сделать, что бы выделенным был не узловой элемент, а вся строка (режим LVS_REPORT)?


dad>Спасибо. В мфц ес-но цэвнд используется, но вот беда я ваши сили попробовал применить, получается беда к-то


и так тоже пробовал?

m_MyList.SetExtendedStyle( LVS_EX_FULLROWSELECT );
Re[7]: CListCtrl - как праграммно установить фокус
От: dad  
Дата: 12.12.01 10:39
Оценка:
Здравствуйте Odi$$ey, Вы писали:

O$>и так тоже пробовал?

O$>
O$>m_MyList.SetExtendedStyle( LVS_EX_FULLROWSELECT );
O$>

вот так работает:

СSomeView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
lpCreateStruct->style |= LVS_REPORT;
if (CListView::OnCreate(lpCreateStruct) == -1)
{
return -1;
}
GetDocument()->m_pListView = this;
CListCtrl& ListCtrl = GetListCtrl();
ListCtrl.SetExtendedStyle( LVS_EX_FULLROWSELECT );
return 0;
}
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.