2016-04-04 16 views
0

Delphi XE8、Firemonkeyマルチデバイスフォームを使用しています。OSXでEnterキーを押したときのFiremonkeyサウンド

パスワード入力用に設定された標準のTEditでは、ユーザーがEnterキー(OSX)を押したときにデフォルトの警告音を止められません。Windowsはうまく動作します。

私はKeyDownイベントとkeyUpイベントイベントに次のように設定しようとしました:

procedure TfrmMain.txtPasswordPromptKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); 
begin 
    if (Key = vkReturn) and (btnPasswordPromptGo.Tag = 0) then begin 
    Key := vkNone; 
    KeyChar := #0; 
    btnPasswordPromptGoClick(sender); 
    end; 
end; 

procedure TfrmMain.txtPasswordPromptKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); 
begin 
    if (Key = vkReturn) and (btnPasswordPromptGo.Tag = 0) then begin 
    Key := vkNone; 
    KeyChar := #0; 
    end; 
end; 

音はまだOSX上で果たしています。誰もこれをやめる方法を知っていますか?

+0

VCLアプリケーションでは、そのコードを記述する必要はありません。 OKボタンの 'Default'プロパティをtrueに設定するだけです。 FMXはそのように機能しませんか? –

+0

うわー、キャンセルとデフォルトのプロパティを使用していても、テキストボックスからのデフォルトのビープ音を防ぐことはできませんでした。ありがとう、それは動作します。私が見落としたのは、Defaultプロパティを持たないTCornerButtonを使用していたためですが、TButtonだけに変更できました。 – MikeD

答えて

0

キー値にvknoneを使用しないで、結果を0に設定しないでください。ビープ音が鳴りません。

procedure TfrmMain.txtPasswordPromptKeyDown(Sender: TObject; 
    var Key: Word; var KeyChar: Char; Shift: TShiftState); 
begin 
    if (Key = vkReturn) and (btnPasswordPromptGo.Tag = 0) then begin 
    Key := 0; 
    end; 
end; 

またロブが述べたように、あなたは、戻りが発生したときに実行するボタンをtrueにあなたのデフォルトのプロパティを設定することができます。これを行うと、キャリッジリターンを食べるコードは必要ありません。

+0

ええ、それは私が元々試みたものです。これは、Mac上のWindowsとモーダルフォームでは動作しますが、メインフォームでは動作しません。しかし、デフォルトのプロパティは機能します。 – MikeD

関連する問題