Q&A

  • 팝업메뉴 나타내기..
버튼을 누르면 팝업메뉴가 나타나는 예제좀 부탁합니다..

1  COMMENTS
  • Profile
    김영대 1999.10.06 02:49
    황현동 wrote:

    > 버튼을 누르면 팝업메뉴가 나타나는 예제좀 부탁합니다..



    아래 소스에서 PopupMenu1.PopUp(P.X, P.Y); 을 보세요



    // 메뉴 아이템의 동적 추가와 그림넣기 예제

    // Image1 에 작은 bitmap 하나 불러놓으신후 컴파일해서 실행하세요

    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    Menus, ExtCtrls, StdCtrls;



    type

    TForm1 = class(TForm)

    PopupMenu1: TPopupMenu;

    Button1: TButton;

    Button2: TButton;

    Image1: TImage;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation

    {$R *.DFM}



    procedure TForm1.Button1Click(Sender: TObject);

    var

    newitem : TMenuItem;

    i: Integer;

    begin

    // Popup menu의 이전 item을 clear 한다

    for i := PopupMenu1.Items.Count -1 downto 0 do

    PopupMenu1.Items.Delete(i);



    for i := 0 to 9 do // 임의로 10개만 만들어 본것임

    begin

    newitem := TMenuItem.Create(PopupMenu1); // menu item 생성

    newitem.Caption := IntTostr(i)+' 번째 Item'; // menu item 의 캡션

    newitem.MenuIndex := i;

    PopupMenu1.Items.Add(newitem); // Popup menu 에 추가

    end;



    // 추가된 item의 각 이미지를 그린다

    for i := 0 to PopupMenu1.Items.Count - 1 do

    SetMenuItemBitmaps(PopupMenu1.Handle,

    i, // 이미지를 넣을 item의 위치

    MF_BYPOSITION,

    Image1.Picture.BitMap.Handle, // handle of unchecked bitmap

    Image1.Picture.BitMap.Handle); // handle of checked bitmap

    end;



    procedure TForm1.Button2Click(Sender: TObject);

    var

    P: TPoint;

    begin

    // 수동으로 popup 하기

    P.X := Button2.Left;

    P.Y := Button2.Top;

    P := Self.ClientToScreen(P); // form 기준의 좌표를 desktop 기준의 좌표로 계산

    PopupMenu1.PopUp(P.X, P.Y);

    end;



    end.