初めて質問します。よろしく御願い致します。
OS:WindowsXp-Delphi5
PopUpメニューのRightToLeft表示に挑戦しています。
Buttonを押した時にそのButtonの左側へポップアップメニューが
表示されるようにしたいのです。
y座標は問題ないのですが、x座標を指定するのに表示される
PopUpメニューのWidthを取得する必要があるのですが、
いい取得方法はありますでしょうか?
Itemsの文字数を数えるなりすれば近いところには出せるとは思いますが。。
サブメニューがある時等はどの程度加える?等目分量になって
しまいそうなので。。
DELPHI 5 にあるかは知らないけど BDS 2006 ならば
Alignment プロパティを paRight にすれば クリック位置より
左側に表示されるようになる
返答遅れて申し訳ありません。KHE00221様有難う御座います。
すいません、私の表現が少し足たりませんでした。。
>Buttonを押した時にそのButtonの左側へポップアップメニューが
の左側へはButtonにメニューが被らないようにしたいという表現が
必要でした。。申し訳ありません。
色々調べてみたのですが、Widthを取得するより表示される
最大の文字数+サブメニュー分=Widthもどき
とした方がよいかもしれないですね。
有難う御座いました。
こゆうことじゃないのか?
procedure TForm4.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
P: TPoint;
begin
if Button = mbRight then
begin
PopupMenu1.Alignment := paRight;
P := Button1.ClientToScreen(Point(0,Y));
PopupMenu1.Popup(P.X,P.Y);
end;
end;
> こゆうことじゃないのか?
これだとすでにKHE00221さん自身がレスているので,おそらく
http://homepage2.nifty.com/Mr_XRAY/Others/PopupMenu_Position.htm
の図1〜図3のようなことではないかと推測したんですが...
ツイート | ![]() |