VCL TListView和EditCaption()

时间:2018-09-11 15:13:40

标签: c++builder vcl tlistview

在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();
        }
    }
}

此代码“以某种方式”起作用:输入数值会将TListView置于编辑模式。然后,我必须重新输入数字以将其应用于TListItem的标题。

难道没有办法一步一步应用EditCaption()并应用数字吗?

1 个答案:

答案 0 :(得分:1)

  

没有一种方法可以执行EditCaption()并仅一步一步应用数字吗?

调用后,您必须将键入的数字手动转发到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);
        }
    }
}