主题:问:input怎么实现默认值
lqmking
[专家分:30] 发布于 2006-11-09 18:25:00
在Qbasic中,想让input输入参数时,有一个默认值出现,然后通过直接编辑这个默认值来完成输入,就像VB中inputbox的default参数一样,有没有办法实现呢?或者谁可以自定义一个函数来实现[em6]
回复列表 (共2个回复)
沙发
moz [专家分:37620] 发布于 2006-11-09 23:41:00
我有一个现成的,
但很复杂,
因为里面有很多我自己需要的自己定义的东西,
所以还是想办法给你一个简单一点的,
只要能代替QB的 input 就是了。
FUNCTION Inputs$ (n$)
y = POS(0)
pv = LEN(n$) + 1
IF y + pv > 80 THEN
PRINT
y = 1
END IF
x = CSRLIN
DO
LOCATE x, y, 0
PRINT n$;
IF Ins THEN LOCATE x, y + pv - 1, 1, 1, 7 ELSE LOCATE x, y + pv - 1, 1, 7, 7
DO: k$ = INKEY$: LOOP WHILE k$ = ""
SELECT CASE k$
CASE CHR$(13), CHR$(10), CHR$(13) + CHR$(10): EXIT DO
CASE CHR$(0) + CHR$(71): pv = 1
CASE CHR$(0) + CHR$(75): IF pv > 1 THEN pv = pv - 1
CASE CHR$(0) + CHR$(77): IF pv + y < 80 THEN pv = pv + 1
CASE CHR$(0) + CHR$(79): pv = LEN(n$) + 1
CASE CHR$(0) + CHR$(82): Ins = NOT Ins
CASE CHR$(0) + CHR$(83)
IF pv <= LEN(n$) THEN
LOCATE x, y, 0
PRINT SPACE$(LEN(n$));
MID$(n$, pv) = MID$(n$, pv + 1)
n$ = LEFT$(n$, LEN(n$) - 1)
END IF
CASE CHR$(8)
IF pv > 1 AND pv <= LEN(n$) + 1 THEN
LOCATE x, y, 0
PRINT SPACE$(LEN(n$));
MID$(n$, pv - 1) = MID$(n$, pv)
n$ = LEFT$(n$, LEN(n$) - 1)
pv = pv - 1
END IF
CASE IS > CHR$(31)
IF LEN(n$) + y < 81 THEN
IF pv > LEN(n$) THEN n$ = n$ + SPACE$(pv - LEN(n$))
IF Ins THEN
MID$(n$, pv) = k$
ELSE
n$ = n$ + k$
MID$(n$, pv) = k$ + MID$(n$, pv)
END IF
pv = pv + LEN(k$)
END IF
CASE ELSE
END SELECT
IF pv < 1 THEN pv = 1
IF pv + y > 81 THEN pv = 81 - y
LOOP
Inputs$ = n$
LOCATE , , 0
END FUNCTION
板凳
lqmking [专家分:30] 发布于 2006-11-10 09:33:00
非常感谢,这个方法真是好啊[em1]
我来回复