michaelwengert
Erfahrenes Mitglied
Ich habe eine ListCtrl in der Report-Ansicht.
Nun verschiebe ich durch drücken der Pfeiltasten markierte Elemente nach oben bzw nach unten.
Nun ist das Problem, das ja beim verschieben immer noch das zuvor markierte Element auch wieder markiert sein soll. Beim runterschieben funktioniert das auch, aber beim Hochschieben wird immer das Element, das eins tiefer ist markiert.
Mein Code ist folgendermaßen:
Hat jemand ne Ahnung
Nun verschiebe ich durch drücken der Pfeiltasten markierte Elemente nach oben bzw nach unten.
Nun ist das Problem, das ja beim verschieben immer noch das zuvor markierte Element auch wieder markiert sein soll. Beim runterschieben funktioniert das auch, aber beim Hochschieben wird immer das Element, das eins tiefer ist markiert.
Mein Code ist folgendermaßen:
Code:
void CHardware::OnLvnKeydownObjectmemberlist(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLVKEYDOWN pLVKeyDow = reinterpret_cast<LPNMLVKEYDOWN (pNMHDR);
if (pLVKeyDow->wVKey==VK_DOWN)
OnBnClickedDown();
else if (pLVKeyDow->wVKey==VK_UP)
OnBnClickedUp();
*pResult = 0;
}
void CHardware::OnBnClickedUp()
{
CString strID;
CString strHardware;
CString strValue;
strID=m_Properties.GetItemText(s16Auswahl,0);
strHardware=m_Properties.GetItemText(s16Auswahl,1);
strValue=m_Properties.GetItemText(s16Auswahl,2);
if (s16Auswahl>0)
{
m_Properties.DeleteItem(s16Auswahl);
m_Properties.SetSelectionMark(s16Auswahl+1);
s16Auswahl-=1;
m_Properties.InsertItem(s16Auswahl,strID);
m_Properties.SetItem(s16Auswahl,1,LVIF_TEXT,strHardware,0,0,0,0);
m_Properties.SetItem(s16Auswahl,2,LVIF_TEXT,strValue,0,0,0,0);
}
SetHardwarePosition();
}
void CHardware::OnBnClickedDown()
{
CString strID;
CString strHardware;
CString strValue;
strID=m_Properties.GetItemText(s16Auswahl,0);
strHardware=m_Properties.GetItemText(s16Auswahl,1);
strValue=m_Properties.GetItemText(s16Auswahl,2);
if (s16Auswahl<m_Properties.GetItemCount()-1)
{
m_Properties.DeleteItem(s16Auswahl);
s16Auswahl+=1;
m_Properties.InsertItem(s16Auswahl,strID);
m_Properties.SetItem(s16Auswahl,1,LVIF_TEXT,strHardware,0,0,0,0);
m_Properties.SetItem(s16Auswahl,2,LVIF_TEXT,strValue,0,0,0,0);
}
SetHardwarePosition();
}
Hat jemand ne Ahnung
Zuletzt bearbeitet: