質問があります:アプリケーションで新しく作成されたすべてのフォームにOnKeyPressプロシージャが実装され、KeyPreviewがTrueに設定されていますか?Escape用のOnKeyPressがデフォルトでフォームを閉じます
この手順をOnKeyPressイベントに常に追加し、KeyPreviewをTrueに手動で設定しないことをお勧めします。
質問があります:アプリケーションで新しく作成されたすべてのフォームにOnKeyPressプロシージャが実装され、KeyPreviewがTrueに設定されていますか?Escape用のOnKeyPressがデフォルトでフォームを閉じます
この手順をOnKeyPressイベントに常に追加し、KeyPreviewをTrueに手動で設定しないことをお勧めします。
私が見つけた最良の方法は、フォームのテンプレートを作成し、リポジトリにそれを追加することです。その後、新しいフォーム "レポジトリ"に設定します。
この場合、新しいフォームを作成するたびにそのテンプレートが作成されます。名前とキャプションを変更するだけです。
これはデルファイ7で役に立ちました。
TFormから継承した独自のフォームTKPFormを定義し、KeyPrviewをTrueに設定し、キープレスを使用して目的の処理を行うコンストラクタを追加します。 もちろん、TKPFormの新しいインスタンスに固有のコードが必要な場合は、keyprssをオーバーライドする必要があります。
私は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を見てください。
希望します。
私は 'OnKeyDown'イベントハンドラの使用を好むので、' TKPForm'のユーザがハンドラを設定できるようにパブリック関数を提供する方が良いでしょうか?率直に言って、これらを手動で設定するのは大きな問題ではありません。 'KeyPreview'のようなフォームのプロパティはまれにしか変更されません。 – AlainD
下線を削除してください。 – SovereignSun
ダウンボートは何ですか?少なくともコメントする。 – SovereignSun