1. ;;说明:dcl list_box 选中项上移
    2. ;;参数:*Lst:list_box
    3. ;;参数:n:选中项
    4. ;;返回:返回移动后的表
    5. (defun swapUp(*Lst n / A I L TEMP)
    6. (setq L nil)
    7. (setq i -1)
    8. (if (= n 0)
    9. (progn
    10. (setq *Lst (cons (car (reverse *Lst)) *Lst))
    11. (setq *Lst (swapUp *Lst (1+ n)))
    12. (reverse (cons (car *Lst) (reverse (cddr *Lst))))
    13. )
    14. (progn
    15. (while (setq a (car *Lst))
    16. (setq *Lst (cdr *Lst))
    17. (setq i (1+ i))
    18. (cond
    19. ((= (1- n) i) (setq temp a))
    20. ((= n i) (setq L (cons a L)) (setq L (cons temp L)))
    21. (T (setq L (cons a L)))
    22. )
    23. )
    24. (reverse L)
    25. )
    26. )
    27. )
    28. ;;说明:dcl list_box 选中项下移
    29. ;;参数:*Lst:list_box
    30. ;;参数:n:选中项
    31. ;;返回:返回移动后的表
    32. (defun swapDown(*Lst n / A I L TEMP)
    33. (setq L nil)
    34. (setq i -1)
    35. (if (= (1- (length *Lst)) n)
    36. (progn
    37. (setq *Lst (append *Lst (list (last *Lst))))
    38. (setq *Lst (cdr (reverse (swapDown *Lst n))))
    39. ;(setq *Lst (reverse (cdr (swapDown *Lst n))))
    40. (cons (car *Lst) (reverse (cdr *Lst)))
    41. )
    42. (progn
    43. (while (setq a (car *Lst))
    44. (setq *Lst (cdr *Lst))
    45. (setq i (1+ i))
    46. (cond
    47. ((= n i) (setq temp a))
    48. ((= (1+ n) i) (setq L (cons a L)) (setq L (cons temp L)))
    49. (T (setq L (cons a L)))
    50. )
    51. )
    52. (reverse L)
    53. )
    54. )
    55. )