文档章节

学习 Message(15): 让窗体同时响应键盘事件的方法

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 208
阅读 6
收藏 0
点赞 0
评论 0

KeyPreview := True; 即可, 它默认是 False; 这对一些快捷键会有用.

测试代码:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Align := alLeft;
  Memo1.ScrollBars := ssBoth;
  Memo1.Clear;

  KeyPreview := True;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  Memo1.Lines.Add('窗体响应的 KeyDown 事件');
end;

procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  Memo1.Lines.Add('Memo1 响应的 KeyDown 事件');
end;

end.

 
 
 
 
 

 

 

  
窗体文件:
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 145
  ClientWidth = 264
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  OnKeyDown = FormKeyDown
  PixelsPerInch = 96
  TextHeight = 13
  object Memo1: TMemo
    Left = 8
    Top = 8
    Width = 185
    Height = 89
    Lines.Strings = (
      'Memo1')
    TabOrder = 0
    OnKeyDown = Memo1KeyDown
  end
end

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/10/30/1322996.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
VC6开发视频监控ActiveX控件总结

总结前段时间在VC6下使用MFC开发视频监控控件过程中遇到的一些问题. 1.获取控件当前所在路径,用于读取该目录下的INI配置文件 获取配置文件路径 2.获取当前运行控件的电脑上的固定盘符列表,用...

长征2号 ⋅ 2017/09/06 ⋅ 0

python3 tkinter简单使用

tkinter模块常用参数(python3) 1、使用tkinter.Tk() 生成主窗口(root=tkinter.Tk()); 2、初级样例: 3、tkinter中的15种核心组件: 4、组件的放置和排版(pack,grid,place)...

lsy612873 ⋅ 06/14 ⋅ 0

[IBM DW] 使用 Dojo 开发菜单应用

背景介绍 菜单应用是 Web 页面的点睛之笔。当用户在浏览器端右键单击的时候,浏览器会弹出自带的菜单,显示如“查看源代码”、“复制”、“粘贴”等可用菜单栏。通过使用浏览器自带 的菜单,...

红薯 ⋅ 2010/10/19 ⋅ 0

学习: Delphi FireMonkey 结构性初略分析

Delphi 下的FireMonkey,很好地实现了 DirectUI与跨平台。学习了解他,对DirectUI编程及项目的跨平台实现有一定帮助。 虽然作为开发者个体,并不需要了解太多这些东西,只要求拿来能用能实现...

iSixther ⋅ 2014/12/27 ⋅ 4

WINDOW消息机制(一):向窗体发送消息

WINDOWS应用程序(GUI程序)是基于消息的事件驱动方式运行,外部的事件:鼠标、键盘的点击,都会转化成消息,并被投掷于应用程序的消息队列中,应用程序的消息引擎从队列中获取消息,并进行处...

西昆仑 ⋅ 2012/06/29 ⋅ 0

监听事件笔记【简】

事件源 用户可以操作的所有内容 按钮,输入文本框,窗体 事件 用户以何种方式去操作事件源 鼠标事件,键盘事件,窗体事件 鼠标:点击,移入,离开 键盘:按下,弹起 窗体:最大化,关闭,加载...

anlve ⋅ 2017/06/08 ⋅ 0

EZo = 易组 : 开发ExtJS接口风格的新利器

前言 AJAX的解决方案非常多,其中ExtJS以具备丰富的组件与详细说明文件而著名,也深受企业用户与广大开发者喜爱。 笔者多年前在参与某个项目时,因为要提升网页的美观与易用性,在评估解决方...

陈威宇 ⋅ 2012/08/16 ⋅ 8

PreTranslateMessage用法及ID--HANDLE--HWND三者之间的互相转换

利用PreTranslateMessage,响应按钮控件的按下(WMLBUTTONDOWN)和松开(WMLBUTTONUP) VC的button控制只有两个事件,一个是单击事件,一个事双击事件。在这个方面VB就方便多了。但是我们有其...

IMGTN ⋅ 2012/06/05 ⋅ 0

FotoVision学习手记(3)

200100301.JPG AboutForm十分简单,重写了继承自System.Windows.Forms.Form的OnLoad方法,而不采用AboutForm_Load来响应窗体的Load事件。 using System; using System.Drawing; using System......

嗯哼9925 ⋅ 2017/12/26 ⋅ 0

MFC下多线程与消息机制的结合使用

前面一段时间,一直在想怎么样实现在全局的线程函数中实现调用窗体的一些函数(比如说在线程里面调用按钮单击处理函数,以及窗体的一些操作)。最近在网络 闲逛中发现了实现的方法,特意贴出...

长平狐 ⋅ 2012/07/12 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vim编辑模式、命令模式

编辑模式 vim要从一般模式进入编辑模式只要按字母 i 、I、a、A、o、O键就可以了 要从编辑模式回到一般模式按键盘上的Esc键即可。 按键 作用 i 在当前字符前插入 I 在光标所在行的行首插入 o ...

黄昏残影 ⋅ 27分钟前 ⋅ 0

OSChina 周五乱弹 —— 如果有一天不当程序员了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @guanglun :分享off的单曲《我唱情歌给你听》 《我唱情歌给你听》- off 手机党少年们想听歌,请使劲儿戳(这里) @小小编辑 :#如果不做程序...

小小编辑 ⋅ 34分钟前 ⋅ 4

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

Java8新增的DateTimeFormatter与SimpleDateFormat的区别

两者最大的区别是,Java8的DateTimeFormatter也是线程安全的,而SimpleDateFormat并不是线程安全。 在并发环境下使用SimpleDateFormat 为了能够在多线程环境下使用SimpleDateFormat,有这三种...

人觉非常君 ⋅ 今天 ⋅ 0

多线程如何控制执行顺序

线程的生命周期说明: 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、...

MarinJ_Shao ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Django第一期

安装Django 去https://www.djangoproject.com/download/ 下载最新版的Django,然后解压放到Anaconda\Lib\site-packages目录下,然后cmd进入此目录,输入安装命令: python setup.py install ...

大不了敲一辈子代码 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部