冥界3大法王 发表于 2024-1-30 22:03

菜单都跑一块去了。。

本帖最后由 冥界3大法王 于 2024-1-30 22:06 编辑


如图所示: 该出现在第二个列表里边对应才对。。。感觉下面的代码中还需要再加个判断:有以下UTF8的
配置.ini
[截图软件]
HyperSnap=D:\HyperSnap8\HprSnap8.exe
FastStoneCapture=D:\FSCapture\FSCapture.exe
[汇编软件]
A1=D:\a1.exeB1=D:\a2.exe



完整的源码在这:https://wwt.lanzouj.com/i3GOx1mrknsh
麻烦帮助我修改下{:301_974:}




procedure TForm7.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle, True);          //第二个参数为False时,不启用文件拖放
INI配置文件 := TMemIniFile.Create('配置.ini', TEncoding.UTF8);
所有小节名 := TStringList.Create;
INI配置文件.ReadSections(所有小节名);
弹出菜单 := TPopupMenu.Create(self);
// ShowMessage(所有小节名.Text);
所有小节名.CommaText := 所有小节名.Text;
for A := 0 to 所有小节名.Count - 1 do
begin
    ListBox1.Items.Add(所有小节名);   //============>依次加入到ListBox1
                                          //依次添加到PopupMenu1菜单项中去!
    所有键值名 := TStringList.Create;
    INI配置文件.ReadSection(所有小节名, 所有键值名);
    所有键值名.CommaText := 所有键值名.Text;
    for B := 0 to 所有键值名.Count - 1 do
    begin
//      ShowMessage(所有键值名);
      mi := TMenuItem.Create(self);
      mi.Caption := 所有键值名;
      弹出菜单.Items.Add(mi);=================================>我感觉 这里还差个判断!!!!


      小节内容 := INI配置文件.ReadString(所有小节名, 所有键值名, 小节内容);
//      ShowMessage(小节内容);
      mi.OnClick := miClick;
      ListBox1.PopupMenu := 弹出菜单;
      最终键值名 := 所有键值名;
    end;
end;
INI配置文件.Free;
end;

DEATHTOUCH 发表于 2024-1-30 22:14

本帖最后由 DEATHTOUCH 于 2024-1-30 22:18 编辑

你每次创建一个ListBox的Item时候,也同时创建一个PopupMenu啊。
你的代码里就只创建了一个PopupMenu,当然都在一起了。

后面加判断根据选中的Item弹出不同的PopupMenu对象就好了。


menu:=TPopupMenu.Create(ListBox1);
ListBox1.Items.AddObject(item,menu);
menu.Items.Add(xxx);

懂这个意思吧

冥界3大法王 发表于 2024-1-30 22:20

DEATHTOUCH 发表于 2024-1-30 22:14
你每次创建一个ListBox的Item时候,也同时创建一个PopupMenu啊。
你的代码里就只创建了一个PopupMenu,当 ...

@DEATHTOUCH
意思懂了,麻烦师傅下载源码修改下,谢谢。很小的文件{:301_974:}

冥界3大法王 发表于 2024-1-30 22:29

本帖最后由 冥界3大法王 于 2024-1-30 22:56 编辑

弹出菜单.Items.Add(mi);   //▲▲▲从这加!!!
我开窍了:

//var
//I: Integer;

begin
mi.clear;                                             //做清空掉菜单
for I := 0 to ListBox1.Count - 1 do
begin
    if ListBox1.Selected = True then //当ListBox1有选中项时,读取对应的小节中的键值对,到相应的菜单项里去就OK了。
    begin
      
    end;
end;
end;

DEATHTOUCH 发表于 2024-1-30 22:31

冥界3大法王 发表于 2024-1-30 22:20
@DEATHTOUCH
意思懂了,麻烦师傅下载源码修改下,谢谢。很小的文件

我现在没有Delphi的环境,不方便改呀。你这代码还都是中文变量,我这个FPC完全不支持。

冥界3大法王 发表于 2024-1-30 22:32

那就不能跟 TForm7.FormCreate过不去了。
该弄到ListBox1双击事件里触发。

o9981k 发表于 2024-1-30 22:51

a827212753 发表于 2024-1-31 20:16

大佬,我想问一下 我看到你的那个魂斗罗的帖子有些问题想问问
页: [1]
查看完整版本: 菜单都跑一块去了。。