掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
メニュー項目を移動するには? (ID:39677)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
タイマーを使った力業。 D6 XP SP3 とりあえずメニューアイテムを3つくらい作ってOnClickイベントにN1OnClickを割り当ててテスト。 private { Private 宣言 } F_DragItem: TMenuItem; procedure TForm1.PopupMenu1Popup(Sender: TObject); begin F_DragItem := nil; Timer1.Enabled := True; end; procedure TForm1.Timer1Timer(Sender: TObject); var i: Integer; l_MenuItem: TMenuItem; lpt_Pos: TPoint; lrc_Rect: TRect; begin GetMenuItemRect(0, PopupMenu1.Handle, 0, lrc_Rect); if ((lrc_Rect.Right - lrc_Rect.Left) <= 0) or ((lrc_Rect.Bottom - lrc_Rect.Top) <= 0) then begin //ポップアップメニューは非表示 Timer1.Enabled := False; end; if (gfnbKeyState(VK_LBUTTON)) and (F_DragItem = nil) then begin //ドラッグ開始かも知れない lpt_Pos := gfnptMousePosGet; for i := 0 to PopupMenu1.Items.Count-1 do begin l_MenuItem := PopupMenu1.Items[i]; GetMenuItemRect(0, PopupMenu1.Handle, i, lrc_Rect); if (PtInRect(lrc_Rect, lpt_Pos)) then begin F_DragItem := l_MenuItem; Timer1.Enabled := False; Exit end; end; end; end; procedure TForm1.N1Click(Sender: TObject); var l_MenuItem: TMenuItem; begin l_MenuItem := TMenuItem(Sender); if (F_DragItem <> nil) and (F_DragItem <> l_MenuItem) then begin //並べ替え F_DragItem.MenuIndex := l_MenuItem.MenuIndex; end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.