初めましてです。popupmenu関連で教えて頂きたい事がありまして
書き込みさせて頂きました。
StringGrid上で、右クリックでpopupmenuを表示させたいのですが
その際に、いくつか制限事項がありまして・・
①一番最初の行の固定行(fixedrowやfixedcol)以外で
表示させる。
②RowCount=2、ColCount=2のStringGridで列や行が存在しない
StringGrid上の余白の部分でも右クリックでpopupmenuを
表示させる。
以上の内容で右クリックでpopupmenuを表示させたいのですが
うまく表示させる方法があればぜひ、お願い致します。
TStringGridのヘルプをじっくり読めば、その条件式、方法は分かるよ。
OnMouseDownでの処理と仮定
(1)固定セルの判定
(2)TStringGrid.ClientToScreen
(3)TPopupMenu.Popup
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;
ツイート | ![]() |