TDBMemoコンポーネントの選択したテキストをクリップボードにコピーできないのはなぜですか? DELPHI 7、Windows Vista。 次のコードはctrl + cイベントを捕捉できませんが、ctrl + aは正常に動作します。TMemoコンポーネントでCTRL + Cが動作しないのはなぜですか? (Vista + Delphi 7)
uses clipbrd;
procedure THierarchierForm.dbm1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key=Ord('A')) and (ssCtrl IN Shift) then begin
dbm1.SelectAll;
Key:=0;
end;
if (Key=Ord('C')) and (ssCtrl IN Shift) then begin
Clipboard.AsText:=dbm1.SelText;
Key:=0;
end;
end;
ありがとう
私はあなたの質問に対する答えを知らないが、あなたはそれをすべて間違っている。ショートカットを処理する場合は、KeyDownではなくショートカットハンドラを使用する必要があります。 CTRL + SHIFT + ALT + CとCTRLを含む任意の組み合わせを使用してクリップボードにコピーします。メモをクリップボードにコピーしたい場合は、 'dbm1.CopyToClipboard'を呼び出すべきだと思います。 –
私はそれが正しくないことを知っていますが、それは私がそれをキャッチすることはできません、私は多くのトラブル。メモ全体をコピーするのではなく、選択した部分だけをコピーしたい。 「ショートカットハンドラ」とは何ですか? – lyborko
'CopyToClipboard'はあなたが望むことをします。私はいつもShortcutプロパティ(メニューやアクションなど)でこれらのイベントを処理しようとします。 'Shift = [ssCtrl]'と書いておくと良いでしょうが、最も良いのは 'Shift * [ssShift、ssAlt、ssCtrl] = [ssCtrl]'でしょう。とにかく、そうするなら、それをヘルパー関数に移動します。 –