菜单都跑一块去了。。
本帖最后由 冥界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:18 编辑
你每次创建一个ListBox的Item时候,也同时创建一个PopupMenu啊。
你的代码里就只创建了一个PopupMenu,当然都在一起了。
后面加判断根据选中的Item弹出不同的PopupMenu对象就好了。
menu:=TPopupMenu.Create(ListBox1);
ListBox1.Items.AddObject(item,menu);
menu.Items.Add(xxx);
懂这个意思吧 DEATHTOUCH 发表于 2024-1-30 22:14
你每次创建一个ListBox的Item时候,也同时创建一个PopupMenu啊。
你的代码里就只创建了一个PopupMenu,当 ...
@DEATHTOUCH
意思懂了,麻烦师傅下载源码修改下,谢谢。很小的文件{:301_974:} 本帖最后由 冥界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;
冥界3大法王 发表于 2024-1-30 22:20
@DEATHTOUCH
意思懂了,麻烦师傅下载源码修改下,谢谢。很小的文件
我现在没有Delphi的环境,不方便改呀。你这代码还都是中文变量,我这个FPC完全不支持。 那就不能跟 TForm7.FormCreate过不去了。
该弄到ListBox1双击事件里触发。 大佬,我想问一下 我看到你的那个魂斗罗的帖子有些问题想问问
页:
[1]