拉撒路按钮切换机制

问题描述

我在拉撒路(Lazarus)中编写了一个小工具,将其用作我的某些游戏的启动器,所有这些都是通过cmd脚本完成的,这些脚本与按钮的按下链接在一起。

现在我正在寻找对我的工具的两种修改,但是由于我在编程方面不是很有才华,我希望有人可以帮助我。

我要寻找的第一件事是将TButton标题分成两行。我试图通过GUI进行操作,但没有找到解决方案。

我想做的第二件事是通过按下按钮来更改标题和按钮的功能。例如,Button1具有标题Enable Enhancements,该标题运行脚本enhancements_on.bat。按下按钮后,我希望它将标题更改为disable Enhancements,以便脚本enhancements_off.bat将在下次按下时运行。

这可能吗?如果是,您怎么做?

解决方法

我知道了。如果任何人需要这样的功能,请使用切换框和以下代码:

procedure TForm1.ToggleBox1Change(Sender: TObject);
begin
 if ToggleBox1.Checked then
  begin
   ToggleBox1.Caption:='Mods aktiviert.'
   ShellExecute(0,nil,PChar('cmd'),PChar('/c "start enhancements_on.bat"'),1)
  end
   else ToggleBox1.Caption:='Mods deaktiviert.';
   ShellExecute(0,PChar('/c "start enhancements_off.bat"'),1)
end; 
,

我要寻找的第一件事是将TButton标题分为两行。

只需在运行时设置Togglebox的标题,例如在窗体的OnCreate事件中,并使用LineEnding拆分行。

import subprocess

HOST = 3

command = [['ping','-c','4','192.168.1.8'],['ping','192.168.1.7']]
pings = [(args[HOST],subprocess.Popen(args)) for args in command]
while len(pings) > 0:
    end_pings = []
    for ping in pings:
        result = ping[1].poll()
        if result is not None:
            if result == 0:
                print(ping[0],": ","Alive")
            else: 
                print(ping[0],"Dead")
            end_pings.append(ping)
    for end_ping in end_pings:
        pings.remove(end_ping)

请注意,这仅适用于TTogglebox,不适用于TButton。