吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1027|回复: 7
收起左侧

[求助] 菜单都跑一块去了。。

[复制链接]
冥界3大法王 发表于 2024-1-30 22:03
本帖最后由 冥界3大法王 于 2024-1-30 22:06 编辑

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


完整的源码在这:https://wwt.lanzouj.com/i3GOx1mrknsh

麻烦帮助我修改下





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(所有小节名[A]);     //============>依次加入到ListBox1
                                          //依次添加到PopupMenu1菜单项中去!
    所有键值名 := TStringList.Create;
    INI配置文件.ReadSection(所有小节名[A], 所有键值名);
    所有键值名.CommaText := 所有键值名.Text;
    for B := 0 to 所有键值名.Count - 1 do
    begin
//      ShowMessage(所有键值名[B]);
      mi := TMenuItem.Create(self);
      mi.Caption := 所有键值名[B];
      弹出菜单.Items.Add(mi);=================================>我感觉 这里还差个判断!!!!


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

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

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

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

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

[Delphi] 纯文本查看 复制代码
  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
意思懂了,麻烦师傅下载源码修改下,谢谢。很小的文件
 楼主| 冥界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[I] = True then //当ListBox1有选中项时,读取对应的小节中的键值对,到相应的菜单项里去就OK了。
    begin
      
    end;
  end;
  end;
DEATHTOUCH 发表于 2024-1-30 22:31
冥界3大法王 发表于 2024-1-30 22:20
@DEATHTOUCH
意思懂了,麻烦师傅下载源码修改下,谢谢。很小的文件

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

免费评分

参与人数 1吾爱币 +4 热心值 +1 收起 理由
冥界3大法王 + 4 + 1 高版本Delphi都是支持的。

查看全部评分

 楼主| 冥界3大法王 发表于 2024-1-30 22:32
那就不能跟 TForm7.FormCreate过不去了。
该弄到ListBox1双击事件里触发。
头像被屏蔽
o9981k 发表于 2024-1-30 22:51
提示: 作者被禁止或删除 内容自动屏蔽
a827212753 发表于 2024-1-31 20:16
大佬,我想问一下 我看到你的那个魂斗罗的帖子有些问题想问问
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 15:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表