主题:QB编辑器样式的实现
xlong2
[专家分:0] 发布于 2005-12-06 17:01:00
请教老虾:
我想做到如QB编辑器里编辑框(上面)和立即框(下面)那样分开显示的效果,LOCATE应该做不到,有别的语句或者变通的方法吗?先谢了
回复列表 (共8个回复)
沙发
moz [专家分:37620] 发布于 2005-12-06 21:50:00
locate 做不到?为什么这样说?
COLOR 7, 1
CLS
COLOR 0, 7: PRINT " File Edit View Search Run Debug Calls Utility Options Help ";
COLOR 7, 1: PRINT CHR$(218); STRING$(33, 196); SPACE$(10); STRING$(31, 196); CHR$(180); CHR$(32); CHR$(195); CHR$(196); CHR$(191);
FOR i = 3 TO 24
LOCATE i, 1
PRINT CHR$(179);
NEXT
FOR i = 21 TO 24
LOCATE i, 80
PRINT CHR$(179);
NEXT
COLOR 1, 7: LOCATE 2, 35: PRINT " Untitled ";
LOCATE 2, 77: PRINT CHR$(24);
COLOR 0, 7
FOR i = 4 TO 20
LOCATE i, 80
PRINT CHR$(176);
NEXT
FOR i = 3 TO 78
LOCATE 21, i
PRINT CHR$(176);
NEXT
COLOR 0, 7
LOCATE 3, 80: PRINT CHR$(24);
LOCATE 20, 80: PRINT CHR$(25);
LOCATE 21, 2: PRINT CHR$(27);
LOCATE 21, 79: PRINT CHR$(26);
COLOR 7, 1
LOCATE 22, 1
PRINT CHR$(195); STRING$(34, 196); " Immediate "; STRING$(33, 196); CHR$(180);
COLOR 0, 3
LOCATE 25, 1
PRINT " <Shift+F1=Help> <F6=Window> <F2=Subs> <F5=Run> <F8=Step> ? N 00034:008";
板凳
QB71 [专家分:1300] 发布于 2005-12-06 23:58:00
Moz你这真的是做不到的
因为Locate....Print.....到24,25行是要滚动的
用下面过程代替Locate.....print.....
不论打印屏幕任何位置都不会产生滚动
参数说明:
x%,y% 坐标
Youstr$ 要打印的字符串
BFColor% 前景色
BKColor% 背景色
sub vPrint(x%,y%,YouStr$,BFColor%,BKColor%)
Bgn%=X%*160+Y%*2-162
CLR%=BKColor%*16+BFColor%
def seg=&hb800
for I%=1 to Len(youStr$)
poke bgn%+I%+I%,asc(Mid$(YouStr$,I%,1))
Poke Bgn%+I%+I%+1,CLR%
next
Def seg
end sub
3 楼
moz [专家分:37620] 发布于 2005-12-07 07:57:00
“因为Locate....Print.....到24,25行是要滚动的”
你怎么知道的?你试过吗?
4 楼
qb45 [专家分:2880] 发布于 2005-12-08 09:59:00
view screen
5 楼
moz [专家分:37620] 发布于 2005-12-08 11:08:00
那是那一句 press any key to continue 所造成的,
并不是滚屏所造成的。
在第25行里用print,
只要不超过第80列,
再在行末加上分号,
是不会造成滚屏的。
6 楼
jyf1987 [专家分:930] 发布于 2005-12-08 13:19:00
哈哈.操作文本缓存区
7 楼
xlong2 [专家分:0] 发布于 2005-12-09 16:07:00
6楼可以讲详细些吗?我讲的效果是比如在代码框里进行滚屏,而不影响立即框里的内容。
8 楼
moz [专家分:37620] 发布于 2005-12-09 17:56:00
view print
再不行就得你自己用程序去作限制处理了。
我来回复