【问题标题】:Basic Enter key functionality in C++BuilderC++Builder 中的基本 Enter 键功能
【发布时间】:2020-06-24 13:46:46
【问题描述】:

我目前正在将旧的 Borland C++Builder 5 项目移植到 C++Builder 10.3。

我已经成功移植了所有项目文件,它可以按预期编译和运行,但是某些表单中的 Enter 键存在问题。

旧项目将始终执行与双击表单中的项目相同的功能,而无需使用显式代码。

在新项目中,这不起作用。在选定对象上按 Enter 键没有任何作用。

C++Builder 10.3 中是否有一些属性需要为此设置?或者,是否必须在 Form 的 OnKeyPress 事件中编写显式代码?

【问题讨论】:

  • 你能说得更具体点吗?请提供一个在 5 中有效但在 10.3 中无效的实际示例。自 5 发布以来的 20 年中,密钥处理没有太大变化。
  • 嗨,雷米,感谢您帮助我。所以不工作的表单只是 TCustomListView 组件的派生类。它们都覆盖了 FormKeyPress 方法。在旧版本中,回车键只会选择列表视图中突出显示的对象。在 10.3 中,除非我自己在 FormKeyPress 方法中实现该功能,否则在列表视图中的突出显示对象上按 enter 不会执行任何操作。我想知道表单中是否有一些属性需要设置,以便按 Enter 自动选择列表视图中突出显示的对象?
  • 确保您的关键事件处理程序已分配给您的组件...在移植到较新的 IDE 时发生过几次,事件的标头和主体都在那里,但分配已损坏(@ 987654322@)... 通常的补救措施是清除组件事件属性(或将其设置为不同的处理程序),然后将其设置回它应该使用的事件处理程序例程。但是,如果您在运行时分配处理程序,那么它就是其他东西...

标签: c++ c++builder borland-c++


【解决方案1】:

使用 C++Builder 10.4,我将 VCL ListView 添加到包含两个项目的表单中。我设置了 ListView onKeyPress 事件处理程序。然后,当我在 ListView 中选择一个或其他项目并按 Enter 键时,我会得到所选 ListItem 的标题。

void __fastcall TForm1::ListView1KeyPress(TObject *Sender, System::WideChar &Key)
{
    if(ListView1->Selected)
    {
       Label1->Caption =
           ListView1->Items->Item[ListView1->Selected->Index]->Caption;
    }
}

此代码是否与您在旧版 C++BUilder 中使用的代码匹配?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多