VCL TListView и EditCaption () - PullRequest
       69

VCL TListView и EditCaption ()

0 голосов
/ 11 сентября 2018

В C ++ Builder у меня есть TListView с некоторыми элементами.

Всякий раз, когда кто-то вводит числовое значение, его следует применять к заголовку текущего выбранного TListItem вListView:

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 голосов
/ 12 сентября 2018

Нет ли способа сделать 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);
        }
    }
}
...