Probleme la selectie item - ListControl
Probleme la selectie item - ListControl
Am un listcontrol care contine mai multe coloane si am implementat o functie de cautare - cu ajutorul "ListView_EnsureVisible" derulez lista pina apare ceea ce caut in lista (autoscroll) insa, problema e ca as vrea sa selectez coloana in care a fost gasit textul si nu stiu cum.
-Am cautat aici http://msdn.microsoft.com/en-us/library ... 85%29.aspx vreo functie dar n-am gasit nimic util.
-Mentionez ca am creat o variabila de control pentru lista insa nici o metoda nu functioneaza, apare un assert la executie (ASSERT(::IsWindow(m_hWnd)); - in afxcmn.inl).
Merci.
PS: Am incercat asa:
LVITEM lvi;
ZeroMemory(&lvi, sizeof(lvi));
lvi.mask = LVIF_STATE;
lvi.state = LVIS_SELECTED;
lvi.stateMask = LVIS_SELECTED;
HWND hWnd = ::GetDlgItem(m_hWnd, IDC_LIST1);
// LIST_CTRL1.SetItemState(2, &lvi); - imi da assert
// ListView_SetItemState(hWnd, 2,LVIS_SELECTED, LVIS_SELECTED) - nici un efect
// ::SendMessage(hWnd,LVM_SETITEMSTATE, (WPARAM)2,(WPARAM)&lvi); - nici un efect
-Am cautat aici http://msdn.microsoft.com/en-us/library ... 85%29.aspx vreo functie dar n-am gasit nimic util.
-Mentionez ca am creat o variabila de control pentru lista insa nici o metoda nu functioneaza, apare un assert la executie (ASSERT(::IsWindow(m_hWnd)); - in afxcmn.inl).
Merci.
PS: Am incercat asa:
LVITEM lvi;
ZeroMemory(&lvi, sizeof(lvi));
lvi.mask = LVIF_STATE;
lvi.state = LVIS_SELECTED;
lvi.stateMask = LVIS_SELECTED;
HWND hWnd = ::GetDlgItem(m_hWnd, IDC_LIST1);
// LIST_CTRL1.SetItemState(2, &lvi); - imi da assert
// ListView_SetItemState(hWnd, 2,LVIS_SELECTED, LVIS_SELECTED) - nici un efect
// ::SendMessage(hWnd,LVM_SETITEMSTATE, (WPARAM)2,(WPARAM)&lvi); - nici un efect
Re: Probleme la selectie item - ListControl
Lista ta are header ?
Pune LIST_CTRL1.ModifyStyle(0, LVS_SHOWSELALWAYS); apoi LIST_CTRL1.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);
Pune LIST_CTRL1.ModifyStyle(0, LVS_SHOWSELALWAYS); apoi LIST_CTRL1.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);
Cu stima,
Lupu Claudiu
Lupu Claudiu
Re: Probleme la selectie item - ListControl
Are header.
Nu, nu merge, dupa cum am mentionat nu merge cu variabile de control.Crapa la un assert: ASSERT(::IsWindow(m_hWnd)) in functia "ModifyStyle".
Nu, nu merge, dupa cum am mentionat nu merge cu variabile de control.Crapa la un assert: ASSERT(::IsWindow(m_hWnd)) in functia "ModifyStyle".
- Ovidiu Cucu
- Fondator
- Posts: 3778
- Joined: 11 Jul 2007, 16:10
- Judet: Iaşi
- Location: Iasi
- Contact:
Re: Probleme la selectie item - ListControl
Inainte de a merge mai departe.
Cele mai posibile cauze:
// Cand ai astfel de probleme, nu strica sa ne dai un pic mai multe amanunte. Pot fi si alte cauze...
Acel ASSERT spune clar ca m_hWnd nu este un handle de fereastra valid.carrera wrote:Crapa la un assert: ASSERT(::IsWindow(m_hWnd)) in functia "ModifyStyle".
Cele mai posibile cauze:
- Ai pus LIST_CTRL1 cu mana si nu ai functia DDX_Control corespunzatoare acelui control (verifica in DoDataExchange).
- Chemi acele functii (ModifyStyle, SetItemState etc), undeva unde controlul nu a fost inca creat.
// Cand ai astfel de probleme, nu strica sa ne dai un pic mai multe amanunte. Pot fi si alte cauze...
Ovidiu
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks
Re: Probleme la selectie item - ListControl
Ar fi util sa ne spui unde apelezi ModifyStyle.carrera wrote:Crapa la un assert: ASSERT(::IsWindow(m_hWnd)) in functia "ModifyStyle".
Cu stima,
Lupu Claudiu
Lupu Claudiu
- Ovidiu Cucu
- Fondator
- Posts: 3778
- Joined: 11 Jul 2007, 16:10
- Judet: Iaşi
- Location: Iasi
- Contact:
Re: Probleme la selectie item - ListControl
Nimic, nimic?
Sau o fi top-secret...
Sau o fi top-secret...

Ovidiu
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks
Re: Probleme la selectie item - ListControl
imi cer scuze de intirziere, locuiesc intr-o zona unde am net doar cind bate vantul
@bu7ch3r
O apelez in functia asociata unui buton, in aceeasi clasa in care am si lista + variabila ei de control.
@Ovidiu
-In DoDataExchange e totul ok, ID-ul listei e asociat cu numele variabilei de control - DDX_Control(pDX, IDC_LIST1, LIST_CTRL1);
-La a doua intrebare nu cred ca e cazul, totusi unele functii isi fac efectul, de ex. schimbarea font-ului sau culorii listei (dar nu folosind variabila de control).
-O chestie ciudata e ca inca de la inceput variabilele de control nu au functionat, indiferent ca am un combo, edit sau listbox.M-am gandit ca se intimpla din cauza ca metodele acestor variabile trimit mesajele direct catre fereastra principala si nu ferestrei "child" in care eu lucrez.Mentionez ca am o fereastra principala si mai multe ferestre tip child sub forma de Tab-uri.
Ceva de genul:
Intr-o clasa "TabedFrame"
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_TabbedFrameTYPE,
RUNTIME_CLASS(CTabbedFrameDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CTabbedFrameView)); // Aici am clasa (tab-ul) in care lucrez, am tot felul de controale a caror variabile de control nu functioneaza - le //controlez doar cu functii winapi
AddDocTemplate(pDocTemplate);
Iar in clasa "CChildFrame" am o functie:
BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
DefineTab(CTabbedMDIChildWnd::CTabItem("NumeTab",RUNTIME_CLASS(CTabbedFrameView)));
return CTabbedMDIChildWnd::OnCreateClient(lpcs,pContext);
}
"CTabbedMDIChildWnd" - este o clasa care se ocupa de management-ul Tab-urilor (schimbarea tab-urilor intre ele,etc.)
Am pornit totul de la un mic exemplu de pe codeproject, l-am dezvoltat f. mult dar n-am stiut ca in timp o sa se complice treaba adica sa apara noi si noi cerinte.Daca mai gasesc exemplul ala, pot trimite link-ul.
@bu7ch3r
O apelez in functia asociata unui buton, in aceeasi clasa in care am si lista + variabila ei de control.
@Ovidiu
-In DoDataExchange e totul ok, ID-ul listei e asociat cu numele variabilei de control - DDX_Control(pDX, IDC_LIST1, LIST_CTRL1);
-La a doua intrebare nu cred ca e cazul, totusi unele functii isi fac efectul, de ex. schimbarea font-ului sau culorii listei (dar nu folosind variabila de control).
-O chestie ciudata e ca inca de la inceput variabilele de control nu au functionat, indiferent ca am un combo, edit sau listbox.M-am gandit ca se intimpla din cauza ca metodele acestor variabile trimit mesajele direct catre fereastra principala si nu ferestrei "child" in care eu lucrez.Mentionez ca am o fereastra principala si mai multe ferestre tip child sub forma de Tab-uri.
Ceva de genul:
Intr-o clasa "TabedFrame"
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_TabbedFrameTYPE,
RUNTIME_CLASS(CTabbedFrameDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CTabbedFrameView)); // Aici am clasa (tab-ul) in care lucrez, am tot felul de controale a caror variabile de control nu functioneaza - le //controlez doar cu functii winapi
AddDocTemplate(pDocTemplate);
Iar in clasa "CChildFrame" am o functie:
BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
DefineTab(CTabbedMDIChildWnd::CTabItem("NumeTab",RUNTIME_CLASS(CTabbedFrameView)));
return CTabbedMDIChildWnd::OnCreateClient(lpcs,pContext);
}
"CTabbedMDIChildWnd" - este o clasa care se ocupa de management-ul Tab-urilor (schimbarea tab-urilor intre ele,etc.)
Am pornit totul de la un mic exemplu de pe codeproject, l-am dezvoltat f. mult dar n-am stiut ca in timp o sa se complice treaba adica sa apara noi si noi cerinte.Daca mai gasesc exemplul ala, pot trimite link-ul.
- Ovidiu Cucu
- Fondator
- Posts: 3778
- Joined: 11 Jul 2007, 16:10
- Judet: Iaşi
- Location: Iasi
- Contact:
Re: Probleme la selectie item - ListControl
Pai zi asa! Pe codeprojecturi ne putem astepta oricand la tot felul surprize.carrera wrote:Am pornit totul de la un mic exemplu de pe codeproject, ...

M-am uitat in globul de cristal si-am vazut ca un fix rapid ar fi acesta:
Code: Select all
CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
DefineTab(CTabbedMDIChildWnd::CTabItem("View",RUNTIME_CLASS(CTabbedFrameView)));
// the other tabs...
int nRet = CTabbedMDIChildWnd::OnCreateClient(lpcs,pContext);
if(nRet != 0)
{
m_wndTabs.SetCurSel(0);
NMHDR nmhdr = {0};
LRESULT lResult = 0;
CTabbedMDIChildWnd::OnTabChange(&nmhdr, &lResult);
}
return nRet;
}
Ovidiu
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks
Re: Probleme la selectie item - ListControl
nu prea... merci oricum, o sa caut exemplul ala.
- Ovidiu Cucu
- Fondator
- Posts: 3778
- Joined: 11 Jul 2007, 16:10
- Judet: Iaşi
- Location: Iasi
- Contact:
Re: Probleme la selectie item - ListControl
"Nu prea" sau deloc?carrera wrote:nu prea... merci oricum, o sa caut exemplul ala.
E vorba despre articolul din link-ul pe care l-am dat mai sus sau nu?
Ovidiu
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks
Re: Probleme la selectie item - ListControl
deloc
nu e acelasi articol, era un indian ca autor din cite imi amintesc.
