0

在 Delphi 中,我有一个 ComboBox,我想在选择第一个项目时打开一个 Web 链接,如果选择第二个项目,我想打开另一个。

目前,我正在使用:

ShellExecute(Handle,
           'open',
           'link',
           nil,
           nil,
           SW_SHOW);

我希望组合框中的内容类似于:打开游戏站点打开服务器站点然后选择的游戏站点打开 site1.com,然后服务器站点打开 site2.com

4

1 回答 1

3

假设组合框包含 URL,那么您只需执行以下操作:

ShellExecute(Handle, nil, PChar(ComboBox1.Text), nil, nil, SW_SHOW);

没有必要传递动词。传递 nil 并使用默认动词。事实上,有时您会遇到浏览器无法将动作注册到打开动词。

如果您已剥离组合中显示的链接文本的协议,则应将其添加回来:

ShellExecute(Handle, nil, PChar('http://'+ComboBox1.Text), nil, nil, SW_SHOW);

从评论来看,您真正想要的是 URL 和友好名称之间的一对一映射。将它们都放入记录中:

type
  TSiteInfo = record
    URL: string;
    FriendlyName: string;
  end;

然后创建它们的列表TList<TSiteInfo>,或动态数组,TArray<TSiteInfo>array of TSiteInfo。然后填充列表或数组。然后使用该结构用友好的名称填充您的组合框。单击按钮时,读取所选索引,ComboBox1.ItemIndex。最后,使用该索引查找 URL。

另一种选择是使用字典来关联 URL 和友好名称。就个人而言,我更喜欢列表TSiteInfo

于 2013-03-17T11:43:29.420 回答