VCL TListView 和 EditCaption()
VCL TListView and EditCaption()
在 C++Builder 中,我有一个 TListView
和一些项目。
每当有人输入数值时,它应该应用于 ListView 中当前选定的 TListItem
的标题:
void __fastcall TFormMain::ListViewKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if ( Key >= '0' && Key <= '9' )
{
if ( !ListView->IsEditing() )
{
ListView->Selected->EditCaption();
}
}
}
此代码有效 "somehow":输入数值会使 TListView
进入编辑模式。然后我必须 re-enter 数字才能将其应用于 TListItem
的标题。
有没有一种方法可以一步完成 EditCaption()
并应用数字?
Isn't there a way to do EditCaption() and apply the number just in one single step?
您必须在调用后手动将输入的数字转发给 ListView 的编辑器,例如:
void __fastcall TFormMain::ListViewKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
if ( (Key >= '0') && (Key <= '9') )
{
TListItem *Item = ListView->Selected;
if ( (Item) && (!ListView->IsEditing()) )
{
Item->EditCaption();
HWND hWnd = ListView_GetEditControl(ListView->Handle);
TCHAR str[2] = {TCHAR(Key), 0};
SetWindowText(hWnd, str);
}
}
}
在 C++Builder 中,我有一个 TListView
和一些项目。
每当有人输入数值时,它应该应用于 ListView 中当前选定的 TListItem
的标题:
void __fastcall TFormMain::ListViewKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if ( Key >= '0' && Key <= '9' )
{
if ( !ListView->IsEditing() )
{
ListView->Selected->EditCaption();
}
}
}
此代码有效 "somehow":输入数值会使 TListView
进入编辑模式。然后我必须 re-enter 数字才能将其应用于 TListItem
的标题。
有没有一种方法可以一步完成 EditCaption()
并应用数字?
Isn't there a way to do EditCaption() and apply the number just in one single step?
您必须在调用后手动将输入的数字转发给 ListView 的编辑器,例如:
void __fastcall TFormMain::ListViewKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
if ( (Key >= '0') && (Key <= '9') )
{
TListItem *Item = ListView->Selected;
if ( (Item) && (!ListView->IsEditing()) )
{
Item->EditCaption();
HWND hWnd = ListView_GetEditControl(ListView->Handle);
TCHAR str[2] = {TCHAR(Key), 0};
SetWindowText(hWnd, str);
}
}
}