首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Pascal -在CMD中的两个“按钮”之间移动时“闪烁”

Pascal -在CMD中的两个“按钮”之间移动时“闪烁”
EN

Stack Overflow用户
提问于 2017-02-22 03:16:47
回答 1查看 39关注 0票数 0

今天我试着从我的学校作业开始,我从一些小图形开始,特别是菜单,其中有7个标题,你可以在其中2个之间移动,键向上键和键向下键。主要的问题是,当你快速移动时,你可以看到我称之为“闪烁”,因为它不够快,重画it.Here是this.How的主要思想,我能解决这个问题吗?我想要他们有的货。在免费的Pascal IDE..picture下载中

代码语言:javascript
代码运行次数:0
运行
复制
procedure nakresliHviezdy(str:string;surX,surY:byte;backgroundCol:byte);

var i,j:byte;
    sirkaRamcek,vyskaRamcek:byte;
    dlzkaSlova:byte;
begin
  TextBackground(backgroundCol);
  sirkaRamcek:=40;
  vyskaRamcek:=3;
  dlzkaSlova:=length(str);
  for i:=1 to sirkaRamcek do begin
    for j:=1 to vyskaRamcek do begin
      gotoxy(i+surX,j+surY);
      if ((i=sirkaRamcek) or (i=1) or (j=1) or (j=vyskaRamcek)) then write(' ');
      if ((j=2) and ((i<(sirkaRamcek-dlzkaSlova) DIV 2 +1)) or (i>(sirkaRamcek-dlzkaSlova) DIV 2  + dlzkaSlova)) then write(' ');
      if ((i=(sirkaRamcek-dlzkaSlova) DIV 2 +1) and (j=2)) then writeln(str) ;
    end;
  end;
end;

procedure menu;
var pocitadlo:integer;
    klavesa:char;
    farba1,farba2,farba3,farba4,farba5,farba6,farba7:byte;
    suradnicaX,suradnicaY:byte;
begin
  pocitadlo:=1;

  cursoroff;
  TextColor(yellow);
  suradnicaX:=40;
  suradnicaY:=1;
  nakresliHviezdy( '1.Vlozit vozidlo do evidencie STK',40,1,4);
  nakresliHviezdy( '2.Najst vozidlo v evidencii STK',40,5,1);
  nakresliHviezdy( '3.Opravit udaje o vozidle',40,9,1);
  nakresliHviezdy( '4.Vymazat vozidlo z evidencie',40,13,1);
  nakresliHviezdy( '5.Zoznam vsetkych vozidiel',40,17,1);
  nakresliHviezdy( '6.Zoznam nesposobilych vozidiel',40,21,1);
  nakresliHviezdy( '7.Koniec programu',40,25,1);
  while True do begin
  klavesa:=ReadKey;
  if klavesa=#72 then dec(pocitadlo);
  if klavesa=#80 then inc (pocitadlo);
  if (pocitadlo=0) then pocitadlo:=1;
  if (pocitadlo=8) then pocitadlo:=7;
  if ((klavesa=#13) and (pocitadlo=7)) then exit;


  case pocitadlo of
       1:begin nakresliHviezdy( '1.Vlozit vozidlo do evidencie STK',40,1,4);nakresliHviezdy( '2.Najst vozidlo v evidencii STK',40,5,1); end;
       2:begin nakresliHviezdy( '1.Vlozit vozidlo do evidencie STK',40,1,1);nakresliHviezdy( '2.Najst vozidlo v evidencii STK',40,5,4);  nakresliHviezdy( '3.Opravit udaje o vozidle',40,9,1); end;
       3:begin nakresliHviezdy( '2.Najst vozidlo v evidencii STK',40,5,1);nakresliHviezdy( '3.Opravit udaje o vozidle',40,9,4);nakresliHviezdy( '4.Vymazat vozidlo z evidencie',40,13,1); end;
       4:begin  nakresliHviezdy( '3.Opravit udaje o vozidle',40,9,1);nakresliHviezdy( '5.Zoznam vsetkych vozidiel',40,17,1); nakresliHviezdy( '4.Vymazat vozidlo z evidencie',40,13,4);  end;
       5:begin nakresliHviezdy( '4.Vymazat vozidlo z evidencie',40,13,1); nakresliHviezdy( '6.Zoznam nesposobilych vozidiel',40,21,1);nakresliHviezdy( '5.Zoznam vsetkych vozidiel',40,17,4);  end;
       6:begin  nakresliHviezdy( '5.Zoznam vsetkych vozidiel',40,17,1); nakresliHviezdy( '7.Koniec programu',40,25,1); nakresliHviezdy( '6.Zoznam nesposobilych vozidiel',40,21,4); end;
       7:begin nakresliHviezdy( '6.Zoznam nesposobilych vozidiel',40,21,1); nakresliHviezdy( '7.Koniec programu',40,25,4);    end;
  end;
  end;
end;`

Here you can see how my program looks like

Free Pascal IDE感谢你的建议。

EN

回答 1

Stack Overflow用户

发布于 2017-02-22 04:51:33

文本模式IDE使用Free Vision框架,该框架使用视频单元进行视频摘要。视频单元维护虚拟屏幕,并且仅将改变的部分写入屏幕。FV和视频单元都带有FPC。

首先看看Lister演示,在FPC演示中,它展示了如何直接使用单元视频。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42376042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档