掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
PopupMenu の処理を共通にするには? (ID:18741)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
まず、ListBox1、ListBox2 をフォームに貼り付け、 各 Click イベントに ComponentsClick を設定します。 次に、PopupMenu1、PopupMenu2 をフォームに貼り付け、 ListBox1 の PopUpMenu プロパティに PopupMenu1 ListBox2 の PopUpMenu プロパティに PopupMenu2 を設定します。 PopMenu1、PopMenu2 にMenuItem を作成します。 PopMenu1 は Show1: TMenuItem(Caption=Show) PopMenu2 は Show2: TMenuItem(Caption=Show) ListBox1、ListBox2、Show1、Show2 それぞれの Click イベントに ComponentsClick を設定します。 以上で設定を終わります。 ListBox1、ListBox2 にはあらかじめデータを設定しておき、 ListBox1をクリックすすると、 アドレスの読込違反が発生します。 おかしいのは 設定時の TListBox(Sender) と 取得時の TListBox(TPopupMenu(Sender).PopupComponent)が 違っているからですが、 なぜ、このような現象になるのか、 また、正常に動作するにはどうすればよいのか教えてください。 procedure TForm1.ComponentsClick(Sender: TObject); var ListBoxCompo: TListBox; begin if (Sender = ListBox1) or (Sender = ListBox2) then begin TListBox(Sender).PopupMenu.PopupComponent := TListBox(Sender); TListBox(Sender).PopupMenu.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y); end else if (Sender = Show1) or (Sender = Show2) then begin ListBoxCompo := TListBox(TPopupMenu(Sender).PopupComponent); if ListBoxCompo.ItemIndex >= 0 then begin ShowMessage(ListBoxCompo.Items[ListBoxCompo.ItemIndex]); end; end end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.