popupmenuをStringGrid上で右クリックで表示させる方法


あおあお  2006-11-24 02:26:35  No: 24024

初めましてです。popupmenu関連で教えて頂きたい事がありまして
書き込みさせて頂きました。

StringGrid上で、右クリックでpopupmenuを表示させたいのですが
その際に、いくつか制限事項がありまして・・

①一番最初の行の固定行(fixedrowやfixedcol)以外で
  表示させる。

②RowCount=2、ColCount=2のStringGridで列や行が存在しない
  StringGrid上の余白の部分でも右クリックでpopupmenuを
  表示させる。

以上の内容で右クリックでpopupmenuを表示させたいのですが
うまく表示させる方法があればぜひ、お願い致します。


ナニはなくともヘルプ  2006-11-24 08:06:01  No: 24025

TStringGridのヘルプをじっくり読めば、その条件式、方法は分かるよ。


orz  2006-11-24 17:29:12  No: 24026

OnMouseDownでの処理と仮定
(1)固定セルの判定
(2)TStringGrid.ClientToScreen
(3)TPopupMenu.Popup


Basser  2006-11-24 23:56:26  No: 24027

OnContextPopupイベントを使用するといいでしょう。
イベントに関しての詳細はヘルプを参照して下さい。
下記が例です。

procedure TForm1.StringGrid1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
var
  sp: TPoint;
  C, R: Integer;
begin
  // セルの番地を取得
  StringGrid1.MouseToCell(MousePos.x, MousePos.y, C, R);
  // 固定セル以外の場所でポップアップイベントが発生したか判定
  Handled:= ((C = -1) and (R = -1)) or
            ((C >= StringGrid1.FixedCols) and (R >= StringGrid1.FixedRows));

  if Handled then
  begin
    // クライアント座標をスクリーン座標に変換
    sp:= StringGrid1.ClientToScreen(MousePos);
    // 画面呼出 ※表示したいポップアップメニューに置き換えて下さい
    MessageDlgPos('Popup!', mtInformation, [mbOk], 0, sp.x, sp.y);
  end;
end;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加