2017-01-30 4 views
-2

У меня есть вопрос: Как каждая новая созданная форма в моем приложении реализовала процедуру OnKeyPress, а KeyPreview - True?OnKeyPress for Escape закрывает форму по умолчанию

Я не хочу постоянно добавлять процедуру в событие OnKeyPress и вручную устанавливать KeyPreview в True.

+0

Пожалуйста, удалите нижний план. – SovereignSun

+0

Что такое downvotes? Комментарий по крайней мере. – SovereignSun

ответ

0

Лучший способ я нашел, чтобы создать шаблон формы и добавить его в хранилище . Затем установите его как «Новая форма» в репозитории .

В этом случае всякий раз, когда вы создаете новую форму, это будет тот самый шаблон. Все, что вам нужно сделать, это изменить название и подпись.

Это помогло мне в Дельфи 7.

2

Определите свою собственную форму TKPForm, которая наследует от TForm и добавляет конструктор, который устанавливает KeyPrview в True и имеет нажатие клавиши, чтобы делать то, что вы хотите в нем. Конечно, вам придется переопределить keyprss, если вам нужен код, уникальный для нового экземпляра TKPForm.

Прошло очень много времени с тех пор, как я сделал любой Delphi, но это не должно быть слишком далеко.

unit KPForm; 

interface 

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

type 
    TKPForm = class(TForm) 

private 
    { Private declarations } 
    public 
    constructor CreateNew(AOwner: TComponent); override; 
    end; 
var 
    TKPForm: TKPForm 

implementation 

{$R *.dfm} 
constructor KPForm.CreateNew(AOwner: TComponent); 
begin 
    inherited Create(AOwner); 
    Self.KeyPreview = true; 
    Self.OnKeyPress = YourKeyPressEventProcedure; 
end; 

Итак, когда вам нужна новая форма, вы используете новый KPForm.

Посмотрите на наследование Visual Form Inheritance.

Надеюсь, это поможет.

+0

Я предпочитаю использовать обработчик событий OnKeyDown, и может быть лучше предоставить публичную функцию, чтобы пользователь TKPForm мог установить обработчик? Честно говоря, я не вижу, какое большое дело - установить их вручную. Свойства формы, такие как 'KeyPreview', редко меняются. – AlainD

Смежные вопросы