人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

通過(guò)鼠標(biāo)右擊選擇TListBox中的選項(xiàng)

通過(guò)鼠標(biāo)右擊選擇TListBox中的選項(xiàng)

更新時(shí)間:2022-10-02 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

有時(shí),我們要在ListBox的彈出式菜單中通過(guò)ItemIndex顯示項(xiàng)目的有關(guān)信息。但是,在項(xiàng)目上右擊鼠標(biāo)時(shí),ItemIndex不會(huì)象左擊那樣被改變。這篇文章將通過(guò)例子來(lái)告訴你如何實(shí)現(xiàn)此功能。
假設(shè)你有一個(gè)ListBox,填充有稱作Widgets的類:

type TWidget = class(Tobject)
WidgetName : string;
WidgetStatus : boolean;
End;

Widgets : array [0..10] of TWidget

每一項(xiàng)WidgetName在ListBox中顯示出來(lái)。

你想要通過(guò)一個(gè)彈出式菜單來(lái)改變每一個(gè)Widget的狀態(tài),其中彈出式菜單與ListBox的OnPopUp事件關(guān)聯(lián)。如果狀態(tài)是活動(dòng)的,設(shè)置“Active”;如果不是活動(dòng)的,不設(shè)置“Active”。單擊“Active”來(lái)改變狀態(tài)。

問(wèn)題是:鼠標(biāo)左鍵單擊ListBox會(huì)選擇一Widget,但用右鍵單擊(并顯示彈出菜單)時(shí)不會(huì)選擇。如果鼠標(biāo)不在已選項(xiàng)上,彈出菜單顯示的將不是鼠標(biāo)所在Widget的狀態(tài),而是已選Widget的狀態(tài)。

幸運(yùn)的是,ListBox的OnMouseDown比彈出式菜單的OnPopUp先被觸發(fā)。這樣,我們就能在彈出式菜單顯示之前用OnMouseDown事件設(shè)置ItemIndex。

TlistBox有一個(gè)方法:ItemAtPos(Pos: TPoint; Existing: Boolean): Integer;
如果能在Pos座標(biāo)處找到ListBox的一項(xiàng),這一方法將返回這一項(xiàng)的Index。如果沒(méi)有找到任何項(xiàng),且Existing值設(shè)為T(mén)rue,ItemAtPos將返回值-1,如果Existing值設(shè)為False,ItemAtPos將返回ListBox最后一項(xiàng)的Index值加1。

用這個(gè)方法結(jié)合OnMouseDown事件就解決了我們的問(wèn)題:

OnMouseDown代碼:

procedure TForm1.WidgetListMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
MousePos : TPoint;
OverItemIndex : integer;

begin
MousePos.x := X;
MousePos.y := Y;

if Button = mbRight then
begin
OverItemIndex := WidgetList.ItemAtPos(MousePos,False);
WidgetList.ItemIndex:=OverItemIndex;
end;
end;


OnPopUp代碼:
procedure TForm1.PopupMenu1Popup(Sender: TObject);
var
Index : integer;
begin
Index := WidgetList.ItemIndex;
PopUpMenuItemActive.Checked := Widgets[Index].WidgetStatus;
end;


彈出式菜單項(xiàng)"Active"的OnClick代碼:
procedure TForm1.PopUpMenuItemActiveClick(Sender: TObject);
var
Index : integer;
begin
Index := WidgetList.ItemIndex;
Widgets[Index].WidgetStatus := not Widgets[Index].WidgetStatus;
PopUpMenuItemActive.Checked:=not PopUpMenuItemActive.Checked;
end; 

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 黄冈市| 肇东市| 白山市| 大城县| 泰和县| 安阳县| 山东省| 信宜市| 浦县| 宣城市| 黄骅市| 辛集市| 景宁| 安远县| 文安县| 新泰市| 竹山县| 故城县| 石泉县| 兴仁县| 东港市| 龙南县| 梁山县| 平昌县| 乌拉特前旗| 绥化市| 金坛市| 中山市| 皋兰县| 东乌珠穆沁旗| 台东市| 台州市| 崇阳县| 江都市| 任丘市| 太保市| 万源市| 惠东县| 遵化市| 岐山县| 高唐县|