1

TJvInspector にはOnItemDoubleClicked、Color Item プロパティでマウスがダブルクリックされたかどうかを検出する必要があるため、必要なものだと思われるイベントがあることに気付きました (カスタム カラーを選択できるように独自のカラー フォームを表示したいなど)。

しかし、次のように、イベントをまったく発生させることさえできません。

procedure TfrmInspector.JvInspector1ItemDoubleClicked(Sender: TObject;
  Item: TJvCustomInspectorItem);
begin
  if Item is TJvInspectorColorItem then
    ShowMessage('you double clicked on a color property')
  else
    ShowMessage('not a color property');
end;

そのイベントの任意の場所にカーソルを設定して F4 で実行するか、そこにブレークポイントを設定してもトリガーされないため、実行時にメッセージ ボックスもポップアップしません。

これは、Jedi Inspector コンポーネントのバグまたは既知の問題ですか?

私は通常それらを使用することはなく、トラブルに遭遇し続けているようです.

4

1 に答える 1

3

JvInspector コードを見ると、項目エディターがなく (読み取り専用?)、項目がオブジェクト プロパティである場合に OnItemDoubleClicked が発生します。したがって、これは間違いなく間違ったイベントです (そして、その名前は誤解を招きます)。

問題は、ダブルクリック イベントが JvInspector コントロールではなく、現在のエディター コントロール (TEdit、TComboBox など) に向けられていることです。したがって、JvInspector はダブルクリックを認識しません。これを解決するには、エディターの OnDblClick イベントをフックする必要があります。そのために、JvInspector には OnBeforeEdit イベントがあります。

procedure TForm1.JvInspector1BeforeEdit(Sender: TObject; Item: TJvCustomInspectorItem;
  Edit: TCustomEdit);
begin
  TEdit(Edit).OnDblClick := ItemDblClick;
end;

procedure TForm1.ItemDblClick(Sender: TObject);
begin
  ShowMessage(JvInspector1.Selected.Name);
  Abort; // don't change the value by the default double click handler
end;

これは、「設定」プロパティまたはエディター コントロールのないその他のプロパティでは機能しません。

于 2013-01-06T16:07:55.210 に答える