StringGridで、右クリックすると、下に不要なメニューが表示されることがあります。これはWindowsポップアップですか?
このポップアップが自分のものではなく表示されないようにするにはどうすればよいですか?
オプションにgoAlwaysShowEditorがあります。
StringGrid.PopupMenuをポップアップに設定しました。
右クリックするとポップアップが表示されるようにStringGrid.OnMouseDownを設定しました。
この方法で仮想CreateEditor
メソッドをオーバーライドできます (ただし、良い解決策ではありませんが、私は知っています :-):
type
TStringGrid = class(Grids.TStringGrid)
protected
function CreateEditor: TInplaceEdit; override;
end;
implementation
function TStringGrid.CreateEditor: TInplaceEdit;
begin
Result := inherited CreateEditor;
TMaskEdit(Result).PopupMenu := Form1.PopupMenu1;
end;
これは、すべての Windows EDIT コントロールにあるポップアップ メニューです。世界で最も有名なメニューの可能性があります (唯一の競合はシステム メニューからのものです)。ユーザーがそれを期待している(そして必要としている)ため、あなたはそれを望んでいます。セル内のテキストを編集すると、コントロールは実際に標準の Windows EDIT コントロールを作成します。これはすばらしい機能です。したがって、ポップアップメニューが表示されます。TStringGrid
さらに、(セルを編集していないときに) 独自のポップアップ メニューを表示するには、OnMouseDown
ハンドラーを設定する必要はありません。PopupMenu
プロパティを設定するだけで十分です。実際、OnMouseDown
ハンドラーを使用してポップアップ メニューをトリガーするのは非常によくありません。ユーザーがコントロールを右クリックしたときにのみメニューが表示されるためです (たとえば、コントロールの「コンテキスト」ボタンを押したときは表示されません)。キーボード)。
ユーザーがセルを編集している場合でも、独自のポップアップメニューを表示したい場合は、元に戻す、コピー、切り取り、貼り付け、Unicode などの通常のオプションを手動で指定する必要があります。きっとあなたはそれを望んでいませんか?