回 帖 发 新 帖 刷新版面

主题:问:input怎么实现默认值

在Qbasic中,想让input输入参数时,有一个默认值出现,然后通过直接编辑这个默认值来完成输入,就像VB中inputbox的default参数一样,有没有办法实现呢?或者谁可以自定义一个函数来实现[em6]

回复列表 (共2个回复)

沙发

我有一个现成的,
但很复杂,
因为里面有很多我自己需要的自己定义的东西,
所以还是想办法给你一个简单一点的,
只要能代替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

板凳

非常感谢,这个方法真是好啊[em1]

我来回复

您尚未登录,请登录后再回复。点此登录或注册