You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi 10.2中TDrawGrid编辑时插入预设文本且保持编辑状态的实现

Delphi 10.2 TDrawGrid 插入预设文本并保持编辑状态的实现方案

不需要子类化TDrawGrid,直接通过Windows API定位内置编辑控件即可实现需求,步骤如下:

  • 捕获编辑状态下的快捷键(比如Ctrl+P)
  • 找到DrawGrid内部的TEdit控件句柄
  • 设置预设文本并将光标移至文本末尾,维持编辑状态

具体代码实现

在TDrawGrid的OnKeyDown事件中添加以下逻辑:

procedure TForm1.DrawGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  EditHandle: HWND;
  PresetText: string;
begin
  // 仅在编辑模式下处理Ctrl+P
  if DrawGrid1.EditorMode and (Key = Ord('P')) and (ssCtrl in Shift) then
  begin
    // 查找DrawGrid内置的TEdit控件
    EditHandle := FindWindowEx(DrawGrid1.Handle, 0, 'TEdit', nil);
    if EditHandle <> 0 then
    begin
      PresetText := 'Propagate ';
      // 设置预设文本
      SetWindowText(EditHandle, PChar(PresetText));
      // 将光标定位到文本末尾,保持编辑状态
      SendMessage(EditHandle, EM_SETSEL, Length(PresetText), Length(PresetText));
      // 拦截原按键,避免输入多余的P
      Key := 0;
    end;
  end;
end;

说明

  • 该方案依赖Delphi 10.2中TDrawGrid的内置编辑控件类名为TEdit,这个版本下是稳定的
  • 通过EditorMode判断确保仅在单元格编辑状态下触发操作,避免无效执行

内容的提问来源于stack exchange,提问作者mait

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 09:32:39