PoPUpのWidthを取得するには?

解決


DADANN  2008-05-30 15:33:16  No: 30829  IP: 192.*.*.*

初めて質問します。よろしく御願い致します。
OS:WindowsXp-Delphi5

PopUpメニューのRightToLeft表示に挑戦しています。
Buttonを押した時にそのButtonの左側へポップアップメニューが
表示されるようにしたいのです。
  
y座標は問題ないのですが、x座標を指定するのに表示される
PopUpメニューのWidthを取得する必要があるのですが、
いい取得方法はありますでしょうか?

Itemsの文字数を数えるなりすれば近いところには出せるとは思いますが。。
サブメニューがある時等はどの程度加える?等目分量になって
しまいそうなので。。

編集 削除
KHE00221  2008-05-31 03:07:38  No: 30830  IP: 192.*.*.*

DELPHI 5 にあるかは知らないけど BDS 2006 ならば
Alignment プロパティを paRight にすれば クリック位置より
左側に表示されるようになる

編集 削除
DADANN  2008-06-02 09:31:11  No: 30831  IP: 192.*.*.*

返答遅れて申し訳ありません。KHE00221様有難う御座います。
すいません、私の表現が少し足たりませんでした。。

>Buttonを押した時にそのButtonの左側へポップアップメニューが
の左側へはButtonにメニューが被らないようにしたいという表現が
必要でした。。申し訳ありません。

色々調べてみたのですが、Widthを取得するより表示される
最大の文字数+サブメニュー分=Widthもどき
とした方がよいかもしれないですね。

有難う御座いました。

編集 削除
KHE00221  2008-06-02 22:25:01  No: 30832  IP: 192.*.*.*

こゆうことじゃないのか?

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;

編集 削除
Mr.XRAY  2008-06-03 00:09:35  No: 30833  IP: 192.*.*.*

> こゆうことじゃないのか?

これだとすでにKHE00221さん自身がレスているので,おそらく

http://homepage2.nifty.com/Mr_XRAY/Others/PopupMenu_Position.htm

の図1〜図3のようなことではないかと推測したんですが...

編集 削除