首页 > 解决方案 > 如何以 ncurses 的形式移动字段

问题描述

我使用 ncurses 和特殊形式用 C 语言编写了一个程序。我需要在填写表格时移动表格的特定字段。我尝试了 move_field,但它不起作用。这是我写它的方式:

if (typact==ADSD && rowc>rowg )
    { 
      move_field(field[ietg],rowg=rowc,colg); 
      refresh();
    }

我确定move_field已执行(我使用xCode来调试我的程序)。我认为刷新是不够的。我也尝试像这样move_field放置:unpost_formpost_form

if (typact==ADSD && rowc>rowg /* && !field_status(field[ietg]) */ )
    { unpost_form(my_form);
      move_field(field[ietg],rowg=rowc,colg); 
      post_form(my_form); refresh();
    }

但它不再起作用了。表格被删除并重新发布,没有我写的文字,并且该字段始终在同一个地方。

我怎么能用move_field

标签: formsfieldmovencurses

解决方案


手册

该函数move_field将给定字段(必须断开)移动到屏幕上的指定位置。

您可以通过检索当前字段列表(及其长度使用)断开字段,从该列表中删除该字段并使用更新列表。 form_fieldsfield_countset_form_fields

使用 时move_field,您还必须(暂时)使用 取消发布表单unpost_form。否则,move_field返回E_POSTED表单已发布)。移动字段后,使用post_form让表单驱动程序使用更新的表单。

ncurses 源文件中的test/move_field.c文件提供了这些调用的示例。


推荐阅读