GUI 文本中的命令历史记录

Command history in a GUI text

我创建了一个小的 GUI,我可以从给定的图形中用几行代码启动它。这个 GUI 允许我从图中获取数据,操纵它们,并通过在文本框中键入命令来绘制回图(或另一个图),如下所示,就像在主命令 Window 中一样.

我想将相同的命令历史记录功能添加到主命令 Window 中可用的这个小框中,您可以在其中点击向上箭头并显示以前输入的命令。或者它可以是另一个按钮,也可以是一个显示所有以前输入的命令的 listdlg。

也许一个方案是,每次我在文本框中输入命令时按回车键或分号,它都会响应并存储当前在文本框中输入的内容?然后,如果我从最右边的弹出菜单中选择 "Previous Commands" 选项,它会生成一个 listdlg 并让用户选择命令?

我想我可以将命令存储在编辑器 GUI 的标签中并访问它们。我不知道的部分是让 Matlab 知道何时执行存储,如前所述(分号或回车)。

目前,我没有使用 GUIDE,只是一堆 uicontrols。

如何简单地将字符串保存到预定义大小的 char 数组中,然后每次用户按下 enter 时,将新字符串存储到 char 数组的新行中。如果您实际上想要 运行 该命令只访问与用户正在键入的行对应的字符数组的单元格?

编辑:

只要有个“;”并输入 edittext 将存储在 char 数组的单独行中,因此只需执行此操作即可将所有数据存储在 char 数组中:

function edittext_KeyPressFcn(hObject, eventdata, handles)

    key = get(gcf,'CurrentKey');
    if(strcmp(key,'return'))
        commands=get(handles.edittext,'String');
        lastline = commands(end,:) %gets the last written line for execution
    end
end


%put this in where you want the user to click a button and display the text on listofdata textview
set(handles.listofdata,'String',commands); 

让我知道这是否符合您的要求或说明您的要求